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