Case study
Project Arwing: Star Fox recompiled from a matching disassembly
Disassembles Star Fox’s 65816 and SuperFX code from runtime coverage and recursive descent, reassembles it into the original ROM, then translates it statically to C on a from-scratch SNES runtime for Windows, macOS and Linux. Code never reached in recorded sessions, and RAM code that no longer matches the ROM, falls back to an interpreter; the README reports identical per-frame hashes for both paths. The generated C is a mechanical translation rather than hand-decompiled source, and results remain project-reported.
- Targets
- Game
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
Requirements & limits
- Prerequisites: Supply your own Star Fox (USA) (Rev 2) ROM matching the SHA-1 in README; other revisions and regions are untested. Graphics, models and music are extracted from it at build time. The source build expects a headerless image, while the installer strips a 512-byte copier header. No game data is included.
- Prerequisites: Releases target Windows x64, macOS 11+ (not notarized) and Linux x86_64/ARM64 AppImages. Source builds need Python (3.10+ on Windows) with Visual Studio 2022 Build Tools, Xcode command-line tools and SDL2, or gcc, SDL2, FreeType and DejaVu fonts; tools/build.py chains extraction, assembly, recompilation and compilation.
- Testing evidence: README reports a byte-identical ROM rebuild, 34,472 65816 and 14,577 SuperFX instructions, and 99.4% CPU / 100% SuperFX dispatches running recompiled over 20k gameplay frames. It lists the intro, title, training, Corneria and other levels reached by random play as playable. Labels are auto-generated, unreached code remains data run by the interpreter, and audio was checked only indirectly, not against hardware.
- Testing evidence: tools/build.py compares the reassembled ROM’s SHA-1 but only warns on a mismatch. The documented contributor check diffs --hashlog output from recompiled and --interp runs. CI assembles and recompiles without a ROM, zero-filling data.
- License: MIT covers tools/, src/, installer/, res/ and the build scripts; LICENSE excludes asm/, a disassembly of Nintendo's Star Fox code, and anything extracted from a ROM. This is an unofficial fan project unaffiliated with Nintendo.
About this entry
The description was reviewed against primary sources.
Primary sources
- README.md GitHub · carlosrmz009/arwing · Revision d8fe7aa
- LICENSE GitHub · carlosrmz009/arwing · Revision d8fe7aa
- tools/build.py GitHub · carlosrmz009/arwing · Revision d8fe7aa
- tools/recomp.py GitHub · carlosrmz009/arwing · Revision d8fe7aa
- .github/workflows/build.yml GitHub · carlosrmz009/arwing · Revision d8fe7aa
More in Games
- RaceWave46: an AI-assisted Wave Race 64 recompilation for Windows · Case study
- Saints Reborn: a ReXGlue static recompilation of Saints Row · Case study
- Savage Wind Recomp: statically recompiling The Legend of Zelda: Breath of the Wild · Case study
- SF2Recomp: statically recompiling Shadow Fight 2 for native platforms · Case study
- Sin & Punishment: a work-in-progress N64 static recompilation · Case study
- Skate 3 Recomp: a native Xbox 360 recompilation through ReXGlue · Case study