A home for matching-decompilation projects: rebuilding a game's original C from the shipped binary, and proving it by compiling back to byte-identical code.
| project | target | progress |
|---|---|---|
| sm64ds-decomp | Super Mario 64 DS (ARM9/ARM7, CodeWarrior for NITRO) | ~98% of functions, ~91% of code bytes |
More welcome. Members can create repositories here directly, and there is no requirement that a project be finished, or even close to it.
GitHub has no built-in join button for organizations, so requests come in as issues:
- Request to join
- no decomp experience required
- List my project
- get an existing repo listed above without transferring it
Members can create repositories here directly, so once you are in you can host a project and keep working exactly as you do now. Keeping a project on your own account is equally fine; the listing option exists for that.
The compiler is the oracle. You write C, compile it with the same toolchain the original developers used, and compare the output to the ROM byte for byte. If it differs, the C is not yet right. That standard is what makes the result usable as real source rather than an approximation.
It also makes progress measurable, which is why these projects can report a percentage at all.
sm64ds-decomp carries a fairly complete matching pipeline that is not specific
to that game and is worth stealing from:
- an opcode-similarity scheduler that orders unmatched functions by how close an already-matched sibling is
- a link-verifier that reconstructs the linked bytes, catching wrong relocation destinations a plain byte compare wildcards away
- a near-miss database, so a close attempt is banked with its divergence count instead of thrown away
- decomp-permuter wired to the compiler, plus a documented catalogue of compiler-specific idioms for closing the last few instructions
The recommended way in is tangOS Console, a free desktop app built for this kind of work: it runs the matching toolchain, hands you a function to attempt, verifies your attempt against the ROM, and opens the pull request. You do not need to assemble a toolchain by hand to make your first match.
Get it at tangos.dev - or straight from the latest release (Windows installer; source and macOS builds are in the repo).
Working without it is entirely supported - every project here keeps its tooling in-repo and usable from a plain checkout. tangOS is the path with guardrails, not a requirement.
Pick any project above and read its CONTRIBUTING.md. Most keep a CLAIMS.md
so two people do not grind the same function at once.
You do not need to be a member of this organization to contribute. Fork, open a pull request, and it gets reviewed like any other.
Questions, claiming work, and general decomp talk happen in Tango's Decomp Jamboree on Discord. It is the fastest way to get unstuck, and a good place to ask whether a game is worth starting on before you sink a weekend into it.
For NDS work specifically, the wider DS Decompilation server is where the mwccarm toolchain and a lot of accumulated platform knowledge live.