LockerGnomeTech news and nostalgia for today's technology professionals
Subscribe

Search

Gaming

A Contra fan port checks 40,000 frames against the NES original

The C and WebAssembly port compares game state, pixels and sound, with stages one through four reported identical.

Chris Pirillo bends over a light table with a loupe, comparing two long film strips of tiny pixel soldiers frame by frame.
Illustration: LockerGnome

Contra’s jungle can look right while a shot, jump or enemy timer behaves differently. This fan port compares what happens behind the pixels as well as the pixels themselves.

The project README says its C core is checked against a Mesen 2 recording. Each frame compares RAM, graphics tables, palette, sprite data, graphics registers, sound state and the final image. Its stated result is “Stages 1–4 are identical” across the recording, including sound.

The translation starts with an annotated 6502 disassembly credited to vermiceli and earlier work by Trax. From there, the game became C, then WebAssembly. The repository also retains the assembly and documentation.

The browser player requires your own Contra US ROM. The maker says the ROM stays local, and no game data ships in the repository. Keyboard controls include arrows, A to fire and S or Space to jump. Two-player mode uses WebRTC lockstep.

Forty thousand matching frames describe that recording and those stages. They do not establish every possible input sequence or the later levels. This is the developer’s parity claim; this desk check did not rebuild or replay it.

Stages 5 onward and inputs outside that recording remain the interesting boundary. A familiar jungle is easier to trust when the project shows where its comparison stops.

More Gaming

Every Gaming story →