Emulator tests

From NESdev Wiki
Revision as of 14:30, 12 October 2008 by Tepples (talk | contribs) (→‎Hard-To-Emulate Games: twinkle twinkle little star)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

There are many ROMs available that test an emulator for problems.


Validation ROMs

Multiple

  • NEStress partially tests PPU, CPU, and controller operation (old; some tests seem to always fail)
  • Blargg's test ROMs partially test APU, misc PPU behavior, sprite 0 hit, and MMC3 operation. Refer to PPU Frame Timing for new information that the PPU ROMs test.

CPU

PPU

Mapper

Hard-To-Emulate Games

  • Balloon Fight relies on reading the nametables through PPUDATA to twinkle the stars in the background. (The code is at $D603.)
  • Among the most popular NROM games, which are generally the first targets against which an emulator author tests his or her work, Super Mario Bros. is probably the hardest to emulate. It relies on JMP indirect, correct palette mirroring, sprite 0 detection, the 1-byte delay when reading from CHR ROM through PPUDATA, and proper behavior of the nametable selection bits of PPUCTRL and PPUADDR.[1] In addition, there are several bad dumps floating around, some of which were ripped from pirate multicarts whose cheat menus leave several key parameters in RAM.
  • Adventures of Lolo 2, Spelunker rely on 1 cycle NMI delay when PPUSTATUS bit 7 gets set inside vblank (if PPUSTATUS has not been read yet)
  • Battletoads needs precise CPU and PPU timing
  • Bee 52 needs accurate DMC timing and relies on PPUSTATUS bit 5 as well
  • Cobra Triangle, Iron Sword relies on the dummy read for the sta $4000,X instruction to acknowledge pending APU IRQs.
  • Fire Hawk needs accurate DMC timing and does mid-frame palette changes
  • Micro Machines requires correct values when reading PPU $2004 during rendering, and also relies on proper background color selection when rendering is disabled and the VRAM address points to the palette
  • Ms. Pac-Man (Tengen) relies on being able to read PPUSTATUS bit 7 as true before NMI occurs
  • Super Mario Bros. 3 relies on an interaction between the sprite priority bit and the OAM index to put power-ups behind blocks

Game Bugs lists games that have glitches on NES hardware, so you won't go "fixing" them while breaking your emulator.