nes-core

A 2,600-line emulator I wrote from the NESdev wiki without looking at any other emulator, graded once and never tuned against the corpus. The NES counterpart of GBA Eval's gba-core. Most of its replay loss turned out to be the same unstated first-frame convention the DeepSeek run fitted: with a one-line change it scores 0.9426 (details).

Candidatenes-core
Code2,600 lines of Rust, MIT
Sourcegithub.com/IlyaasK/nes-eval/tree/main/candidates/nes-core
Playrun it next to the reference in your browser

Score

CheckpointOverallProceduralReplayAudio
final0.58110.83000.45690.7050

Replays

The strip under each game is the per-frame penalty: empty means the frame matched the reference, a full-height mark means it scored zero.

Falling 0.2832

5,605 of 5,800 frames differ, the first at frame 2 · audio 0.5229

Thwaite 0.3101

5,839 of 6,000 frames differ, the first at frame 4 · audio 0.2962

Double Action Blaster Guys 0.0378

5,199 of 5,400 frames differ, the first at frame 2 · audio 0.6013

Minekart Madness 0.9974

292 of 5,400 frames differ, the first at frame 2 · audio 0.7974

Nova the Squirrel 0.9986

237 of 5,400 frames differ, the first at frame 16 · audio 0.8345

Concentration Room 0.1142

5,744 of 6,000 frames differ, the first at frame 2 · audio 0.1719

Procedural

Test ROMSubsystemScore
nestestcpu1.0000
instr-officialcpu1.0000
cpu-timingcpu1.0000
instr-misccpu1.0000
nmi-and-brkcpu1.0000
vbl-basicsppu1.0000
nmi-timingppu0.0000
sprite0-basicsppu1.0000
sprite0-timingppu1.0000
sprite-overflowppu1.0000
oam-readppu1.0000
apu-len-ctrapu1.0000
apu-irq-flagapu1.0000
apu-dmc-basicsapu1.0000
mmc3-clockingmapper0.0000
holy-mapperel-mmc1mapper0.0000
holy-mapperel-uxrommapper1.0000
holy-mapperel-cnrommapper1.0000
holy-mapperel-mmc3mapper0.0000
apu-mixer-squareapu1.0000
apu-mixer-triangleapu1.0000
apu-mixer-noiseapu1.0000
apu-mixer-dmcapu1.0000

Failed verdict screens

Reference on the left, this candidate on the right.

nmi-timing blargg ppu_vbl_nmi/05: NMI timing relative to VBL, to the PPU clock.

reference end screen
candidate end screen

mmc3-clocking blargg mmc3_test_2/1: MMC3 IRQ counter clocking.

reference end screen
candidate end screen

holy-mapperel-mmc1 Holy Mapperel MMC1 128K PRG / 8K CHR-RAM: banking and mirroring report.

reference end screen
candidate end screen

holy-mapperel-mmc3 Holy Mapperel MMC3 128K PRG / 8K CHR-RAM: banking and mirroring report.

reference end screen
candidate end screen