Cha-Cha

Cha-Cha is a native PC port of Monster Hunter 3 Ultimate for Windows and Linux that runs on Vulkan.

README

Cha-Cha

Cha-Cha

Monster Hunter 3 Ultimate, running natively on PC.
A static recompilation of the Wii U game for Windows and Linux.

Latest release Windows and Linux Vulkan GPL-3.0

Install · Getting started · What's new · DLC quests · Mods · Texture packs · What's next · Building


Cha-Cha translates the game's PowerPC code into C++ ahead of time and compiles it for your PC. It runs on our own reimplementation of the Wii U system libraries it uses, with graphics on Vulkan and input and audio on SDL3. It is not an emulator, and there is no emulator code in it.

Important

No game files are included. You need your own copy of Monster Hunter 3 Ultimate (US) with update v32. Cha-Cha is a fan project, not affiliated with or endorsed by Capcom or Nintendo.

How to install

You need your own Monster Hunter 3 Ultimate (US) with update v32 (a .wua file, or the game and update folders).

Windows

  1. Download Cha-Cha-<version>-windows-x64.zip from Releases.
  2. Extract it to a folder you can write to (not Program Files).
  3. Run Cha-Cha.exe and choose your game on the setup screen.

Linux / Steam Deck

  1. Download Cha-Cha-<version>-x86_64.AppImage from Releases.
  2. Make it executable: chmod +x Cha-Cha-*.AppImage (or Properties → Allow executing as program).
  3. Run it and choose your game on the setup screen.

The first start translates the game's shaders (a few seconds, once), then the game starts by itself. F1 or Select + Options on a controller opens the settings: General, Video, Input, Mods and Quests tabs (LB / RB or Q / E switch), Quit game in General; F2 opens Mods directly. Damage Numbers comes included: switch it on or off in MODS → Mods.

Adding mods: put each mod's folder into the mods folder of your data folder (data\mods next to Cha-Cha.exe on Windows, ~/.local/share/Cha-Cha/mods on Linux) and restart Cha-Cha.

What's new compared to the original

These are part of the game. Monster HP scaling can be switched off in Settings → General.

Item Sets
Loadouts as in MH Generations Ultimate, inside the game's own item box menu (the house box and the small boxes such as the Port Tanzia dock).
  • Register Item Set saves your pouch, Load Item Set refills it.
  • 5 sets each for Blademaster and Gunner.
  • Loading takes only what your pouch and box really hold, and tells you what was missing.
  • The game's pouch window previews the result while you choose; left / right turn its pages.
