Case study
Pikmin 2: a fully matched GameCube decompilation across five releases
A fan decompilation of Pikmin 2 that rebuilds main.dol for five GameCube releases (USA retail, two USA demos, PAL and Japan) with the original Metrowerks compilers, checking each against a stored SHA-1. The build reads main.dol from the user’s own copy of each release. decomp.dev reported all code matched and fully linked for every version at the reviewed commit, and a non-matching mode builds the US DOL entirely from C++ for modding.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- README still calls this a work-in-progress decompilation and lists five supported versions: GPVE01 (USA retail, the default), GPVE01_D17 and GPVE01_D18 (USA demos 17 and 18), GPVP01 (PAL) and GPVJ01 (Japan). Each has its own configuration and SHA-1 file, and CI builds all five. Outputs are GameCube DOLs, not a PC executable or port.
- Each version needs main.dol from the user’s own copy of that release at orig/<version>/sys/main.dol, and decomp-toolkit checks it against the hash in that version’s config.yml before splitting. The repository commits game-derived symbol and split tables for every version; config comments say the GPVE01 symbols were generated from a pikmin2UP.MAP linker map and the Japanese and PAL tables were recovered from those DOLs using the US symbols. No disc images or extracted game files are included.
- 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.1, binutils 2.42-1, sjiswrap v1.2.2, wibo 1.0.0-beta.5 and the 20250812 compiler bundle, using Metrowerks GC/2.6 for game, JSystem and runtime code and GC/1.2.5n for the Dolphin SDK libraries.
- configure.py marks 1,154 objects Matching for every supported version and one more for Japan only; none is NonMatching. The default ninja target checks the linked DOL against config/<version>/build.sha1 before reporting progress, and CI builds all five versions in a container that supplies the original files and compilers. decomp.dev’s reports for the pinned commit list 100.00% of code matched and fully linked for each version (24,957 functions and 1,153 units for GPVE01).
- With --non-matching, README says the final hash check is disabled and the US DOL builds completely from C++ source that is, to the team’s knowledge, functionally equivalent, so every file can be edited for modding. The repository carries CC0-1.0 in LICENSE.MD; Nintendo’s game, its files and the downloaded compilers fall outside that dedication.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.MD GitHub · projectPiki/pikmin2 · Revision ffbd853
- configure.py GitHub · projectPiki/pikmin2 · Revision ffbd853
- config/GPVE01/config.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
- config/GPVE01/build.sha1 GitHub · projectPiki/pikmin2 · Revision ffbd853
- config/GPVJ01/config.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
- tools/project.py GitHub · projectPiki/pikmin2 · Revision ffbd853
- .github/workflows/build.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
- LICENSE.MD GitHub · projectPiki/pikmin2 · Revision ffbd853
- https://decomp.dev/projectPiki/pikmin2
More in Games
- pokecrystal: a matching Pokémon Crystal disassembly · Case study
- pokered: a matching Pokémon Red and Blue disassembly · Case study
- pokeruby: a matching Pokémon Ruby and Sapphire decompilation · Case study
- Pokémon Emerald: a matching Game Boy Advance decompilation · Case study
- Pokémon FireRed and LeafGreen: a matching Game Boy Advance decompilation · Case study
- Pokémon HeartGold and SoulSilver: a work-in-progress, checksum-matched DS disassembly · Case study