retro-silicon

Nintendo Entertainment System · build log

First frames: 42 PPU test ROMs match MesenCE

The picture processor, video/ppu-2c02, draws its first frames on the board, and they match the reference emulator exactly. Its timing follows MesenCE’s, so a frame from the core and a frame from MesenCE can be compared as raw palette values, CRC for CRC.

42 test ROMs pass that way, in the simulation and on the Tang Nano 20K: blargg’s VBL and NMI tests, PPU open bus and OAM reads, the sprite hit and overflow tests, VBL/NMI timing, palette RAM, nmi_sync and full_palette. A whole frame captured from the board line by line matches MesenCE’s pixel for pixel. Five bugs planted in the PPU on purpose were each caught by the ROMs.

A test ROM's results screen: rows of dashes, then the words oam_read and Passed, in white on black.
blargg's oam_read test, which reads sprite memory back through the PPU, passing: the frame drawn by retro-silicon's NES and captured line by line through its test shell. retro-silicon on the Tang Nano 20K; test ROM by blargg, CC BY 4.0.
A test ROM's results screen: the words SPRITE HIT TIMING and PASSED in white on black.
The sprite-0 hit timing test passing: the frame drawn by retro-silicon's NES, captured through its test shell. retro-silicon on the Tang Nano 20K; test ROM by blargg, CC BY 4.0.