Case study
Mario Kart: Double Dash!!: a matching GameCube decompilation of the debug build
A work-in-progress 1:1 decompilation of Mario Kart: Double Dash!! that rebuilds the GameCube main.dol of the US debug build (MarioClub_us) from C and C++ with the original Metrowerks compilers, checking it against a stored SHA-1. The build splits the binary from a user-supplied disc image, and objdiff compares objects during development. decomp.dev reported 47.09% of code matched at the reviewed commit; a European retail target is configured but marked as not working yet.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- README calls this a WIP 1:1 decompilation and says only the debug version is supported: the default MarioClub_us (USA) target, whose main.dol SHA-1 config/MarioClub_us/build.sha1 records. configure.py also lists Release_eu, but its config.yml is marked as not working yet, and CI builds only MarioClub_us. The output is a GameCube DOL, not a PC executable or port.
- Copy your own disc image of that build to orig/MarioClub_us; ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ and TGC images are accepted. README says the repository contains no game assets or assembly: decomp-toolkit splits the user’s DOL using the committed symbol and split tables, and during the build extracts a font, system.arc and build-time data from that DOL locally.
- Builds need Python and ninja on Windows (native tooling recommended), macOS (with wine-crossover) or Linux (an automatically downloaded wibo on x86, Wine elsewhere). configure.py pins decomp-toolkit v1.6.2, objdiff v3.3.1, binutils 2.42-1, sjiswrap v1.2.1, wibo 0.7.0 and the 20250812 compiler bundle, using Metrowerks GC/2.6 for game, JSystem, MSL and TRK code and GC/1.2.5n for the Dolphin SDK libraries.
- Objects marked Matching (518 in configure.py; 277 remain NonMatching and 13 Equivalent) are compiled from source, the rest are taken from the split DOL, and the build checks main.dol against build.sha1. CI builds MarioClub_us in a container that supplies the disc files and compilers, uploads a progress report and validates symbol order for changed C++ files. decomp.dev’s report for the pinned commit lists 1,517,644 of 3,222,748 code bytes (47.09%) and 8,695 of 15,357 functions matched, with 518 of 807 units complete.
- The repository carries CC0-1.0; Nintendo’s game, disc contents and the downloaded compilers keep their own rights. README credits JSystem and SDK code reused from other decompilations, including Metroid Prime, Pikmin 2, Super Mario Galaxy, Super Mario Sunshine and Twilight Princess.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · doldecomp/mkdd · Revision 1d2918c
- configure.py GitHub · doldecomp/mkdd · Revision 1d2918c
- config/MarioClub_us/config.yml GitHub · doldecomp/mkdd · Revision 1d2918c
- config/MarioClub_us/build.sha1 GitHub · doldecomp/mkdd · Revision 1d2918c
- config/Release_eu/config.yml GitHub · doldecomp/mkdd · Revision 1d2918c
- .github/workflows/build.yml GitHub · doldecomp/mkdd · Revision 1d2918c
- LICENSE GitHub · doldecomp/mkdd · Revision 1d2918c
- https://decomp.dev/doldecomp/mkdd
More in Games
- Mario Party 4: matching GameCube decompilation of the USA releases · Case study
- MediEvil decompilation: an early checksum-gated PlayStation project · Case study
- Metroid Prime: the PrimeDecomp matching GameCube decompilation · Case study
- MinecraftLCE: an early-stage Minecraft: Nintendo Switch Edition decompilation · Case study
- Ocarina of Time: decompilation with MD5-checked ROM builds for 16 versions · Case study
- Paper Mario: matching Nintendo 64 decompilation for four releases · Case study