Case study
Paper Mario: The Thousand-Year Door: an early matching GameCube decompilation
A work-in-progress matching decompilation of Paper Mario: The Thousand-Year Door that targets the Japanese Rev 0 GameCube release (G8MJ01), rebuilding MarioSt.dol and 31 REL modules with the original Metrowerks compilers and checking each against a stored SHA-1. The build splits these binaries from a user-supplied disc image, and objdiff compares objects during development. decomp.dev reported 12.10% of code matched at the reviewed commit.
Requirements & limits
- README lists one supported version, G8MJ01 (Rev 0, JP); configure.py defines no other version and CI builds only G8MJ01. README still carries template leftovers: its badges point at another project, its clone command names NWPlayer123/G8MJ01-dtk and one line calls G8MJ01 the USA version. The output is a GameCube DOL and REL set, not a PC port.
- Copy your own G8MJ01 disc image to orig/G8MJ01; 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 main.dol and the RELs using committed symbol and split tables, and extracts the memory-card icon and banner textures from the DOL into local headers. Decompiled sources such as src/pmario_sound.c also carry game data tables reconstructed as C.
- 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.8.3, objdiff v3.7.1, binutils 2.42-2, sjiswrap v1.2.2, wibo 1.1.0 and the 20260305 compiler bundle, using Metrowerks GC/2.6 for game and REL code and GC/1.2.5n for the Dolphin SDK. tools/ttydasm is a Rust helper that decodes a named event script from the linked DOL or REL outputs in build/G8MJ01.
- Objects marked Matching (100 of 547 in configure.py) are compiled from source and the rest come from the split originals; the default ninja target checks the DOL and all RELs against config/G8MJ01/build.sha1 before reporting progress. CI builds G8MJ01 in a container that supplies the disc files and compilers and uploads a progress report. decomp.dev’s report for the pinned commit lists 457,800 of 3,784,980 code bytes (12.10%) and 2,029 of 9,770 functions matched, with 100 of 1,239 units complete; this collection ran no build.
- The repository carries the MIT License (copyright NWPlayer123), and libs/musyx has its own MIT license; neither covers Nintendo’s game, disc contents or the downloaded compilers. The reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · doldecomp/ttyd · Revision 62131fc
- configure.py GitHub · doldecomp/ttyd · Revision 62131fc
- config/G8MJ01/config.yml GitHub · doldecomp/ttyd · Revision 62131fc
- config/G8MJ01/build.sha1 GitHub · doldecomp/ttyd · Revision 62131fc
- tools/project.py GitHub · doldecomp/ttyd · Revision 62131fc
- src/pmario_sound.c GitHub · doldecomp/ttyd · Revision 62131fc
- tools/ttydasm/src/cli.rs GitHub · doldecomp/ttyd · Revision 62131fc
- .github/workflows/build.yml GitHub · doldecomp/ttyd · Revision 62131fc
- LICENSE GitHub · doldecomp/ttyd · Revision 62131fc
- https://decomp.dev/doldecomp/ttyd
More in Games
- 3SX: a native Street Fighter III: 3rd Strike port continuing the PS2 decompilation · Case study
- re4: a byte-identical decompilation of the Resident Evil 4 GameCube debug build · Case study
- Super Smash Bros. Brawl: an early matching Wii decompilation · Case study
- re-plants-vs-zombies: decompiling and modernizing Plants vs. Zombies GOTY · Case study
- Sonic Advance 1 & 2: a matching GBA decompilation with widescreen ports · Case study
- Paleblood: a functional decompilation of Bloodborne with its own runtime · Case study