Case study
Super Smash Bros. Melee: a matching GameCube decompilation with a shiftable build
A matching decompilation of Super Smash Bros. Melee's US 1.02 release (GALE01) that rebuilds main.dol from C with the original Metrowerks compilers and checks it against the retail SHA-1. decomp.dev reports the code fully decompiled and linked at the reviewed commit, and the README says current work is mostly naming and cleanup. Because the build can be shifted, a separate non-matching mode lets modders add code to a DOL run with their own disc dump.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: Supply main.dol from your own GALE01 disc; the repository's orig/GALE01 folders hold only placeholders. The README's modding path needs the whole disc dumped to a folder, enables configure.py --non-matching with new objects marked Equivalent, and runs the rebuilt DOL in Dolphin. Such modified builds are not byte-identical to retail.
- Prerequisites: Host tools are Python and ninja on Windows (native tooling recommended), macOS (Game Porting Toolkit runs the Windows compilers) or Linux (WiBo on x86, Wine elsewhere). configure.py sets up decomp-toolkit, sjiswrap and the Metrowerks GC/1.2.5 and GC/1.1p1 compilers with the GC/1.3.2 linker; objdiff diffs objects and tools/decomp.py drafts functions with m2c. CI builds link, test and debug modes in a build container that provides the original files, plus a Nix matching build.
- Scope: README describes a matching decompilation that builds the US 1.02 main.dol (game ID GALE01) with SHA-1 08e0bf20134dfcb260699671004527b2d6bb1a45, the digest config/GALE01/build.sha1 checks. decomp.dev reports 100.00% decompiled and 100.00% fully linked for this commit, and README says most effort now goes to naming and cleanup. The output is a GameCube DOL, not a PC executable; the CMake library and DWARF packages CI also builds are not documented as a playable port.
- Testing evidence: Matching rests on the linked DOL's SHA-1 and objdiff's per-unit report; CI's check_complete.py warns when a unit matches fully but is not yet marked complete. The 100% figures are decomp.dev's report for this commit.
- License: No repository-wide licence file is present at the reviewed commit and GitHub detects none; bundled tools under tools/ carry their own licences, and the game, its DOL and assets keep their rights holders' terms. CONTRIBUTING.md says using AI to match functions is acceptable and frequently practiced, while asking contributors not to let AI name struct fields or global identifiers or attempt data-section matches.
About this entry
The description was reviewed against primary sources.
Primary sources
- .github/README.md GitHub · doldecomp/melee · Revision f0cdbb0
- config/GALE01/build.sha1 GitHub · doldecomp/melee · Revision f0cdbb0
- configure.py GitHub · doldecomp/melee · Revision f0cdbb0
- .github/CONTRIBUTING.md GitHub · doldecomp/melee · Revision f0cdbb0
- .github/workflows/build.yml GitHub · doldecomp/melee · Revision f0cdbb0
- .github/scripts/check_complete.py GitHub · doldecomp/melee · Revision f0cdbb0
- CMakeLists.txt GitHub · doldecomp/melee · Revision f0cdbb0
- https://decomp.dev/doldecomp/melee
- https://web.archive.org/web/20261020041847/https://decomp.dev/doldecomp/melee/GALE01/f0cdbb0a7046aea44c7177fd72abf33c3d2af4d4.json
More in Games
- Syphon Filter: The Omega Strain — matching PS2 executable decompilation · Case study
- TH04: rebuilding Lotus Land Story’s four PC-98 programs from source · Case study
- TH08: exact-source reconstruction and separately tested ports · Case study
- TH095: function-level reconstruction of Shoot the Bullet 1.02a · Case study
- The Minish Cap: a GBA decompilation targeting five ROMs · Case study
- The Sims: Bustin' Out: an AI-driven partial GBA matching decompilation · Case study