Case study
Pokémon Emerald: a matching Game Boy Advance decompilation
Reconstructs Pokémon Emerald for the Game Boy Advance as buildable C source, with game scripts and data kept as assembler directives. The default agbcc build produces pokeemerald.gba, and make compare checks it against the SHA-1 of the original English ROM; an optional modern-GCC build is not hash-checked. Graphics and audio sources are committed in the tree, so the documented build reads no base ROM.
Requirements and limitations
- README describes a decompilation of Pokémon Emerald that builds a single ROM, pokeemerald.gba; the Makefile sets game code BPEE, revision 0, and CI builds the English version. Most game code is C, while startup code, part of the m4a sound library and the GameCube multiboot library remain assembly files, and three multiboot programs (berry fix, Colosseum, e-Reader) are included as prebuilt .gba binaries. The output is a GBA ROM, not a native PC port.
- The documented build reads no original ROM: graphics, audio samples and map data are committed as PNG, WAV/AIF and JSON files and converted by bundled tools. rom.sha1 records the target English release as SHA-1 f3ae088181bf583e55daf962a92bb46f4f1d07b7, and README links that ROM’s No-Intro record.
- INSTALL.md covers Windows (WSL1 recommended; msys2 or Cygwin), macOS and Linux. On Debian/Ubuntu it lists build-essential, binutils-arm-none-eabi, git and libpng-dev; the matching build also needs pret/agbcc built and installed into the tree. make modern instead uses devkitARM’s arm-none-eabi-gcc and writes pokeemerald_modern.gba.
- make compare runs a SHA-1 check of the built ROM against rom.sha1 and reports pokeemerald.gba: OK on a match; the Makefile notes that comparison only makes sense for non-modern builds. CI builds with COMPARE=1 and also builds the modern target. These checks establish byte identity for this one release, not gameplay coverage; this collection did not build the ROM.
- The repository has no top-level license file and GitHub detects none; license files cover only some bundled tools, and agbcc’s GCC sources carry GPL v2. The original game’s code, graphics and audio remain subject to their rights holders. The reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · pret/pokeemerald · Revision 731ad5b
- INSTALL.md GitHub · pret/pokeemerald · Revision 731ad5b
- Makefile GitHub · pret/pokeemerald · Revision 731ad5b
- rom.sha1 GitHub · pret/pokeemerald · Revision 731ad5b
- .github/workflows/build.yml GitHub · pret/pokeemerald · Revision 731ad5b
- tools GitHub · pret/pokeemerald · Revision 731ad5b
- gcc/COPYING GitHub · pret/agbcc · Revision da598c1