Monster HP scaling
Port Tanzia quests are balanced for four hunters. Hunting there with fewer, monsters now have:
HuntersHP
165%
280%
390%
4100%
At every rank: Low, High and G. Moga Village quests are unchanged. Settings → General → Monster HP scaling switches it off (the game's own HP).
Hold to gather
Hold the gather button on a carcass, a gathering spot or a mining point and you keep going until the spot is used up. No more tapping through every carve.
DLC quests again
The event and challenge quests, once free downloads from a server that is long gone, install from files. See below.
Made for PC
  • Your resolution and frame rate: internal resolution from 0.5× to 4× (up to 5120×2880), a frame rate limit up to unlimited, V-sync, windowed / borderless / fullscreen, smooth or sharp scaling to the window.
  • Tri look: the softer, muted, hazier picture of Monster Hunter Tri on the Wii, applied to the world only (menus and the HUD stay as they are).
  • Effects the original never had: global illumination, ambient occlusion, an enhanced depth of field and a vignette, each optional. The game's own bloom and depth of field can be switched off.
  • Texture packs and texture dumping for making them.
  • Skippable cutscenes: press + (Start / Options, or the keyboard key bound to +) to skip a cutscene movie.
  • Straight into the game: no launcher menu to click through (--menu shows it). F1, Select + Options (or the PlayStation touchpad / Home button) opens the settings over the game, with Quit game in General; F2 the mods, F3 cycles the GamePad screen (hidden, picture-in-picture, GamePad only), F11 switches between fullscreen and a window and frees the mouse.
  • Controls your way: keyboard and mouse, or any controller SDL supports, played as a Wii U Pro Controller. Every button can be rebound, and the settings show which button does what, for your bindings and your controller (Xbox, PlayStation or Nintendo names).
  • Menus you can point at: in the game's menus the mouse becomes a pointer; the option under it is selected and a click picks it - the start and pause menus, item box, shops, Smithy, Quest Counter, Canteen, house, Farm, Ferry, Supply Box and their prompts.
  • A PC keyboard for names and chat instead of the Wii U software keyboard.

Getting started

WindowsLinux
DownloadCha-Cha-<version>-windows-x64.zip from ReleasesCha-Cha-<version>-x86_64.AppImage, or the folder Cha-Cha-<version>-linux-x86_64.tar.gz, from Releases
NeedsWindows 10 / 11 x64x86-64 with glibc 2.35 or newer (Ubuntu 22.04, Fedora 36, Steam Deck…)
Graphicsa Vulkan 1.2 drivera Vulkan 1.2 driver (Mesa or your GPU vendor's)
Runextract the zip anywhere you can write to, run Cha-Cha.exechmod +x Cha-Cha-*.AppImage, then run it; or extract the folder and run ./Cha-Cha
  1. Start Cha-Cha. On the first start a setup screen asks for your game.
  2. Point it at your dump: a .wua archive, or the game and update folders (code, content, meta). Cha-Cha checks that it is the US v32 executable and reads the files where they are; nothing is copied.
  3. Wait a few seconds while the game's shaders are translated for your PC. This happens once.

Your data folder keeps settings, saves, caches, quests and texture packs:

Data folder
Windows%APPDATA%\Cha-Cha
Linux~/.local/share/Cha-Cha (or $XDG_DATA_HOME/Cha-Cha)
Portabledata/ next to the program, when a file named portable.txt sits beside it (the Windows zip ships with one)
Folderthe program's own folder, when Cha-Cha.ini sits beside it (the Linux folder release ships with one)

Saves live in <data folder>/save. To skip the setup screen, start it with --install <path to your dump>.

The folder release

Everything in one folder, like other recomps: unpack it anywhere you can write to.

Cha-Cha-<version>/
├── Cha-Cha                 the program
├── Cha-Cha.ini             settings (makes this folder Cha-Cha's data folder)
├── game/                   your dump: the game and update folders, or a .wua (found by itself)
├── mods/                   mods, one folder each (Damage Numbers, True Attack, Key Quests included)
│   └── damage-numbers/
├── licenses/               Cha-Cha's GPL-3.0 and the bundled libraries' licences
├── README.txt
│   made on the first start:
├── cache/                  translated shaders and pipelines
├── save/                   your saves
├── quests/                 event and challenge quests
├── texture_replacements/   texture packs
└── log.txt                 the log (when not started from a terminal)

It needs FFmpeg's libavcodec from your distribution (for the movies). On another distribution than it was built on, use the AppImage.

Default controls
Wii U Pro ControllerKeyboard and mouseController
Left stick / right stickWASD / O K L ; (or the mouse: click in the window, Esc releases)sticks
A / B / X / YF, Return or right click / Space or Backspace / left click / Ethe face buttons by position, as on the Wii U
X + A togethermouse 4
L / R / ZL / ZRQ or Left Ctrl / Left Shift or mouse 5 / Z / CLB / RB / LT / RT
+ / −Tab / MBack / Start
D-padarrow keys, mouse wheeld-pad

Settings → Input switches the controller to the Xbox layout (A / Cross confirms) and rebinds anything. Camera speed there slows the camera down (30% to 100% of the game's own turn rate, for the stick, the camera keys and the mouse). Bindings and options are saved in <data folder>/input.ini (docs/input.md).

DLC: event and challenge quests

Capcom's download service for MH3U is gone. Cha-Cha installs the quests from files instead.

  1. Open MODS → Quests → Quest folder. That is <data folder>/quests.
  2. Put the quests in, each pack in a folder of its own:
    • Official DLC: the save files quest1, quest2, quest3 and quest4 from a Wii U save that has the downloaded quests, for example in quests/DLC MH3U/. Official packs install all their quests by themselves.
    • Custom quests: q_<number>.quest files, with an optional pack.json, cover.png, and a picture and description per quest. Custom packs let you pick quests one by one.
  3. The quests appear at the Port Tanzia Gathering Hall with the event and challenge quests.

Pack format and options: docs/mods.md. Quest files are game data, so Cha-Cha ships none.

Mods

Put mods in <data folder>/mods, one folder each. MODS → Mods (F2 in game) lists them, switches each on or off (from the next start) and shows their settings.

  • Content mods carry a content/ folder whose files replace or add to the game's own (same paths as the game's content folder). Nothing in your dump is changed.
  • Plugins (plugins/*.dll on Windows, plugins/*.so on Linux) are native code: they can hook game functions, draw over the game and add settings rows. The API is a single C header, include/chacha_plugin.h.

Included:

  • Damage Numbers (mods/damage-numbers): the damage of every hit over the monster, in the Wilds, Rise or Classic style.
  • True Attack (mods/true-attack, optional, starts off): menus show weapons' true attack instead of the bloated number (Iron Hammer 70 instead of 364). Damage is not changed.
  • Key Quests (mods/key-quests, optional, starts off): a gold key icon, "2 OF 5" and URGENT tags on the Quest Counter's list, for the quests that unlock the next urgent quest.

Switch mods on or off in MODS → Mods (F2 in game). Making mods: docs/modding.md.

Texture packs and texture dumping

Using a pack: put the DDS files in <data folder>/texture_replacements (subfolders are fine) and turn on Settings → Video → Texture packs. It switches on and off while you play.

Making a pack:

  1. Turn on Settings → Video → Dump textures. Every texture the game draws from then on is saved to <data folder>/texture_dump as a DDS file, already named for replacement: tex_<width>x<height>_<CRC32>.dds. A note in the corner shows the folder and how many have been saved. Dumping lasts until you quit.
  2. Edit the ones you want. Keep the name (you may add text after the CRC), include mipmaps, and copy them into texture_replacements.

Packs made for the 3DS version don't match the Wii U textures and won't load. Details: docs/texture-packs.md.

What's next

  • Local network play: hunt together with players on the same network.
  • Online play: Cha-Cha's own lobby server in place of Nintendo's retired service (docs/online.md), with HP scaling then using the real number of hunters.
  • Quest maker: build your own quests in the game and share them with a code: copy it, send it, and anyone who pastes it gets the same quest.

Building from source

The build translates your own dump's executable into C++, so put a dump in place first.

  1. Put your dump at game/mh3u.wua (game/README.md), then run powershell -File scripts/extract.ps1 and powershell -File scripts/fingerprint.ps1.

  2. Windows: Visual Studio 2026 with "Desktop development with C++" and the Vulkan SDK (tools/README.md):

    cmake -S . -B build/cmake
    cmake --build build/cmake --config Release
    ctest --test-dir build/cmake -C Release --output-on-failure
    

    A clang-cl build (cmake -S . -B build/clang -T ClangCL) compiles the generated code faster. scripts/package-release.ps1 makes the release zip.

  3. Linux (or WSL2 on Windows): clang 15+, Ninja, CMake 3.25+, the LunarG Vulkan SDK, libvulkan-dev, libavcodec-dev and SDL3's build dependencies. scripts/build-linux.sh builds it, scripts/package-appimage.sh makes the AppImage (docs/linux.md).

    On a Linux desktop with the distribution's SDL3 (Fedora: SDL3-devel, libshaderc-devel, vulkan-loader-devel, libavcodec-free-devel), configure with -DMH3U_SYSTEM_SDL3=ON. An SDL3 built from source without the PipeWire / PulseAudio / ALSA headers has no sound:

    cmake -S . -B ~/cha-cha-build -G Ninja -DCMAKE_BUILD_TYPE=Release -DMH3U_SYSTEM_SDL3=ON \
          -DMH3U_RECOMP_OUT=$HOME/cha-cha-build/recomp-out
    cmake --build ~/cha-cha-build --target mh3u damage_numbers
    scripts/package-folder.sh ~/cha-cha-build <version>      # the folder release, in build/release/
    

Inside the checkout Cha-Cha finds extracted/ by itself and uses the checkout as its data folder (all of it gitignored). The release packages never contain game files, but the program itself contains the recompiled game code, translated from your executable at build time.

Repository layout
PathWhat lives thereIn git?
game/, extracted/Your dump, and its unpacked contentsno
config/Target hashes, symbol map, function list, known structuresyes
recomp/The recompiler; recomp/out/ is the generated C++source only
runtime/The PC layer replacing the Wii U system: os, gfx (GX2 on Vulkan), audio, input, fs, bootyes
src/Hand-written game code: item sets, hold to gather, HP scaling…yes
include/chacha_plugin.h, the plugin API for modsyes
mods/Mods built with the tree: Damage Numbersyes
tools/, scripts/, ghidra/Shader translator, helper scripts, reverse-engineering scriptsyes
docs/Roadmap, research log, formats, mods, modding, input, Linux, online notesyes
build/Build outputno

How the port works and what was learned: docs/runtime.md, docs/engine.md, docs/research-log.md.

Credits

  • Dusklight: the Twilight Princess PC port whose front end (launcher, title screen, settings window) Cha-Cha's front end follows.
  • Yakumo: the asset-free release model Cha-Cha follows: a release build plus your own dump, nothing from the game shipped.
  • Ghidra, for reverse engineering.
  • Libraries: SDL3, Dear ImGui, zstd, the Vulkan SDK (shaderc, glslang, SPIRV-Tools), FFmpeg's libavcodec on Linux (docs/release/THIRD_PARTY_NOTICES.md).

Monster Hunter is a trademark of Capcom. Wii U is a trademark of Nintendo.

License

Cha-Cha is free software under the GNU General Public License v3.0 (LICENSE): you may use, study, change and share it, and if you share a changed version you share its source under the same licence. Third-party libraries keep their own licences. The licence covers Cha-Cha's own code only, not the game: Monster Hunter 3 Ultimate and everything translated from it remain Capcom's.