User talk:Sour: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
No edit summary
Line 101: Line 101:
== Mapper-specific Tests ==
== Mapper-specific Tests ==


== Misc Tests ==
== Input Tests ==
{| class="wikitable"
|-
| PaddleTest3 || Test for the Arkanoid controller
|-
| read_joy3 || Various NES controllers tests, including read corruption due to DMC DMA
|-
| ruder || "Zap Ruder" - tests Zapper behavior
|-
| vaus_test || Another test for the Arkanoid controller
|}

Revision as of 15:03, 7 January 2017

CPU Tests

branch_timing_tests These ROMs test timing of the branch instruction, including edge cases
cpu_dummy_reads Tests the CPU's dummy reads
cpu_dummy_writes Tests the CPU's dummy writes
cpu_exec_space Verifies that the CPU can execute code from any possible memory location, even if that is mapped as I/O space
cpu_interrupts_v2 Tests the behavior and timing of CPU in the presence of interrupts, both IRQ and NMI; see CPU interrupts.
cpu_reset Tests CPU registers just after power and changes during reset, and that RAM isn't changed during reset.
cpu_timing_test6 This program tests instruction timing for all official and unofficial NES 6502 instructions except the 8 branch instructions (Bxx) and the 12 halt instructions (HLT)
instr_misc Tests some miscellaneous aspects of instructions, including behavior when 16-bit address wraps around, and dummy reads.
instr_test_v5 Tests official and unofficial CPU instructions and lists which ones failed. It will work even if emulator has no PPU and only supports NROM, writing a copy of output to $6000 (see readme). This more thoroughly tests instructions, but can't help you figure out what's wrong beyond what instruction(s) are failing, so it's better for testing mature CPU emulators.
instr_timing Tests timing of all instructions, including unofficial ones, page-crossing, etc.
nestest fairly thoroughly tests CPU operation. This is the best test to start with when getting a CPU emulator working for the first time. Start execution at $C000 and compare execution with a log from Nintendulator, an emulator whose CPU is known to work correctly (apart from some details of the power-up state).

PPU Tests

blargg_ppu_tests_2005.09.15b Miscellaneous PPU tests (palette ram, sprite ram, etc.)
full_palette Displays the full palette with all emphasis states, demonstrates direct PPU color control
nmi_sync Verifies NMI timing by creating a specific pattern on the screen (NTSC & PAL versions)
oam_read Tests OAM reading ($2004), being sure it reads the byte from OAM at the current address in $2003.
oam_stress Thoroughly tests OAM address ($2003) and read/write ($2004)
ppu_open_bus Tests behavior when reading from open-bus PPU bits/registers
ppu_sprite_hit Tests sprite 0 hit behavior and timing
ppu_sprite_overflow Tests sprite overflow behavior and timing
ppu_vbl_nmi Tests the behavior and timing of the NTSC PPU's VBL flag, NMI enable, and NMI interrupt. Timing is tested to an accuracy of one PPU clock.
scanline Displays a test screen that will contain glitches if certain portions of the emulation are not perfect.
sprite_hit_tests_2005.10.05 Generally the same as ppu_sprite_hit (older revision of the tests - ppu_sprite_hit is most likely better)
sprite_overflow_tests Generally the same as ppu_sprite_overflow (older revision of the tests - ppu_sprite_overflow is most likely better)
sprdma_and_dmc_dma Tests the cycle stealing behavior of the DMC DMA while running Sprite DMAs
tvpassfail NTSC color and NTSC/PAL pixel aspect ratio test ROM
vbl_nmi_timing Generally the same as ppu_vbl_nmi (older revision of the tests - ppu_vbl_nmi is most likely better)

APU Tests

apu_mixer Verifies proper operation of the APU's sound channel mixer, including relative volumes of channels and non-linear mixing. recordings when run on NES are available for comparison, though the tests are made so that you don't really need these.
apu_reset Tests initial APU state at power, and the effect of reset.
apu_sweep Tests NES APU sweep cutoff (silence) thresholds and sweep subtract mode
apu_test Tests many aspects of the APU that are visible to the CPU. Really obscure things are not tested here.
blargg_apu_2005.07.30 Tests APU length counters, frame counter, IRQ, etc.
dmc_dma_during_read4 Tests register read/write behavior while DMA is running
dmc_tests ??
dpcmletterbox Tests accuracy of the DMC channel's IRQ
pal_apu_tests PAL version of the blargg_apu_2005.07.30 tests
square_timer_div2 Tests the square timer's period
test_apu_2 11 tests that verify a number of behaviors with the APU (including the frame counter)
test_apu_env Tests the APU envelope for correctness.
test_apu_sweep Tests the sweep unit's add, subtract, overflow cutoff, and minimum period behaviors.
test_apu_timers Tests frequency timer of all 5 channels
test_tri_lin_ctr Tests triangle's linear counter and clocking by the frame counter
volume_tests Plays tones on all the APU's channels to show their relative volumes at various settings of $4011. Package includes a recording from an NES's audio output for comparison.

Mapper-specific Tests

Input Tests

PaddleTest3 Test for the Arkanoid controller
read_joy3 Various NES controllers tests, including read corruption due to DMC DMA
ruder "Zap Ruder" - tests Zapper behavior
vaus_test Another test for the Arkanoid controller