Mooneye tests
February 7, 2021 ยท View on GitHub
Each test rom has a corresponding unit test.
Each Mooneye GB test rom executes opcode 0x40: LD B, B when finished.
When a test ran successfully, the registers should contain the following values:
B = 3
C = 5
D = 8
E = 13
H = 21
L = 34
Register A should have value 0, a value not equal to 0 indicates one or more assertions failed.
A screenshot is made after the test is finished, and can be found in the testoutput directory. A hash of the screen buffer will be written to a text file in this directory.
Acceptance
- boot_regs_dmgABC
- call_cc_timing2
- ei_timing
- div_timing
- rapid_di_ei
- di_timing_GS
- ret_timing
- halt_ime0_ei
- halt_ime1_timing
- reti_intr_timing
- rst_timing
- reti_timing
- intr_timing
- jp_cc_timing
- ld_hl_sp_e_timing
- if_ie_registers
- call_timing
- boot_div_dmgABC
- push_timing
- pop_timing
- halt_ime0_nointr_timing
- oam_dma_restart
- oam_dma_timing
- oam_dma_start
- call_timing2
- halt_ime1_timing2_GS
- jp_timing
- ei_sequence
- ret_cc_timing
- boot_hwio_dmgABC
- call_cc_timing
- add_sp_e_timing
Bits
- mem_oam
- reg_f
- unused_hwio
Interrupts
- ie_push
Oam_dma
- basic
- reg_read
- sources-dmgABCmgbS
PPU
- hblank_ly_scx_timing-GS
- intr_1_2_timing-GS
- intr_2_0_timing - Fails, incorrect timing between STAT mode=1 and STAT mode=2 interrupt
- intr_2_mode0_timing
- intr_2_mode0_timing_sprites
- intr_2_mode3_timing
- intr_2_oam_ok_timing - E register value incorrect
- lcdon_timing-dmgABCmgbS - Cycle: 00 Expected: 00 Actual: 90
- lcdon_write_timing-GS - Cycle: 12 Expected: 00 Actual: 81
- stat_irq_blocking
- stat_lyc_onoff
- vblank_stat_intr-GS
Timer
- div_write
- rapid_toggle
- tim00
- tim00_div_trigger
- tim01
- tim01_div_trigger
- tim10
- tim10_div_trigger
- tim11
- tim11_div_trigger
- tima_reload
- time_write_reloading
- tma_write_reloading
Instructions
- daa
Serial
- boot_sclk_align-dmgABCmgb.gb
Emulator only
MBC1
- multicart_rom_8Mb
- rom_512Kb
- rom_1Mb
- rom_2Mb
- rom_4Mb
- rom_8Mb
- rom_16Mb
- ram_256Kb
- ram_64Kb
- bits_bank1
- bits_bank2
- bits_mode
- bits_ramg
MBC2
- rom_1Mb
- rom_2Mb
- rom_512Kb
- ram
- bits_ramg
- bits_romb
- bits_unused
MBC5
- rom_1Mb
- rom_2Mb
- rom_4Mb
- rom_8Mb
- rom_16Mb
- rom_32Mb
- rom_64Mb
- rom_512Kb