Case study
Super Smash Bros. Brawl: an early matching Wii decompilation
A work-in-progress matching decompilation of Super Smash Bros. Brawl that targets the USA Rev 2 Wii release (RSBE01_02), splitting main.dol and 126 REL modules from a user-supplied disc image and checking the rebuilt binaries against stored SHA-1 values. objdiff compares objects during development, and six other regional revisions are listed but commented out of the supported set. decomp.dev reported 1.27% of code matched at the reviewed commit.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- README lists one supported version, RSBE01_02 (USA Rev 2), with the Japan, USA Rev 1, PAL and Korea revisions commented out; configure.py names all seven, but only RSBE01_02 has a configuration and CI builds only it. The output is a Wii main.dol and REL set, not a PC port.
- Copy your own disc image to orig/RSBE01_02; 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 DOL and RELs using committed per-module symbol and split tables, and extracts one embedded binary (HomeBtnIcon) from the DOL locally. Game headers come from the BrawlHeaders submodule (Sammi-Husky/BrawlHeaders), which README says to initialize before building.
- 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.7.5, objdiff v3.4.4, binutils 2.42-1, sjiswrap v1.2.2, wibo 1.0.0 and the 20250812 compiler bundle, compiling and linking with Metrowerks GC/3.0a5.2.
- Objects marked Matching (184 in configure.py; 20 remain NonMatching) are compiled from source and the rest come from the split originals; the default ninja target checks main.dol and the RELs against config/RSBE01_02/build.sha1 before reporting progress. CI builds RSBE01_02 in a container that supplies the disc files and compilers and uploads a progress report. decomp.dev’s report for the pinned commit lists 201,252 of 15,833,548 code bytes (1.27%) and 2,504 of 92,523 functions matched, with 516 of 4,415 units complete.
- The repository carries CC0-1.0; Nintendo’s game, disc contents and the downloaded compilers fall outside that dedication, and the BrawlHeaders submodule declares no license on GitHub.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · doldecomp/brawl · Revision b96b501
- configure.py GitHub · doldecomp/brawl · Revision b96b501
- config/RSBE01_02/config.yml GitHub · doldecomp/brawl · Revision b96b501
- config/RSBE01_02/build.sha1 GitHub · doldecomp/brawl · Revision b96b501
- tools/project.py GitHub · doldecomp/brawl · Revision b96b501
- .gitmodules GitHub · doldecomp/brawl · Revision b96b501
- .github/workflows/build.yml GitHub · doldecomp/brawl · Revision b96b501
- LICENSE GitHub · doldecomp/brawl · Revision b96b501
- https://github.com/Sammi-Husky/BrawlHeaders/tree/29c4ff16ce06241ea672ffd54e6415fbd02c0743
- https://decomp.dev/doldecomp/brawl
More in Games
- Super Smash Bros. Melee: a matching GameCube decompilation with a shiftable build · Case study
- 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