Case study

Super Mario Sunshine: an in-progress matching GameCube decompilation

Reconstructs Super Mario Sunshine’s C++ source so that the original Metrowerks compiler reproduces byte-identical object files for four GameCube releases and the Switch 3D All-Stars build. The target binary comes from the user’s own disc image, and objdiff compares rebuilt objects function by function. The work is incomplete, and the repository publishes contribution rules for AI agents alongside its human workflow.

Requirements and limitations

  • The README calls this a work-in-progress decompilation. configure.py defaults to GMSJ01 (JPN Rev 0) and also targets GMSP01, GMSE01, GMSJ01 Rev 1 and the GMSP01_NX build from Super Mario 3D All-Stars. Only objects marked Matching are linked by default; --non-matching links equivalent or modded objects. For GMSJ01 at the reviewed commit, decomp.dev reported 49.51% of code decompiled and 18.42% fully linked; this collection did not recompute those figures.
  • Copy your own disc image for each version into orig/<version>. ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ and TGC images are accepted, and the repository says it contains no game assets or assembly. The GMSJ01 symbol configuration is generated from the mario.MAP linker map found on that disc; the CI workflow notes that GMSE01 has no MAP file and skips symbol-order checks for it.
  • Builds need Python and Ninja on Windows, macOS or Linux; the build fetches decomp-toolkit, binutils and retro Metrowerks compilers (GC 1.2.5 for most code), and runs them through the wibo wrapper on macOS and Linux. objdiff compares rebuilt objects with those extracted from the original DOL, and each version’s build.sha1 records the target DOL hash.
  • AGENTS.md requires ninja baseline and changes_all regression reports for all five versions, each still reporting its DOL as OK. CI builds every version in a build container that supplies the original files and checks symbol order for changed units. These are project-reported checks and progress figures, not evidence of a complete or playable rebuilt game; no build was run here.
  • AGENTS.md, symlinked as CLAUDE.md and GEMINI.md, sets workflows for AI agents. It bars unsupervised agents from MSL, MetroTRK, THPPlayer, Dolphin SDK and JSystem code and defers hard judgment calls to humans, but it does not quantify agent-written code. The repository declares CC0-1.0; Nintendo’s game, disc contents and the downloaded compilers keep separate rights. No REA use is established.

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

  1. README.md GitHub · doldecomp/sms · Revision b2350a1
  2. AGENTS.md GitHub · doldecomp/sms · Revision b2350a1
  3. configure.py GitHub · doldecomp/sms · Revision b2350a1
  4. config/GMSJ01/config.yml GitHub · doldecomp/sms · Revision b2350a1
  5. config/GMSJ01/build.sha1 GitHub · doldecomp/sms · Revision b2350a1
  6. .github/workflows/build.yml GitHub · doldecomp/sms · Revision b2350a1
  7. docs/AGENT_MATCHING_TIPS.md GitHub · doldecomp/sms · Revision b2350a1
  8. LICENSE GitHub · doldecomp/sms · Revision b2350a1
  9. https://decomp.dev/doldecomp/sms