About
This is an annotated, byte-for-byte disassembly of the US NES ROM for Contra, with build scripts (cc65-based) that reassemble it into a matching ROM, plus extensive supplemental documentation on enemy AI, graphics, sound, and ROM layout. It also supports building Probotector, the PAL-region variant of the same game, documented as mostly identical apart from different sprites.
Getting started
Building requires the player's own Contra (US) NES ROM (its MD5 hash is given in the readme for verification) placed in the project root, plus the cc65 compiler suite; running the platform-appropriate build script (PowerShell, batch, or bash) reassembles it into a working, byte-matching ROM.
History
The project began after the author watched a video on Contra speedrunning history that highlighted an unexplained bug where a player who died mid-level-1 was advanced straight to level 2; the disassembly builds on an earlier IDA Pro disassembly by 'Trax' from his Revenge of the Red Falcon project, with branch and jump offsets subsequently converted to labeled references and every line documented.
Additional notes
- Documentation
- The disassembly uses inline annotations to flag interesting code — e.g. `!(BUG?)` for possible bugs, `!(UNUSED)` for dead code, and `!(WHY?)` for unexplained logic.