Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MECCHA CHAMELEON — Invert Mouse Y Axis

The game has no option to invert the vertical mouse axis. This repository contains small scripts that add one.

Nothing is overwritten and nothing is deleted: the mod is three extra files placed next to the game data. Removing them restores the original state.

Works on Windows and on Linux/Proton (tested on Bazzite).


Quick start

The scripts build the mod from your own copy of the game. No game files are distributed here — see Legal.

Windows

  1. Download this repository (green Code button → Download ZIP) and unpack it.
  2. Double-click windows\Install.bat.
  3. Start the game.

Linux

git clone https://github.com/cuinhellcat/Mouse-invert-Meccha-Chamelion.git
cd Mouse-invert-Meccha-Chamelion/linux
./install.sh

If the game is not in the default Steam folder:

MECCHA_GAME_DIR="/path/to/MECCHA CHAMELEON" ./install.sh

Requirements: curl, tar, python3. On the first run the scripts download retoc and verify its checksum.

Uninstall

windows\Uninstall.bat or linux/uninstall.sh. Or simply delete these three files from Chameleon/Content/Paks/:

pakchunk99-Windows_P.utoc
pakchunk99-Windows_P.ucas
pakchunk99-Windows_P.pak

After a game update

Steam removes the mod on updates and on Verify integrity of game files. Just run the install script again — it rebuilds from the current game files, so it keeps working across versions.


What does not work

Most advice found online suggests a Game.ini containing:

[/script/engine.playercontroller]
InputPitchScale=-2.5

This does nothing for this game, for two independent reasons:

  1. InputPitchScale is deprecated in UE5 and is not consulted at all when a game uses Enhanced Input — which this one does.
  2. A shipping build does not read its config from the game folder but from %LOCALAPPDATA%\Chameleon\Saved\Config\Windows\. Under Proton that is inside the compatdata prefix, not the game directory.

How it works

The game is Unreal Engine 5.6 with Enhanced Input. Mouse look is bound in

/Game/FirstPerson/Input/IMC_Default_FirstPerson

where the action IA_Look is mapped to Mouse2D with a single modifier, InputModifierNegate_5, which mirrors the Y axis. That asset lives inside the IoStore container (Chameleon-Windows.utoc / .ucas), not in the .pak.

The package uses unversioned property serialization, so property names are replaced by a bitmask. Unreal's FFragment packs into a uint16 as:

bits meaning
0–6 SkipNum
7 bHasAnyZeroes
8 bIsLast
9–15 ValueNum

The modifier serializes to five bytes, 80 02 81 03 03:

fragment decoded effect
0x0280 skip 0, 1 value bX
0x0381 skip 1 (skips bY), 1 value bZ
0x03 zero mask, both values are 0 bX=false, bZ=false

So bY is not serialized and keeps its default of true — that is the Y mirroring.

The patch changes SkipNum in the second fragment from 1 to 0, so bY is serialized instead of bZ:

80 02 81 03 03   ->   80 02 80 03 03
      ^^                    ^^

Result: bX=false, bY=false, bZ=true. bZ is irrelevant for 2D mouse input, and because the export keeps its exact size, no offsets or headers need fixing — which is what makes this safe to do with a one-byte edit.

The asset is then repacked into a small mod container that mounts with higher priority than the main one.


Legal

This repository contains no game files. The scripts extract the asset from your own installation, change one byte, and repack it locally. Redistributing the built container would mean redistributing copyrighted game content.


Caveats

  • The Windows scripts are untested — they were written on a Linux machine with no Windows available. The Linux path is confirmed working in-game. If you hit a problem on Windows, please open an issue.
  • The game has an online component (EOS). Modified game files are always some amount of risk there. Only a local input setting is touched here, but that is not a guarantee.
  • If a future update changes the input asset, the scripts will refuse to patch rather than corrupt anything, and will say so.

Credits

  • retoc by trumank — IoStore ↔ legacy asset conversion. Downloaded on first run, not bundled.

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages