Case study
Sonic Advance 1 & 2: a matching GBA decompilation with widescreen ports
Reconstructs Sonic Advance and Sonic Advance 2 for the Game Boy Advance as C that rebuilds six hash-listed ROMs with SAT-R’s agbcc fork, and compiles the same code into widescreen SDL ports for Linux, macOS and Windows plus PSP and PS2 builds. README reports Sonic Advance 2 built entirely from C with about 60 functions still non-matching. Extracted graphics, music and data are committed, so the builds read no original ROM.
Requirements & limits
- README marks the project unfinished and under active development. It lists six ROM targets with SHA-1 values: Sonic Advance (Europe) and Sonic Advance 2 (USA, Europe, Japan, Japanese Virtual Console and a 2002-10-25 USA beta). README reports that SA2 builds 100% from C with about 60 non-matching functions pulled in from asm/non_matching, which at the reviewed commit holds 64 SA2, 99 SA1, 17 shared and 8 engine files, and that over 600 SA2 functions are unnamed. The Tiny Chao Garden and Collect Rings multiboot sub-games are built for matching and only partly decompiled.
- The documented builds read no original ROM. The tree commits over 12,000 PNG sprite frames and tiles, 474 MIDI songs, tilemaps and other raw data, including a 191 KB data file included piecewise into the Tiny Chao Garden multiboot ROM. Port CI jobs still download a base ROM from private storage, which the Makefile does not reference.
- INSTALL.md targets Linux (with WSL for Windows users) and macOS: ARM GCC and binutils, libpng, SDL2 and MinGW-w64, plus mkisofs or cdrtools for PS2. Matching GBA builds need SAT-R’s agbcc fork built and installed into the tree. Ports build with make sdl (Linux/macOS), sdl_win32 (Windows), sdl_psp (PSPDEV) and ps2 (PS2DEV) at a 426×240 widescreen resolution; README marks the Win32 OpenGL target not functional, and no GitHub release is published.
- On the GBA platform, make runs a SHA-1 check of the built ROM against its listed hash. CI checks formatting, then builds and hash-checks SA2 USA, SA1 Europe and the four other SA2 variants; it also builds SDL, Win32, PSP and PS2 port targets for both games on Ubuntu and macOS, and replays a committed any% speedrun input recording through a headless SDL build. Matching applies to the GBA ROMs, not to the widescreen ports, and this collection built nothing.
- The repository has no license file and GitHub detects none. The extracted graphics, music and data, and the Nintendo SDK libraries rebuilt in libagbsyscall, m4a and agb_flash, keep their rights holders’ terms. README sets a strict no-LLM/no-AI policy for issues and pull requests; 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 · SAT-R/sa2 · Revision 393357f
- INSTALL.md GitHub · SAT-R/sa2 · Revision 393357f
- Makefile GitHub · SAT-R/sa2 · Revision 393357f
- config.mk GitHub · SAT-R/sa2 · Revision 393357f
- sa2.sha1 GitHub · SAT-R/sa2 · Revision 393357f
- sa1.sha1 GitHub · SAT-R/sa2 · Revision 393357f
- .github/workflows/build.yml GitHub · SAT-R/sa2 · Revision 393357f
- asm/non_matching GitHub · SAT-R/sa2 · Revision 393357f
- graphics GitHub · SAT-R/sa2 · Revision 393357f
- sound GitHub · SAT-R/sa2 · Revision 393357f
- chao_garden/data/data.s GitHub · SAT-R/sa2 · Revision 393357f
- src/data/sa2/recordings.c GitHub · SAT-R/sa2 · Revision 393357f
- libagbsyscall GitHub · SAT-R/sa2 · Revision 393357f
More in Games
- Paleblood: a functional decompilation of Bloodborne with its own runtime · Case study
- Pikmin 2: a fully matched GameCube decompilation across five releases · Case study
- Gran Turismo 4: an agent-assisted PS2 engine matching decompilation · Case study
- Mario Kart Wii: an in-progress matching decompilation of the PAL release · Case study
- Pinyon Shift: a ShiftGlue static recompilation of Forza Horizon for PC · Case study
- Touhou 7: reconstructing Perfect Cherry Blossom 1.00b source · Case study