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).
| Candidate | nes-core |
|---|---|
| Code | 2,600 lines of Rust, MIT |
| Source | github.com/IlyaasK/nes-eval/tree/main/candidates/nes-core |
| Play | run it next to the reference in your browser |
Score
| Checkpoint | Overall | Procedural | Replay | Audio |
|---|---|---|---|---|
| final | 0.5811 | 0.8300 | 0.4569 | 0.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 ROM | Subsystem | Score |
|---|---|---|
nestest | cpu | 1.0000 |
instr-official | cpu | 1.0000 |
cpu-timing | cpu | 1.0000 |
instr-misc | cpu | 1.0000 |
nmi-and-brk | cpu | 1.0000 |
vbl-basics | ppu | 1.0000 |
nmi-timing | ppu | 0.0000 |
sprite0-basics | ppu | 1.0000 |
sprite0-timing | ppu | 1.0000 |
sprite-overflow | ppu | 1.0000 |
oam-read | ppu | 1.0000 |
apu-len-ctr | apu | 1.0000 |
apu-irq-flag | apu | 1.0000 |
apu-dmc-basics | apu | 1.0000 |
mmc3-clocking | mapper | 0.0000 |
holy-mapperel-mmc1 | mapper | 0.0000 |
holy-mapperel-uxrom | mapper | 1.0000 |
holy-mapperel-cnrom | mapper | 1.0000 |
holy-mapperel-mmc3 | mapper | 0.0000 |
apu-mixer-square | apu | 1.0000 |
apu-mixer-triangle | apu | 1.0000 |
apu-mixer-noise | apu | 1.0000 |
apu-mixer-dmc | apu | 1.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.


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


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


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

