User talk:Sour: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
No edit summary
Line 4: Line 4:
{| class="wikitable"
{| class="wikitable"
|-
|-
| branch_timing_tests ||
| branch_timing_tests || These ROMs test timing of the branch instruction, including edge cases
|-
|-
| cpu_dummy_reads ||  
| cpu_dummy_reads || Tests the CPU's dummy reads
|-  
|-  
| cpu_dummy_writes ||
| cpu_dummy_writes || Tests the CPU's dummy writes
|-  
|-  
| cpu_exec_space ||
| 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_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_reset || Tests CPU registers just after power and changes during reset, and that RAM isn't changed during reset.
|-  
|-  
| cpu_timing_test6 ||  
| 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_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_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.
| instr_timing || Tests timing of all instructions, including unofficial ones, page-crossing, etc.
|-
|-
| nestest ||
| 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).
|}
|}



Revision as of 14:46, 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
full_palette displays the full palette with all emphasis states, demonstrates direct PPU color control
nmi_sync
oam_read
oam_stress
ppu_open_bus
ppu_sprite_hit
ppu_sprite_overflow
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
sprite_hit_tests_2005.10.05
sprite_overflow_tests
sprdma_and_dmc_dma
tvpassfail NTSC color and NTSC/PAL pixel aspect ratio test ROM
vbl_nmi_timing

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

Misc Tests