Skip to content

How the Port Works

Harrison edited this page Oct 2, 2026 · 2 revisions

How the Port Works

The translator (translator/, C#) reads the game's main.dol and turns every PowerPC function into C++ ahead of time. That C++ is compiled together with the runtime (runtime/), which stands in for the Wii: the SDK's OS, threads and timers, GX graphics (drawn through aurora on Direct3D 12, Vulkan or Metal), audio, Wii Remote and controller input, the disc and the NAND. No PowerPC code runs while you play.

  • projects/mscharged/: the project config (recomp.yml) and a function map generated from the mscharged-decomp symbols.
  • Native overrides: a runtime function marked PPC_NATIVE_OVERRIDE(address, ...) replaces the translated function at that address, and PPC_NATIVE_WRAP runs around it with the translated original still callable. The translator scans the runtime sources for these markers, so adding or removing one means translating again (tools/rebuild.sh).
  • runtime/src/hle/msc_game.cpp, runtime/src/mods/ and the MSC: comments across the runtime: the Strikers-specific parts, such as the emulated Wii Remote and Nunchuk, pointer handling, renderer details, the tweaks and the mod framework.

WiiCompiled's runtime was written against Mario Kart Wii's addresses. This fork re-keyed it to Strikers Charged by matching function names between the two games' symbol maps, with the SDK's global variables checked by hand.

Clone this wiki locally