Star on GitHubStar1.1k stars

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.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.MD GitHub · projectPiki/pikmin2 · Revision ffbd853
  2. configure.py GitHub · projectPiki/pikmin2 · Revision ffbd853
  3. config/GPVE01/config.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
  4. config/GPVE01/build.sha1 GitHub · projectPiki/pikmin2 · Revision ffbd853
  5. config/GPVJ01/config.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
  6. tools/project.py GitHub · projectPiki/pikmin2 · Revision ffbd853
  7. .github/workflows/build.yml GitHub · projectPiki/pikmin2 · Revision ffbd853
  8. LICENSE.MD GitHub · projectPiki/pikmin2 · Revision ffbd853
  9. https://decomp.dev/projectPiki/pikmin2

More in Games

All 318 entries in GamesGames case studies (239)

↑↓ move↵ open⌘↵ new tab