feat: better DMA, PPU, add more tests
This commit is contained in:
parent
0afc556233
commit
c6dd3a7bd5
166 changed files with 917 additions and 696 deletions
|
@ -20,284 +20,292 @@ jobs:
|
|||
|
||||
- name: Run test ROM (blargg cpu_instrs)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/cpu_instrs.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/cpu_instrs.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/cpu_instrs.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/cpu_instrs.bin
|
||||
|
||||
- name: Run test ROM (blargg instr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/instr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/instr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/instr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/instr_timing.bin
|
||||
|
||||
- name: Run test ROM (blargg mem_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/mem_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/mem_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/mem_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/mem_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite add_sp_e_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/add_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/add_sp_e_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/add_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/add_sp_e_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite boot_hwio-dmgABCmgb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_hwio-dmgABCmgb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_hwio-dmgABCmgb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_hwio-dmgABCmgb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite boot_regs-dmgABC)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_regs-dmgABC.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_regs-dmgABC.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_regs-dmgABC.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_cc_timing2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_timing2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite di_timing-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/di_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/di_timing-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/di_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/di_timing-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite div_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/div_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/div_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/div_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/div_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ei_sequence)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_sequence.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_sequence.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_sequence.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_sequence.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ei_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime0_ei)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_ei.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_ei.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime0_nointr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_nointr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_nointr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_nointr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_nointr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime1_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime1_timing2-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing2-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing2-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing2-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing2-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite if_ie_registers)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/if_ie_registers.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/if_ie_registers.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/if_ie_registers.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/if_ie_registers.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite intr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/intr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/intr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite jp_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite jp_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ld_hl_sp_e_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ld_hl_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ld_hl_sp_e_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ld_hl_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ld_hl_sp_e_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_restart)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_restart.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_restart.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_restart.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_restart.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_start)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_start.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_start.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_start.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_start.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite pop_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/pop_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/pop_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/pop_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/pop_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite push_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/push_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/push_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/push_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/push_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite rapid_di_ei)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rapid_di_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rapid_di_ei.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rapid_di_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rapid_di_ei.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ret_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ret_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite reti_intr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_intr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_intr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite reti_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite rst_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rst_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rst_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rst_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rst_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank1)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank1.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank1.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank1.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_mode)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_mode.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_mode.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_mode.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_ramg)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_ramg.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_ramg.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_ramg.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/multicart_rom_8Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/multicart_rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/ram_256kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_256kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_256kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_256kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/ram_64kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_64kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_64kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_64kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_16Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_16Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_16Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_16Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_1Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_1Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_1Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_1Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_2Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_2Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_2Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_2Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_4Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_4Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_4Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_4Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_512kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_512kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_512kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_512kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_8Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_8Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_8Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/mem_oam)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/mem_oam.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/mem_oam.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/mem_oam.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/mem_oam.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/reg_f)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/reg_f.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/reg_f.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/reg_f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/reg_f.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/unused_hwio-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/unused_hwio-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/unused_hwio-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/unused_hwio-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/unused_hwio-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite instr/daa)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/instr/daa.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/instr/daa.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/instr/daa.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/instr/daa.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma/basic)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/basic.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/basic.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/basic.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/basic.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma/reg_read)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/reg_read.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/reg_read.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/reg_read.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/reg_read.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/intr_1_2_timing-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_1_2_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_1_2_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/intr_2_0_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_2_0_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_2_0_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_2_0_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_2_0_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/stat_irq_blocking)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_irq_blocking.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_irq_blocking.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_irq_blocking.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_irq_blocking.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/stat_lyc_onoff)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_lyc_onoff.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_lyc_onoff.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_lyc_onoff.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_lyc_onoff.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/vblank_stat_intr-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/vblank_stat_intr-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/vblank_stat_intr-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/div_write)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/div_write.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/div_write.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/div_write.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/div_write.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/rapid_toggle)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/rapid_toggle.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/rapid_toggle.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/rapid_toggle.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/rapid_toggle.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim00)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim00_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim01)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim01_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim10)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim10_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim11)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim11_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tima_reload)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_reload.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_reload.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_reload.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_reload.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tima_write_reloading)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_write_reloading.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_write_reloading.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tma_write_reloading)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tma_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tma_write_reloading.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tma_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tma_write_reloading.bin
|
||||
|
||||
- name: Run test ROM (hacktix bully)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/bully.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/bully.bin
|
||||
|
||||
- name: Run test ROM (hacktix strikethrough)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/strikethrough.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/strikethrough.bin
|
||||
|
|
150
.github/workflows/action.yml
vendored
150
.github/workflows/action.yml
vendored
|
@ -20,284 +20,292 @@ jobs:
|
|||
|
||||
- name: Run test ROM (blargg cpu_instrs)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/cpu_instrs.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/cpu_instrs.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/cpu_instrs.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/cpu_instrs.bin
|
||||
|
||||
- name: Run test ROM (blargg instr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/instr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/instr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/instr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/instr_timing.bin
|
||||
|
||||
- name: Run test ROM (blargg mem_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/roms/mem_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/mem_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/blargg/serial-roms/mem_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/mem_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite add_sp_e_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/add_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/add_sp_e_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/add_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/add_sp_e_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite boot_hwio-dmgABCmgb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_hwio-dmgABCmgb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_hwio-dmgABCmgb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_hwio-dmgABCmgb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite boot_regs-dmgABC)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_regs-dmgABC.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_regs-dmgABC.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_regs-dmgABC.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_cc_timing2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite call_timing2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite di_timing-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/di_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/di_timing-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/di_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/di_timing-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite div_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/div_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/div_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/div_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/div_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ei_sequence)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_sequence.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_sequence.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_sequence.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_sequence.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ei_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime0_ei)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_ei.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_ei.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime0_nointr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_nointr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_nointr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_nointr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_nointr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime1_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite halt_ime1_timing2-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing2-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing2-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing2-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing2-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite if_ie_registers)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/if_ie_registers.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/if_ie_registers.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/if_ie_registers.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/if_ie_registers.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite intr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/intr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/intr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite jp_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite jp_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ld_hl_sp_e_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ld_hl_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ld_hl_sp_e_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ld_hl_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ld_hl_sp_e_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_restart)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_restart.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_restart.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_restart.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_restart.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_start)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_start.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_start.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_start.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_start.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite pop_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/pop_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/pop_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/pop_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/pop_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite push_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/push_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/push_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/push_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/push_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite rapid_di_ei)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rapid_di_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rapid_di_ei.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rapid_di_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rapid_di_ei.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ret_cc_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_cc_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_cc_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ret_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite reti_intr_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_intr_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_intr_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite reti_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite rst_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rst_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rst_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rst_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rst_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank1)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank1.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank1.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank1.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank2)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank2.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank2.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_mode)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_mode.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_mode.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_mode.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/bits_ramg)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_ramg.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_ramg.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_ramg.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/multicart_rom_8Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/multicart_rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/ram_256kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_256kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_256kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_256kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/ram_64kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_64kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_64kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_64kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_16Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_16Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_16Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_16Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_1Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_1Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_1Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_1Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_2Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_2Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_2Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_2Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_4Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_4Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_4Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_4Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_512kb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_512kb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_512kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_512kb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite MBC1/rom_8Mb)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_8Mb.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_8Mb.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/mem_oam)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/mem_oam.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/mem_oam.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/mem_oam.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/mem_oam.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/reg_f)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/reg_f.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/reg_f.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/reg_f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/reg_f.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite bits/unused_hwio-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/unused_hwio-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/unused_hwio-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/unused_hwio-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/unused_hwio-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite instr/daa)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/instr/daa.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/instr/daa.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/instr/daa.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/instr/daa.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma/basic)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/basic.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/basic.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/basic.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/basic.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite oam_dma/reg_read)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/reg_read.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/reg_read.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/reg_read.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/reg_read.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/intr_1_2_timing-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_1_2_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_1_2_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/intr_2_0_timing)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_2_0_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_2_0_timing.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_2_0_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_2_0_timing.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/stat_irq_blocking)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_irq_blocking.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_irq_blocking.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_irq_blocking.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_irq_blocking.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/stat_lyc_onoff)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_lyc_onoff.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_lyc_onoff.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_lyc_onoff.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_lyc_onoff.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite ppu/vblank_stat_intr-GS)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/vblank_stat_intr-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/vblank_stat_intr-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/div_write)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/div_write.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/div_write.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/div_write.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/div_write.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/rapid_toggle)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/rapid_toggle.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/rapid_toggle.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/rapid_toggle.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/rapid_toggle.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim00)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim00_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim01)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim01_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim10)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim10_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim11)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tim11_div_trigger)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11_div_trigger.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11_div_trigger.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tima_reload)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_reload.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_reload.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_reload.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_reload.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tima_write_reloading)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_write_reloading.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_write_reloading.bin
|
||||
|
||||
- name: Run test ROM (mooneye-test-suite timer/tma_write_reloading)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tma_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tma_write_reloading.bin
|
||||
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tma_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tma_write_reloading.bin
|
||||
|
||||
- name: Run test ROM (hacktix bully)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/bully.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/bully.bin
|
||||
|
||||
- name: Run test ROM (hacktix strikethrough)
|
||||
if: always()
|
||||
run: ./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/strikethrough.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/strikethrough.bin
|
||||
|
|
66
Cargo.lock
generated
66
Cargo.lock
generated
|
@ -222,15 +222,6 @@ version = "0.1.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-sys"
|
||||
version = "0.1.0-beta.1"
|
||||
|
@ -451,15 +442,6 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.3.2"
|
||||
|
@ -469,16 +451,6 @@ dependencies = [
|
|||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "d3d12"
|
||||
version = "0.6.0"
|
||||
|
@ -534,16 +506,6 @@ dependencies = [
|
|||
"powerfmt",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"crypto-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dispatch"
|
||||
version = "0.2.0"
|
||||
|
@ -728,16 +690,6 @@ dependencies = [
|
|||
"percent-encoding",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
||||
dependencies = [
|
||||
"typenum",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.28.1"
|
||||
|
@ -1110,7 +1062,6 @@ dependencies = [
|
|||
"log",
|
||||
"meowgb-opcode",
|
||||
"paste",
|
||||
"sha1",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
|
@ -1654,17 +1605,6 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "simd-adler32"
|
||||
version = "0.3.7"
|
||||
|
@ -1902,12 +1842,6 @@ dependencies = [
|
|||
"rustc-hash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
||||
|
||||
[[package]]
|
||||
name = "ultraviolet"
|
||||
version = "0.9.2"
|
||||
|
|
|
@ -50,10 +50,10 @@ cat >>$TEST_MD_FILE << EOF
|
|||
|
||||
EOF
|
||||
|
||||
for full_f in ./test-roms/blargg/roms/*.gb
|
||||
for full_f in ./test-roms/blargg/serial-roms/*.gb
|
||||
do
|
||||
f="${full_f##*/}"; f="${f%.*}";
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/blargg/roms/$f.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/$f.bin"
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/blargg/serial-roms/$f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/$f.bin"
|
||||
|
||||
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||
|
||||
|
@ -69,7 +69,7 @@ fi
|
|||
EOF
|
||||
|
||||
cat >>$TEST_MD_FILE << EOF
|
||||
* $f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/blargg/$f.bin)
|
||||
* $f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/serial/blargg/$f.bin)
|
||||
EOF
|
||||
|
||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||
|
@ -86,10 +86,10 @@ cat >>$TEST_MD_FILE << EOF
|
|||
|
||||
EOF
|
||||
|
||||
for full_f in ./test-roms/mooneye-test-suite/roms/*.gb
|
||||
for full_f in ./test-roms/mooneye-test-suite/serial-roms/*.gb
|
||||
do
|
||||
f="${full_f##*/}"; f="${f%.*}";
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/$f.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/$f.bin"
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/$f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/$f.bin"
|
||||
|
||||
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||
|
||||
|
@ -105,7 +105,7 @@ fi
|
|||
EOF
|
||||
|
||||
cat >>$TEST_MD_FILE << EOF
|
||||
* $f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/mooneye-test-suite/$f.bin)
|
||||
* $f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/serial/mooneye-test-suite/$f.bin)
|
||||
EOF
|
||||
|
||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||
|
@ -116,7 +116,7 @@ EOF
|
|||
EOF
|
||||
done
|
||||
|
||||
for directory in ./test-roms/mooneye-test-suite/roms/*/
|
||||
for directory in ./test-roms/mooneye-test-suite/serial-roms/*/
|
||||
do
|
||||
d=$(basename $directory)
|
||||
|
||||
|
@ -126,10 +126,10 @@ do
|
|||
|
||||
EOF
|
||||
|
||||
for full_f in ./test-roms/mooneye-test-suite/roms/$d/*.gb
|
||||
for full_f in ./test-roms/mooneye-test-suite/serial-roms/$d/*.gb
|
||||
do
|
||||
f="${full_f##*/}"; f="${f%.*}";
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/$d/$f.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/$d/$f.bin"
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/$d/$f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/$d/$f.bin"
|
||||
|
||||
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||
|
||||
|
@ -145,7 +145,7 @@ fi
|
|||
EOF
|
||||
|
||||
cat >>$TEST_MD_FILE << EOF
|
||||
* $d/$f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/mooneye-test-suite/$d/$f.bin)
|
||||
* $d/$f.gb - [ROM]($full_f) - [Expected Serial Output](./meowgb-tests/expected_output/serial/mooneye-test-suite/$d/$f.bin)
|
||||
EOF
|
||||
|
||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||
|
@ -158,6 +158,42 @@ EOF
|
|||
|
||||
done
|
||||
|
||||
cat >>$TEST_MD_FILE << EOF
|
||||
|
||||
## Hacktix Test ROMs
|
||||
|
||||
EOF
|
||||
|
||||
for full_f in ./test-roms/hacktix/framebuffer-roms/*.gb
|
||||
do
|
||||
f="${full_f##*/}"; f="${f%.*}";
|
||||
TEST_CMD="./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/$f.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/$f.bin"
|
||||
|
||||
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||
|
||||
echo "Running test ROM $full_f"
|
||||
|
||||
TEST_TOTAL=\$((TEST_TOTAL + 1))
|
||||
|
||||
if res=\$($TEST_CMD 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=\$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: \$res"
|
||||
fi
|
||||
EOF
|
||||
|
||||
cat >>$TEST_MD_FILE << EOF
|
||||
* $f.gb - [ROM]($full_f) - [Expected Framebuffer (RGBA32)](./meowgb-tests/expected_output/framebuffer/hacktix/$f.bin)
|
||||
EOF
|
||||
|
||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||
|
||||
- name: Run test ROM (hacktix $f)
|
||||
if: always()
|
||||
run: $TEST_CMD
|
||||
EOF
|
||||
done
|
||||
|
||||
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||
|
||||
echo "Succeeded in running \$TEST_SUCCESS/\$TEST_TOTAL"
|
||||
|
|
|
@ -13,4 +13,3 @@ paste = "1.0.6"
|
|||
meowgb-opcode = { path = "../meowgb-opcode" }
|
||||
bmp = "0.5.0"
|
||||
thiserror = "1.0.30"
|
||||
sha1 = { version = "0.10.6", features = ["std"] }
|
|
@ -1,4 +1,3 @@
|
|||
pub mod bootrom;
|
||||
pub mod cpu;
|
||||
pub mod dma;
|
||||
pub mod interrupts;
|
||||
|
@ -27,10 +26,12 @@ use self::{
|
|||
#[cfg(feature = "instr-dbg")]
|
||||
use crate::ringbuffer::RingBuffer;
|
||||
|
||||
pub type GenericCartridge = dyn Mapper + Send + Sync;
|
||||
|
||||
pub struct Gameboy<S: SerialWriter> {
|
||||
pub ppu: Ppu,
|
||||
pub memory: Memory,
|
||||
pub cartridge: Option<Box<dyn Mapper + Send + Sync>>,
|
||||
pub cartridge: Option<Box<GenericCartridge>>,
|
||||
pub interrupts: Interrupts,
|
||||
pub timer: Timer,
|
||||
pub registers: Registers,
|
||||
|
@ -54,20 +55,21 @@ pub struct Gameboy<S: SerialWriter> {
|
|||
}
|
||||
|
||||
impl<S: SerialWriter> Gameboy<S> {
|
||||
pub fn new(bootrom: Option<[u8; 0x100]>, serial_writer: S) -> Self {
|
||||
Self {
|
||||
memory: Memory::new(bootrom),
|
||||
cartridge: None,
|
||||
pub fn new(serial_writer: S, rom: Option<Vec<u8>>) -> Self {
|
||||
Self::new_with_cartridge(serial_writer, rom.map(Self::parse_rom))
|
||||
}
|
||||
|
||||
pub fn new_with_cartridge(serial_writer: S, cartridge: Option<Box<GenericCartridge>>) -> Self {
|
||||
let mut out = Self {
|
||||
memory: Memory::new(),
|
||||
cartridge,
|
||||
interrupts: Interrupts::new(),
|
||||
timer: Timer::new(),
|
||||
joypad: Joypad::new(),
|
||||
serial: Serial::new(serial_writer),
|
||||
dma: DmaState::new(),
|
||||
ppu: Ppu::new(bootrom.is_some()),
|
||||
registers: match bootrom.is_some() {
|
||||
true => Registers::default(),
|
||||
false => Registers::post_rom(),
|
||||
},
|
||||
ppu: Ppu::new(),
|
||||
registers: Registers::default(),
|
||||
sound: Sound::new(),
|
||||
halt: false,
|
||||
halt_bug: false,
|
||||
|
@ -78,18 +80,166 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
last_write: None,
|
||||
#[cfg(feature = "instr-dbg")]
|
||||
pc_history: RingBuffer::new(),
|
||||
};
|
||||
|
||||
out.run_bootrom();
|
||||
out.registers.set_post_rom();
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
pub fn run_bootrom(&mut self) {
|
||||
macro_rules! push8 {
|
||||
($byte:expr) => {
|
||||
self.registers.sp = self.registers.sp.overflowing_sub(1).0;
|
||||
self.debug_write_u8(self.registers.sp, $byte);
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! push16 {
|
||||
($byte:expr) => {
|
||||
push8!(($byte >> 8) as u8);
|
||||
push8!($byte as u8);
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! pop8 {
|
||||
() => {
|
||||
{
|
||||
let res = self.debug_read_u8(self.registers.sp);
|
||||
self.registers.sp = self.registers.sp.overflowing_add(1).0;
|
||||
res
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! pop16 {
|
||||
() => {
|
||||
(pop8!() as u16) | ((pop8!() as u16) << 8)
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! rl {
|
||||
($reg:ident) => {
|
||||
{
|
||||
let new_carry = self.registers.$reg >> 7 == 1;
|
||||
self.registers.$reg <<= 1;
|
||||
|
||||
if self.registers.get_carry() {
|
||||
self.registers.$reg |= 1;
|
||||
}
|
||||
|
||||
self.registers.set_carry(new_carry);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
self.registers.sp = 0xFFFE;
|
||||
|
||||
// Clear VRAM
|
||||
self.registers.a = 0;
|
||||
let mut address = 0x9FFF;
|
||||
while address >= 0x8000 {
|
||||
self.debug_write_u8(address, 0);
|
||||
address -= 1;
|
||||
}
|
||||
|
||||
// // Configure Audio
|
||||
// self.registers.set_hl(0xFF26);
|
||||
// self.registers.c = 0x11;
|
||||
// self.registers.a = 0x80;
|
||||
// let hl_content = self.registers.get_hl();
|
||||
// self.debug_write_u8(hl_content, self.registers.a);
|
||||
// self.registers.set_hl(hl_content - 1);
|
||||
// self.debug_write_u8(0xFF00 | self.registers.c as u16, self.registers.a);
|
||||
// self.registers.c += 1;
|
||||
// self.registers.a = 0xF3;
|
||||
// self.debug_write_u8(0xFF00 | self.registers.c as u16, self.registers.a);
|
||||
// let hl_content = self.registers.get_hl();
|
||||
// self.debug_write_u8(hl_content, self.registers.a);
|
||||
// self.registers.set_hl(hl_content - 1);
|
||||
// self.registers.a = 0x77;
|
||||
// self.debug_write_u8(hl_content, self.registers.a);
|
||||
|
||||
// Configure Background Palette
|
||||
self.registers.a = 0xFC;
|
||||
self.debug_write_u8(0xFF47, self.registers.a);
|
||||
|
||||
// Load logo data from cartridge into VRAM
|
||||
self.registers.set_de(0x0104);
|
||||
self.registers.set_hl(0x8010);
|
||||
|
||||
loop {
|
||||
self.registers.a = self.debug_read_u8(self.registers.get_de());
|
||||
|
||||
self.registers.c = self.registers.a;
|
||||
for _ in 0..2 {
|
||||
self.registers.b = 4;
|
||||
while self.registers.b != 0 {
|
||||
push16!(self.registers.get_bc());
|
||||
rl!(c);
|
||||
rl!(a);
|
||||
let bc = pop16!();
|
||||
self.registers.set_bc(bc);
|
||||
rl!(c);
|
||||
rl!(a);
|
||||
self.registers.b -= 1;
|
||||
}
|
||||
self.debug_write_u8(self.registers.get_hl(), self.registers.a);
|
||||
self.registers.set_hl(self.registers.get_hl() + 2);
|
||||
self.debug_write_u8(self.registers.get_hl(), self.registers.a);
|
||||
self.registers.set_hl(self.registers.get_hl() + 2);
|
||||
}
|
||||
|
||||
self.registers.set_de(self.registers.get_de() + 1);
|
||||
self.registers.a = self.registers.e;
|
||||
|
||||
assert!(self.registers.a <= 0x34);
|
||||
if self.registers.a == 0x34 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Extra 8 bytes into VRAM from BROM
|
||||
const EXTRA_VRAM_DATA: [u8; 8] = [0x3C, 0x42, 0xB9, 0xA5, 0xB9, 0xA5, 0x42, 0x3C];
|
||||
for value in EXTRA_VRAM_DATA {
|
||||
self.registers.a = value;
|
||||
self.debug_write_u8(self.registers.get_hl(), self.registers.a);
|
||||
self.registers.set_hl(self.registers.get_hl() + 2);
|
||||
}
|
||||
self.registers.set_de(0xE0);
|
||||
self.registers.b = 0;
|
||||
|
||||
// BG Tilemap
|
||||
self.registers.a = 0x19;
|
||||
self.debug_write_u8(0x9910, self.registers.a);
|
||||
self.registers.set_hl(0x992F);
|
||||
|
||||
'outer: loop {
|
||||
self.registers.c = 0xc;
|
||||
while self.registers.c != 0 {
|
||||
self.registers.a -= 1;
|
||||
if self.registers.a == 0 {
|
||||
break 'outer;
|
||||
}
|
||||
|
||||
self.debug_write_u8(self.registers.get_hl(), self.registers.a);
|
||||
self.registers.set_hl(self.registers.get_hl() - 1);
|
||||
self.registers.c -= 1;
|
||||
}
|
||||
self.registers.l = 0xf;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn load_cartridge(&mut self, bytes: Vec<u8>) {
|
||||
fn parse_rom(bytes: Vec<u8>) -> Box<GenericCartridge> {
|
||||
if bytes.len() < 0x150 {
|
||||
panic!("Bad cartridge (len < 0x150)");
|
||||
}
|
||||
match bytes[0x147] {
|
||||
0 => self.cartridge = Some(Box::new(NoMBC::new(bytes))),
|
||||
1 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
||||
2 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
||||
3 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
||||
0 => Box::new(NoMBC::new(bytes)),
|
||||
1 => Box::new(MBC1::new(bytes)),
|
||||
2 => Box::new(MBC1::new(bytes)),
|
||||
3 => Box::new(MBC1::new(bytes)),
|
||||
other => unimplemented!("Cartidge type: {:#X}", other),
|
||||
}
|
||||
}
|
||||
|
@ -105,9 +255,9 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
|
||||
pub fn tick(&mut self) -> bool {
|
||||
if self.tick_count == 0 {
|
||||
self.dma.tick_dma(&mut self.ppu, &self.memory, self.cartridge.as_deref());
|
||||
cpu::tick_cpu(self);
|
||||
let redraw_requested = self.ppu.tick(&self.dma, &mut self.interrupts);
|
||||
self.dma.tick_dma(&mut self.ppu, &self.memory, self.cartridge.as_deref());
|
||||
self.serial.tick(&mut self.interrupts);
|
||||
self.timer.tick(&mut self.interrupts);
|
||||
|
||||
|
@ -244,11 +394,7 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
0xFF4B => self.ppu.registers.wx = value,
|
||||
0xFF4C..=0xFF4E => {} // Unused
|
||||
0xFF4F => {} // CGB VRAM Bank Select
|
||||
0xFF50 => {
|
||||
if value & 0b1 == 1 {
|
||||
self.memory.bootrom_disabled = true;
|
||||
}
|
||||
}
|
||||
0xFF50 => {} // BROM lockout
|
||||
0xFF51..=0xFF55 => {} // CGB VRAM DMA
|
||||
0xFF56..=0xFF67 => {} // Unused
|
||||
0xFF68..=0xFF69 => {} // CGB BG/OBJ Palettes
|
||||
|
@ -273,7 +419,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
/// debugging/testing purposes
|
||||
pub fn debug_read_u8(&self, address: u16) -> u8 {
|
||||
match address {
|
||||
0..=0xFF if !self.memory.bootrom_disabled => self.memory.bootrom[address as usize],
|
||||
0..=0x7FFF => match self.cartridge.as_ref() {
|
||||
Some(mapper) => mapper.read_rom_u8(address),
|
||||
None => 0xFF,
|
||||
|
@ -298,7 +443,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
#[allow(unused)]
|
||||
pub fn debug_write_u8(&mut self, address: u16, value: u8) {
|
||||
match address {
|
||||
0..=0xFF if !self.memory.bootrom_disabled => {}
|
||||
0..=0x7FFF => {
|
||||
if let Some(mapper) = self.cartridge.as_mut() {
|
||||
mapper.write_rom_u8(address, value)
|
||||
|
@ -330,13 +474,13 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
self.registers.mem_op_happened = true;
|
||||
let value = match self.dma.is_conflict(address) {
|
||||
true => match address {
|
||||
0..=0xFEFF => 0xFF,
|
||||
0..=0xFDFF => self.dma.read_next_byte(&self.ppu, &self.memory, self.cartridge.as_deref()),
|
||||
0xFE00..=0xFEFF => 0xFF,
|
||||
0xFF00..=0xFF7F => self.cpu_read_io(address),
|
||||
0xFF80..=0xFFFE => self.memory.hram[address as usize - 0xFF80],
|
||||
0xFFFF => self.interrupts.interrupt_enable,
|
||||
},
|
||||
false => match address {
|
||||
0..=0xFF if !self.memory.bootrom_disabled => self.memory.bootrom[address as usize],
|
||||
0..=0x7FFF => match self.cartridge.as_ref() {
|
||||
Some(mapper) => mapper.read_rom_u8(address),
|
||||
None => 0xFF,
|
||||
|
@ -374,7 +518,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
|||
0xFFFF => self.interrupts.cpu_set_interrupt_enable(value),
|
||||
},
|
||||
false => match address {
|
||||
0..=0xFF if !self.memory.bootrom_disabled => {}
|
||||
0..=0x7FFF => {
|
||||
if let Some(mapper) = self.cartridge.as_mut() {
|
||||
mapper.write_rom_u8(address, value)
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
use std::{io::Read, path::Path};
|
||||
|
||||
use sha1::{Digest, Sha1};
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum BootromParseError {
|
||||
#[error("Bootrom file cannot be found")]
|
||||
BootromNotFound,
|
||||
#[error("IO error whilst reading bootrom: {0}")]
|
||||
Io(#[from] std::io::Error),
|
||||
#[error("Bootrom size is {0} bytes, expected 256 bytes")]
|
||||
InvalidSize(u64),
|
||||
#[error("Bootrom has an invalid SHA1 (expected \"4ed31ec6b0b175bb109c0eb5fd3d193da823339f\")")]
|
||||
InvalidHash,
|
||||
#[error("Failed to open bootrom file: {0}")]
|
||||
FileOpen(std::io::Error),
|
||||
#[error("Failed to read bootrom file: {0}")]
|
||||
FileRead(std::io::Error),
|
||||
}
|
||||
|
||||
pub fn verify_parse_bootrom(path: &Path) -> Result<[u8; 0x100], BootromParseError> {
|
||||
if !path.is_file() {
|
||||
return Err(BootromParseError::BootromNotFound);
|
||||
}
|
||||
|
||||
let mut bootrom_slice = [0u8; 0x100];
|
||||
|
||||
let mut file = std::fs::File::open(path).map_err(BootromParseError::FileOpen)?;
|
||||
let metadata = file.metadata()?;
|
||||
|
||||
if metadata.len() != 256 {
|
||||
return Err(BootromParseError::InvalidSize(metadata.len()));
|
||||
}
|
||||
|
||||
file.read_exact(&mut bootrom_slice).map_err(BootromParseError::FileRead)?;
|
||||
|
||||
let mut hash_ctx = Sha1::new();
|
||||
hash_ctx.update(&bootrom_slice);
|
||||
let digest = hash_ctx.finalize();
|
||||
|
||||
if digest.as_slice()
|
||||
!= b"\x4e\xd3\x1e\xc6\xb0\xb1\x75\xbb\x10\x9c\x0e\xb5\xfd\x3d\x19\x3d\xa8\x23\x33\x9f"
|
||||
{
|
||||
return Err(BootromParseError::InvalidHash);
|
||||
}
|
||||
|
||||
Ok(bootrom_slice)
|
||||
}
|
|
@ -95,20 +95,17 @@ impl Registers {
|
|||
define_register!(d, e);
|
||||
define_register!(h, l);
|
||||
|
||||
pub fn post_rom() -> Self {
|
||||
Self {
|
||||
a: 0x01,
|
||||
f: 0xB0,
|
||||
b: 0x00,
|
||||
c: 0x13,
|
||||
d: 0x00,
|
||||
e: 0xD8,
|
||||
h: 0x01,
|
||||
l: 0x4D,
|
||||
sp: 0xFFFE,
|
||||
pc: 0x0100,
|
||||
..Default::default()
|
||||
}
|
||||
pub fn set_post_rom(&mut self) {
|
||||
self.a = 0x01;
|
||||
self.f = 0xB0;
|
||||
self.b = 0x00;
|
||||
self.c = 0x13;
|
||||
self.d = 0x00;
|
||||
self.e = 0xD8;
|
||||
self.h = 0x01;
|
||||
self.l = 0x4D;
|
||||
self.sp = 0xFFFE;
|
||||
self.pc = 0x0100;
|
||||
}
|
||||
|
||||
/// This is just a helper function for macros utilizing ident pasting
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use super::{mapper::Mapper, memory::Memory, ppu::Ppu};
|
||||
use super::{memory::Memory, ppu::Ppu, GenericCartridge};
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum DmaMemoryBus {
|
||||
|
@ -36,7 +36,7 @@ impl DmaMemoryBus {
|
|||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct DmaState {
|
||||
original_base: u8,
|
||||
pub dma_in_progress: bool,
|
||||
pub dma_in_progress: Option<u16>,
|
||||
pub base: u8,
|
||||
pub remaining_cycles: u8,
|
||||
restarting: Option<(u8, bool)>,
|
||||
|
@ -48,7 +48,7 @@ impl DmaState {
|
|||
}
|
||||
|
||||
pub fn in_progress(&self) -> Option<DmaMemoryBus> {
|
||||
match self.dma_in_progress {
|
||||
match self.dma_in_progress.is_some() {
|
||||
true => Some(DmaMemoryBus::from_base(self.original_base)),
|
||||
false => None,
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ impl DmaState {
|
|||
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
dma_in_progress: false,
|
||||
dma_in_progress: None,
|
||||
original_base: 0,
|
||||
base: 0,
|
||||
remaining_cycles: 0,
|
||||
|
@ -69,11 +69,29 @@ impl DmaState {
|
|||
self.restarting = Some((base, false));
|
||||
}
|
||||
|
||||
pub fn read_next_byte(&self, ppu: &Ppu, memory: &Memory, cartridge: Option<&GenericCartridge>) -> u8 {
|
||||
let read_address = self.dma_in_progress.unwrap() as usize;
|
||||
match self.original_base {
|
||||
0..=0x7F => match cartridge {
|
||||
Some(cart) => cart.read_rom_u8(read_address as u16),
|
||||
None => 0xFF,
|
||||
},
|
||||
0x80..=0x9F => ppu.vram[read_address - 0x8000],
|
||||
0xA0..=0xBF => match cartridge {
|
||||
Some(mapper) => mapper.read_eram_u8(read_address as u16 - 0xA000),
|
||||
None => 0xFF,
|
||||
},
|
||||
0xC0..=0xDF => memory.wram[read_address - 0xC000],
|
||||
0xE0..=0xFD => memory.wram[read_address - 0xE000],
|
||||
0xFE..=0xFF => 0xFF
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tick_dma(
|
||||
&mut self,
|
||||
ppu: &mut Ppu,
|
||||
memory: &Memory,
|
||||
cartridge: Option<&(dyn Mapper + Send + Sync)>,
|
||||
cartridge: Option<&GenericCartridge>,
|
||||
) {
|
||||
match self.restarting {
|
||||
Some((base, false)) => self.restarting = Some((base, true)),
|
||||
|
@ -85,30 +103,15 @@ impl DmaState {
|
|||
None => {}
|
||||
}
|
||||
|
||||
self.dma_in_progress = self.remaining_cycles > 0;
|
||||
// We do not clear this after running because the "in progress" should remain the entire cycle
|
||||
self.dma_in_progress = match self.remaining_cycles > 0 {
|
||||
true => Some(((self.original_base as u16) << 8) | (0xA0 - self.remaining_cycles) as u16),
|
||||
false => None,
|
||||
};
|
||||
|
||||
if self.remaining_cycles > 0 {
|
||||
let offset = 0xA0 - self.remaining_cycles;
|
||||
let read_address = ((self.original_base as usize) << 8) | offset as usize;
|
||||
|
||||
let value = if self.original_base <= 0x7F {
|
||||
match cartridge {
|
||||
Some(cart) => cart.read_rom_u8(read_address as u16),
|
||||
None => 0xFF,
|
||||
}
|
||||
} else if self.original_base <= 0x9F {
|
||||
let address = read_address - 0x8000;
|
||||
ppu.vram[address]
|
||||
} else if self.original_base <= 0xDF {
|
||||
let address = read_address - 0xC000;
|
||||
memory.wram[address]
|
||||
} else if self.original_base <= 0xFD {
|
||||
let address = read_address - 0xE000;
|
||||
memory.wram[address]
|
||||
} else {
|
||||
0xFF
|
||||
};
|
||||
ppu.dma_write_oam(offset, value);
|
||||
let value = self.read_next_byte(ppu, memory, cartridge);
|
||||
ppu.dma_write_oam(0xA0 - self.remaining_cycles, value);
|
||||
self.remaining_cycles -= 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ macro_rules! joypad_input {
|
|||
($input:ident, $mode:ident) => {
|
||||
paste::paste! {
|
||||
pub fn [<set_ $input>](&mut self, val: bool) {
|
||||
if val && self.mode == JoypadMode::$mode {
|
||||
if val && (self.mode == JoypadMode::$mode || self.mode == JoypadMode::Both) {
|
||||
self.interrupt_triggered = true;
|
||||
}
|
||||
self.$input = val;
|
||||
|
@ -17,7 +17,7 @@ macro_rules! joypad_input {
|
|||
|
||||
pub fn [<invert_ $input>](&mut self) {
|
||||
let val = !self.$input;
|
||||
if val && self.mode == JoypadMode::$mode {
|
||||
if val && (self.mode == JoypadMode::$mode || self.mode == JoypadMode::Both) {
|
||||
self.interrupt_triggered = true;
|
||||
}
|
||||
self.$input = val;
|
||||
|
@ -86,9 +86,9 @@ impl Joypad {
|
|||
joypad_input!(right, Direction);
|
||||
|
||||
pub fn cpu_write(&mut self, content: u8) {
|
||||
if (content >> 5) & 0b1 == 0 {
|
||||
if (content >> 5) & 0b1 == 0 && (content >> 4) & 0b1 == 1 {
|
||||
self.mode = JoypadMode::Action;
|
||||
} else if (content >> 4) & 0b1 == 0 {
|
||||
} else if (content >> 4) & 0b1 == 0 && (content >> 5) & 0b1 == 1 {
|
||||
self.mode = JoypadMode::Direction;
|
||||
} else {
|
||||
self.mode = JoypadMode::Both;
|
||||
|
|
|
@ -1,25 +1,17 @@
|
|||
pub struct Memory {
|
||||
pub wram: [u8; 0x2000],
|
||||
pub hram: [u8; 0xAF],
|
||||
|
||||
pub bootrom_disabled: bool,
|
||||
pub bootrom: [u8; 0x100],
|
||||
}
|
||||
|
||||
impl Memory {
|
||||
pub fn new(bootrom: Option<[u8; 0x100]>) -> Self {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
wram: [0; 0x2000],
|
||||
hram: [0; 0xAF],
|
||||
bootrom: bootrom.unwrap_or_else(|| [0u8; 0x100]),
|
||||
bootrom_disabled: bootrom.is_none(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_bootrom_disabled(&self) -> u8 {
|
||||
match self.bootrom_disabled {
|
||||
true => 0xFF,
|
||||
false => 0x00,
|
||||
}
|
||||
0xFF
|
||||
}
|
||||
}
|
||||
|
|
|
@ -273,7 +273,9 @@ pub struct PpuRegisters {
|
|||
pub scx: u8,
|
||||
pub ly: u8,
|
||||
cycles_since_last_ly_increment: u64,
|
||||
cycles_since_stat_mode_0: u64,
|
||||
cycles_since_last_last_mode_start_increment: [u64; 4],
|
||||
cycles_since_stat_mode_2: u64,
|
||||
pub lyc: u8,
|
||||
pub wy: u8,
|
||||
pub wx: u8,
|
||||
|
@ -306,6 +308,7 @@ pub struct Ppu {
|
|||
total_dots: u16,
|
||||
|
||||
is_irq_high: bool,
|
||||
window_counter: usize,
|
||||
}
|
||||
|
||||
impl Ppu {
|
||||
|
@ -320,16 +323,17 @@ impl Ppu {
|
|||
self.first_frame = true;
|
||||
self.first_line = true;
|
||||
self.total_dots = 0;
|
||||
self.window_counter = 0;
|
||||
}
|
||||
|
||||
pub fn start(&mut self, interrupts: &mut Interrupts) {
|
||||
self.set_scanline(interrupts, 0);
|
||||
}
|
||||
|
||||
pub fn new(bootrom_ran: bool) -> Self {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
registers: PpuRegisters {
|
||||
lcdc: (!bootrom_ran).then_some(0b1001_0001).unwrap_or_default(),
|
||||
lcdc: 0b1001_0001,
|
||||
stat_flags: StatFlags::default(),
|
||||
mode: PPUMode::HBlank,
|
||||
scy: 0,
|
||||
|
@ -341,6 +345,8 @@ impl Ppu {
|
|||
wy: 0,
|
||||
wx: 0,
|
||||
ly_lyc: true,
|
||||
cycles_since_stat_mode_0: 0,
|
||||
cycles_since_stat_mode_2: 0,
|
||||
},
|
||||
vram: [0; 0x2000],
|
||||
oam: [0; 0xA0],
|
||||
|
@ -359,6 +365,7 @@ impl Ppu {
|
|||
total_dots: 0,
|
||||
first_line: true,
|
||||
is_irq_high: false,
|
||||
window_counter: 0,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -383,6 +390,11 @@ impl Ppu {
|
|||
self.is_irq_high = stat_int || ly_eq_lyc_int || vblank_causing_oam_int_bug;
|
||||
|
||||
if !old_irq_high && self.is_irq_high {
|
||||
if stat_int && self.registers.mode == PPUMode::HBlank {
|
||||
self.registers.cycles_since_stat_mode_0 = 0;
|
||||
} else if stat_int && self.registers.mode == PPUMode::SearchingOAM {
|
||||
self.registers.cycles_since_stat_mode_2 = 0;
|
||||
}
|
||||
interrupts.write_if_lcd_stat(true);
|
||||
}
|
||||
}
|
||||
|
@ -415,7 +427,7 @@ impl Ppu {
|
|||
}
|
||||
|
||||
pub fn sprite_height(&self) -> SpriteHeight {
|
||||
match (self.registers.lcdc >> 2) == 1 {
|
||||
match (self.registers.lcdc >> 2) & 0b1 == 1 {
|
||||
false => SpriteHeight::Eight,
|
||||
true => SpriteHeight::Sixteen,
|
||||
}
|
||||
|
@ -546,11 +558,14 @@ impl Ppu {
|
|||
}
|
||||
|
||||
fn set_scanline(&mut self, interrupts: &mut Interrupts, scanline: u8) {
|
||||
// println!("LY incrementing: {} cycles since last incrementation. cycles since:
|
||||
// {:?}", self.registers.cycles_since_last_ly_increment,
|
||||
// self.registers.cycles_since_last_last_mode_start_increment.iter().
|
||||
// enumerate().map(|(idx, value)| { let idx_enum = match idx {
|
||||
// 0 => PPUMode::HBlank,
|
||||
// println!("LY incrementing: {} cycles since last incrementation and {} cycles
|
||||
// since last stat mode0 interrupt",
|
||||
// self.registers.cycles_since_last_ly_increment,
|
||||
// self.registers.cycles_since_stat_mode_0); println!("LY incrementing: {}
|
||||
// cycles since last incrementation. cycles since: {:?}", self.registers.
|
||||
// cycles_since_last_ly_increment, self.registers.
|
||||
// cycles_since_last_last_mode_start_increment.iter(). enumerate().map(|(idx,
|
||||
// value)| { let idx_enum = match idx { 0 => PPUMode::HBlank,
|
||||
// 1 => PPUMode::VBlank,
|
||||
// 2 => PPUMode::SearchingOAM,
|
||||
// 3 => PPUMode::TransferringData,
|
||||
|
@ -568,13 +583,16 @@ impl Ppu {
|
|||
pub fn tick(&mut self, dma_state: &DmaState, interrupts: &mut Interrupts) -> bool {
|
||||
if self.enabled() {
|
||||
self.registers.cycles_since_last_ly_increment += 1;
|
||||
self.registers.cycles_since_stat_mode_0 += 1;
|
||||
self.registers.cycles_since_stat_mode_2 += 1;
|
||||
match self.mode() {
|
||||
PPUMode::SearchingOAM => {
|
||||
self.registers.cycles_since_last_last_mode_start_increment[2] += 1;
|
||||
if self.current_dot == 0 {
|
||||
if self.registers.ly == 0 {
|
||||
self.wy_match = self.registers.wy == self.registers.ly;
|
||||
self.wy_match = false;
|
||||
}
|
||||
self.wy_match |= self.registers.wy == self.registers.ly;
|
||||
self.sprite_buffer = [None; 10];
|
||||
self.sprite_count = 0;
|
||||
}
|
||||
|
@ -679,6 +697,7 @@ impl Ppu {
|
|||
false
|
||||
}
|
||||
PPUMode::VBlank => {
|
||||
self.window_counter = 0;
|
||||
self.registers.cycles_since_last_last_mode_start_increment[1] += 1;
|
||||
self.current_dot += 1;
|
||||
if self.current_dot % 456 == 0 {
|
||||
|
@ -711,8 +730,9 @@ impl Ppu {
|
|||
|
||||
fn clear_line_sprite_fb(&mut self, real_line_number: usize) {
|
||||
assert!(real_line_number < FB_HEIGHT as usize);
|
||||
for value in 0..256 {
|
||||
let idx = ((real_line_number * FB_WIDTH as usize) + value) * PIXEL_SIZE;
|
||||
let y_fb_offset = (real_line_number * FB_WIDTH as usize) * PIXEL_SIZE;
|
||||
for value in 0..FB_WIDTH as usize {
|
||||
let idx = y_fb_offset + (value * PIXEL_SIZE);
|
||||
self.sprite_framebuffer[idx] = 0;
|
||||
self.sprite_framebuffer[idx + 1] = 0;
|
||||
self.sprite_framebuffer[idx + 2] = 0;
|
||||
|
@ -724,6 +744,7 @@ impl Ppu {
|
|||
let state = match self.current_draw_state.take() {
|
||||
Some(state) => state,
|
||||
None => {
|
||||
self.clear_line_sprite_fb(self.registers.ly as usize);
|
||||
let scrolling_delay = self.registers.scx % 8;
|
||||
self.dot_target += scrolling_delay as u16;
|
||||
if scrolling_delay != 0 {
|
||||
|
@ -733,7 +754,6 @@ impl Ppu {
|
|||
self.registers.scy,
|
||||
)
|
||||
} else {
|
||||
self.clear_line_sprite_fb(self.registers.ly as usize);
|
||||
LineDrawingState::BackgroundAndObjectFifo(
|
||||
self.registers.scx,
|
||||
self.registers.scy,
|
||||
|
@ -760,7 +780,6 @@ impl Ppu {
|
|||
false,
|
||||
self.registers.lcdc & 0b1 == 0,
|
||||
));
|
||||
self.clear_line_sprite_fb(self.registers.ly as usize);
|
||||
}
|
||||
}
|
||||
LineDrawingState::BackgroundAndObjectFifo(
|
||||
|
@ -770,8 +789,6 @@ impl Ppu {
|
|||
mut window_drawn,
|
||||
draw_only_sprites,
|
||||
) => {
|
||||
// assert_eq!(scy, self.registers.scy);
|
||||
// assert_eq!(scx, self.registers.scx);
|
||||
let wx_match = (drawn_pixels as usize + 7) >= self.registers.wx as usize;
|
||||
let scrolled_y = self.registers.ly.wrapping_add(scy) as usize;
|
||||
let scrolled_x = drawn_pixels.wrapping_add(scx) as usize;
|
||||
|
@ -795,14 +812,16 @@ impl Ppu {
|
|||
as usize;
|
||||
let window_y =
|
||||
self.registers.ly.wrapping_sub(self.registers.wy) as usize;
|
||||
let tilemap_idx = window_x / 8 + ((window_y / 8) * 32);
|
||||
let tilemap_idx = window_x / 8 + ((self.window_counter / 8) * 32);
|
||||
let tilemap_value = self.read_window_tile_map()[tilemap_idx];
|
||||
(bg_color_id, bg_color) = Self::parse_tile_color(
|
||||
let (window_color_id, window_color) = Self::parse_tile_color(
|
||||
self.read_bg_win_tile(tilemap_value),
|
||||
window_x % 8,
|
||||
window_y % 8,
|
||||
&self.bgp,
|
||||
);
|
||||
bg_color_id = window_color_id;
|
||||
bg_color = window_color;
|
||||
}
|
||||
|
||||
(bg_color_id, bg_color)
|
||||
|
@ -816,69 +835,82 @@ impl Ppu {
|
|||
self.framebuffer[framebuffer_offset + idx] = *byte;
|
||||
}
|
||||
|
||||
let mut sprite_buffer = Vec::new();
|
||||
for sprite_idx in 0..self.sprite_count {
|
||||
// WARNING: Sprites are not scrolled, they have an absolute position!
|
||||
let sprite = self.sprite_buffer[sprite_idx]
|
||||
.as_ref()
|
||||
.expect("within the sprite count there should be non `None`s");
|
||||
if (self.registers.lcdc >> 1) & 0b1 == 1 {
|
||||
let mut sprite_buffer: Vec<OAMEntry> = Vec::new();
|
||||
for sprite_idx in 0..self.sprite_count {
|
||||
// WARNING: Sprites are not scrolled, they have an absolute position!
|
||||
let sprite = self.sprite_buffer[sprite_idx]
|
||||
.as_ref()
|
||||
.expect("within the sprite count there should be no `None`s");
|
||||
|
||||
let x_valid =
|
||||
drawn_pixels < sprite.x && drawn_pixels.wrapping_add(8) >= sprite.x;
|
||||
let y_valid = self.registers.ly < sprite.y
|
||||
&& self.registers.ly.wrapping_add(16) >= sprite.y;
|
||||
let x_valid =
|
||||
drawn_pixels < sprite.x && drawn_pixels.wrapping_add(8) >= sprite.x;
|
||||
let y_valid = self.registers.ly < sprite.y
|
||||
&& self.registers.ly.wrapping_add(16) >= sprite.y;
|
||||
|
||||
if x_valid && y_valid {
|
||||
sprite_buffer.push(*sprite);
|
||||
}
|
||||
}
|
||||
|
||||
sprite_buffer.sort_by(|l, r| l.x.cmp(&r.x));
|
||||
|
||||
// TODO: Adjust mode length based on sprites
|
||||
for sprite in &sprite_buffer {
|
||||
let mut sprite_x_idx =
|
||||
drawn_pixels.wrapping_sub(sprite.x.wrapping_sub(8)) as usize;
|
||||
let mut sprite_y_idx =
|
||||
self.registers.ly.wrapping_sub(sprite.y.wrapping_sub(16)) as usize;
|
||||
|
||||
let tile_idx = match self.sprite_height() {
|
||||
SpriteHeight::Eight => sprite.tile_idx,
|
||||
SpriteHeight::Sixteen => match sprite_y_idx >= 8 {
|
||||
true => sprite.tile_idx | 1,
|
||||
false => sprite.tile_idx & 0xFE,
|
||||
},
|
||||
};
|
||||
|
||||
if sprite_y_idx >= 8 {
|
||||
sprite_y_idx -= 8;
|
||||
assert!(sprite_y_idx < 8);
|
||||
if !sprite_buffer.iter().any(|existing| existing.x == sprite.x)
|
||||
&& x_valid && y_valid
|
||||
{
|
||||
sprite_buffer.push(*sprite);
|
||||
}
|
||||
}
|
||||
|
||||
if sprite.y_flip() {
|
||||
sprite_y_idx = 7 - sprite_y_idx;
|
||||
}
|
||||
sprite_buffer.sort_by(|l, r| r.x.cmp(&l.x));
|
||||
|
||||
if sprite.x_flip() {
|
||||
sprite_x_idx = 7 - sprite_x_idx;
|
||||
}
|
||||
// TODO: Adjust mode length based on sprites
|
||||
for sprite in &sprite_buffer {
|
||||
let mut sprite_x_idx =
|
||||
drawn_pixels.wrapping_sub(sprite.x.wrapping_sub(8)) as usize;
|
||||
let mut sprite_y_idx =
|
||||
self.registers.ly.wrapping_sub(sprite.y.wrapping_sub(16)) as usize;
|
||||
|
||||
let color_id =
|
||||
self.read_obj_tile_colour_id(tile_idx, sprite_x_idx, sprite_y_idx);
|
||||
let palette = &self.obp[sprite.palette_number() as usize];
|
||||
let sprite_color = palette.color_from_2bit(color_id);
|
||||
if sprite.y_flip() {
|
||||
let sprite_offset = match self.sprite_height() {
|
||||
SpriteHeight::Eight => 7,
|
||||
SpriteHeight::Sixteen => 15,
|
||||
};
|
||||
sprite_y_idx = sprite_offset - sprite_y_idx;
|
||||
}
|
||||
|
||||
if color_id != 0 && !(sprite.covered_by_bg_window() && bg_color_id != 0) {
|
||||
self.sprite_framebuffer[framebuffer_offset + 0] = sprite_color.rgba()[0];
|
||||
self.sprite_framebuffer[framebuffer_offset + 1] = sprite_color.rgba()[1];
|
||||
self.sprite_framebuffer[framebuffer_offset + 2] = sprite_color.rgba()[2];
|
||||
self.sprite_framebuffer[framebuffer_offset + 3] = sprite_color.rgba()[3];
|
||||
if sprite.x_flip() {
|
||||
sprite_x_idx = 7 - sprite_x_idx;
|
||||
}
|
||||
|
||||
let tile_idx = match self.sprite_height() {
|
||||
SpriteHeight::Eight => sprite.tile_idx,
|
||||
SpriteHeight::Sixteen => match sprite_y_idx >= 8 {
|
||||
true => sprite.tile_idx | 1,
|
||||
false => sprite.tile_idx & 0xFE,
|
||||
},
|
||||
};
|
||||
|
||||
if sprite_y_idx >= 8 {
|
||||
sprite_y_idx -= 8;
|
||||
assert!(sprite_y_idx < 8);
|
||||
}
|
||||
|
||||
let color_id =
|
||||
self.read_obj_tile_colour_id(tile_idx, sprite_x_idx, sprite_y_idx);
|
||||
let palette = &self.obp[sprite.palette_number() as usize];
|
||||
let sprite_color = palette.color_from_2bit(color_id);
|
||||
|
||||
let sprite_covered = sprite.covered_by_bg_window() && bg_color_id != 0;
|
||||
|
||||
if color_id != 0 && !sprite_covered {
|
||||
let [r, g, b, a] = *sprite_color.rgba();
|
||||
|
||||
self.sprite_framebuffer[framebuffer_offset + 0] = r;
|
||||
self.sprite_framebuffer[framebuffer_offset + 1] = g;
|
||||
self.sprite_framebuffer[framebuffer_offset + 2] = b;
|
||||
self.sprite_framebuffer[framebuffer_offset + 3] = a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
drawn_pixels += 1;
|
||||
if drawn_pixels == FB_WIDTH as u8 {
|
||||
if window_drawn {
|
||||
self.window_counter += 1;
|
||||
self.dot_target += 6;
|
||||
}
|
||||
self.current_draw_state = Some(LineDrawingState::Finished);
|
||||
|
|
|
@ -8,13 +8,11 @@ pub mod ringbuffer;
|
|||
pub fn setup_test_emulator<const ROM_LENGTH: usize>(
|
||||
test_opcodes: [u8; ROM_LENGTH],
|
||||
) -> gameboy::Gameboy<std::io::Stdout> {
|
||||
let mut gameboy = gameboy::Gameboy::new(None, std::io::stdout());
|
||||
|
||||
let mut cartridge = gameboy::mapper::NoMBC { rom: [0u8; 0x8000], ram: None };
|
||||
|
||||
(&mut cartridge.rom[0x100..ROM_LENGTH + 0x100]).copy_from_slice(&test_opcodes);
|
||||
|
||||
gameboy.cartridge = Some(Box::new(cartridge));
|
||||
let mut gameboy = gameboy::Gameboy::new_with_cartridge(std::io::stdout(), Some(Box::new(cartridge)));
|
||||
|
||||
gameboy.tick_4(); // Prefetch instruction
|
||||
assert!(gameboy.registers.mem_read_hold.is_some()); // Assert prefetch happened and opcode is now sitting in the memory bus
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -18,7 +18,15 @@ pub struct CliArgs {
|
|||
|
||||
#[derive(Debug, Subcommand)]
|
||||
pub enum Operation {
|
||||
Test {
|
||||
TestFramebuffer {
|
||||
/// maximum M-cycles
|
||||
#[clap(short = 'm', long)]
|
||||
maximum_m_cycles: u64,
|
||||
/// path to expected framebuffer (RGBA)
|
||||
#[clap(short = 's', long)]
|
||||
expected_framebuffer: PathBuf,
|
||||
},
|
||||
TestSerial {
|
||||
/// maximum M-cycles
|
||||
#[clap(short = 'm', long)]
|
||||
maximum_m_cycles: u64,
|
||||
|
@ -26,7 +34,7 @@ pub enum Operation {
|
|||
#[clap(short = 's', long)]
|
||||
expected_serial: PathBuf,
|
||||
},
|
||||
GenerateOutput {
|
||||
GenerateOutputSerial {
|
||||
/// M-cycles to run for
|
||||
#[clap(short = 'm', long)]
|
||||
m_cycles: u64,
|
||||
|
@ -34,6 +42,14 @@ pub enum Operation {
|
|||
#[clap(short = 's', long)]
|
||||
expected_serial: PathBuf,
|
||||
},
|
||||
GenerateOutputFramebuffer {
|
||||
/// M-cycles to run for
|
||||
#[clap(short = 'm', long)]
|
||||
m_cycles: u64,
|
||||
/// path to expected framebuffer output
|
||||
#[clap(short = 's', long)]
|
||||
expected_framebuffer: PathBuf,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
|
@ -42,14 +58,16 @@ pub enum DmgTestError {
|
|||
RomNotFound,
|
||||
#[error("ROM reading error: {0}")]
|
||||
RomRead(std::io::Error),
|
||||
#[error("Missing serial output file")]
|
||||
SerialOutputFileNotFound,
|
||||
#[error("Error reading serial output file: {0}")]
|
||||
SerialOutputFileRead(std::io::Error),
|
||||
#[error("Error writing serial output file: {0}")]
|
||||
SerialOutputFileWrite(std::io::Error),
|
||||
#[error("Missing output file")]
|
||||
OutputFileNotFound,
|
||||
#[error("Error reading output file: {0}")]
|
||||
OutputFileRead(std::io::Error),
|
||||
#[error("Error writing output file: {0}")]
|
||||
OutputFileWrite(std::io::Error),
|
||||
#[error("Serial mismatch\nExpected: {0}\nFound: {1}")]
|
||||
SerialDifferent(String, String),
|
||||
#[error("Framebuffer mismatch")]
|
||||
FramebufferDifferent,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
@ -75,10 +93,10 @@ impl SerialWriter for SyncWriter {
|
|||
}
|
||||
}
|
||||
|
||||
fn generate_output(
|
||||
fn generate_output<const FRAMEBUFFER: bool>(
|
||||
rom: &Path,
|
||||
m_cycles: u64,
|
||||
expected_serial: &Path,
|
||||
expected: &Path,
|
||||
) -> Result<Duration, DmgTestError> {
|
||||
let rom = {
|
||||
if !rom.is_file() {
|
||||
|
@ -88,29 +106,39 @@ fn generate_output(
|
|||
};
|
||||
|
||||
let sync_writer = SyncWriter::new();
|
||||
let mut fb = None;
|
||||
|
||||
let mut gameboy = Gameboy::new(None, sync_writer.clone());
|
||||
gameboy.load_cartridge(rom);
|
||||
let mut gameboy = Gameboy::new(sync_writer.clone(), Some(rom));
|
||||
|
||||
let instant = std::time::Instant::now();
|
||||
|
||||
for _ in 0..m_cycles {
|
||||
gameboy.tick_4();
|
||||
let new_fb = gameboy.tick_4();
|
||||
|
||||
if FRAMEBUFFER && new_fb {
|
||||
fb = Some(gameboy.ppu.write_fb());
|
||||
}
|
||||
}
|
||||
|
||||
drop(gameboy);
|
||||
|
||||
let serial_content = sync_writer.into_inner();
|
||||
std::fs::write(expected_serial, &serial_content)
|
||||
.map_err(DmgTestError::SerialOutputFileWrite)?;
|
||||
if FRAMEBUFFER {
|
||||
std::fs::write(expected, &fb.unwrap())
|
||||
.map_err(DmgTestError::OutputFileWrite)?;
|
||||
} else {
|
||||
let serial_content = sync_writer.into_inner();
|
||||
std::fs::write(expected, &serial_content)
|
||||
.map_err(DmgTestError::OutputFileWrite)?;
|
||||
}
|
||||
|
||||
Ok(instant.elapsed())
|
||||
}
|
||||
|
||||
fn run_test(
|
||||
|
||||
fn run_test<const FRAMEBUFFER: bool>(
|
||||
rom: &Path,
|
||||
maximum_m_cycles: u64,
|
||||
expected_serial: &Path,
|
||||
expected: &Path,
|
||||
) -> Result<(u64, Duration), DmgTestError> {
|
||||
let rom = {
|
||||
if !rom.is_file() {
|
||||
|
@ -119,38 +147,51 @@ fn run_test(
|
|||
std::fs::read(rom).map_err(DmgTestError::RomRead)?
|
||||
};
|
||||
|
||||
let expected_serial = {
|
||||
if !expected_serial.is_file() {
|
||||
return Err(DmgTestError::SerialOutputFileNotFound);
|
||||
let expected = {
|
||||
if !expected.is_file() {
|
||||
return Err(DmgTestError::OutputFileNotFound);
|
||||
}
|
||||
std::fs::read(expected_serial).map_err(DmgTestError::SerialOutputFileRead)?
|
||||
std::fs::read(expected).map_err(DmgTestError::OutputFileRead)?
|
||||
};
|
||||
|
||||
if FRAMEBUFFER {
|
||||
assert_eq!(expected.len(), (meowgb_core::gameboy::ppu::FB_WIDTH as usize * meowgb_core::gameboy::ppu::FB_HEIGHT as usize) * meowgb_core::gameboy::ppu::PIXEL_SIZE as usize);
|
||||
}
|
||||
|
||||
let sync_writer = SyncWriter::new();
|
||||
|
||||
let mut gameboy = Gameboy::new(None, sync_writer.clone());
|
||||
gameboy.load_cartridge(rom);
|
||||
let mut gameboy = Gameboy::new(sync_writer.clone(), Some(rom));
|
||||
|
||||
let instant = Instant::now();
|
||||
|
||||
let mut cycle_counter = 0;
|
||||
|
||||
while cycle_counter < maximum_m_cycles {
|
||||
gameboy.tick_4();
|
||||
if FRAMEBUFFER {
|
||||
let redraw = gameboy.tick_4();
|
||||
|
||||
cycle_counter += 1;
|
||||
cycle_counter += 1;
|
||||
|
||||
if sync_writer.compare(&expected_serial) {
|
||||
return Ok((cycle_counter, instant.elapsed()));
|
||||
if redraw && expected == gameboy.ppu.write_fb() {
|
||||
return Ok((cycle_counter, instant.elapsed()));
|
||||
}
|
||||
} else {
|
||||
gameboy.tick_4();
|
||||
|
||||
cycle_counter += 1;
|
||||
|
||||
if sync_writer.compare(&expected) {
|
||||
return Ok((cycle_counter, instant.elapsed()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
drop(gameboy);
|
||||
|
||||
match sync_writer.compare(&expected_serial) {
|
||||
match sync_writer.compare(&expected) {
|
||||
true => Ok((cycle_counter, instant.elapsed())),
|
||||
false => Err(DmgTestError::SerialDifferent(
|
||||
expected_serial.into_iter().map(char::from).collect(),
|
||||
expected.into_iter().map(char::from).collect(),
|
||||
sync_writer.into_inner().into_iter().map(char::from).collect(),
|
||||
)),
|
||||
}
|
||||
|
@ -160,8 +201,8 @@ fn main() {
|
|||
let args = CliArgs::parse();
|
||||
|
||||
match args.operation {
|
||||
Operation::Test { maximum_m_cycles, expected_serial } => {
|
||||
match run_test(args.rom.as_path(), maximum_m_cycles, expected_serial.as_path()) {
|
||||
Operation::TestSerial { maximum_m_cycles, expected_serial } => {
|
||||
match run_test::<false>(args.rom.as_path(), maximum_m_cycles, expected_serial.as_path()) {
|
||||
Ok((m_cycles, duration)) => {
|
||||
println!("Success! Ran {} M-Cycles in {}ms", m_cycles, duration.as_millis());
|
||||
}
|
||||
|
@ -171,8 +212,8 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
Operation::GenerateOutput { m_cycles, expected_serial } => {
|
||||
match generate_output(args.rom.as_path(), m_cycles, expected_serial.as_path()) {
|
||||
Operation::GenerateOutputSerial { m_cycles, expected_serial } => {
|
||||
match generate_output::<false>(args.rom.as_path(), m_cycles, expected_serial.as_path()) {
|
||||
Ok(duration) => {
|
||||
println!("Successfully written serial output to {} in {} M-Cycles ({}ms), please verify it is correct", expected_serial.display(), m_cycles, duration.as_millis());
|
||||
}
|
||||
|
@ -182,5 +223,27 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
Operation::TestFramebuffer { maximum_m_cycles, expected_framebuffer } => {
|
||||
match run_test::<true>(args.rom.as_path(), maximum_m_cycles, expected_framebuffer.as_path()) {
|
||||
Ok((m_cycles, duration)) => {
|
||||
println!("Success! Ran {} M-Cycles in {}ms", m_cycles, duration.as_millis());
|
||||
}
|
||||
Err(why) => {
|
||||
eprintln!("{}", why);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
},
|
||||
Operation::GenerateOutputFramebuffer { m_cycles, expected_framebuffer } => {
|
||||
match generate_output::<true>(args.rom.as_path(), m_cycles, expected_framebuffer.as_path()) {
|
||||
Ok(duration) => {
|
||||
println!("Successfully written framebuffer output to {} in {} M-Cycles ({}ms), please verify it is correct", expected_framebuffer.display(), m_cycles, duration.as_millis());
|
||||
}
|
||||
Err(why) => {
|
||||
eprintln!("{}", why);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ use std::{
|
|||
use clap::Parser;
|
||||
use config::MeowGBConfig;
|
||||
use meowgb_core::gameboy::{
|
||||
bootrom::{verify_parse_bootrom, BootromParseError},
|
||||
serial::SerialWriter,
|
||||
Gameboy,
|
||||
};
|
||||
|
@ -23,9 +22,6 @@ use window::events::{EmulatorDebugEvent, EmulatorWindowEvent, GameboyEvent};
|
|||
#[derive(Debug, Parser)]
|
||||
/// DMG Emulator
|
||||
pub struct CliArgs {
|
||||
/// bootrom path
|
||||
#[clap(long)]
|
||||
pub bootrom: Option<PathBuf>,
|
||||
/// game path
|
||||
#[clap(long)]
|
||||
pub rom: Option<PathBuf>,
|
||||
|
@ -38,9 +34,6 @@ pub struct CliArgs {
|
|||
#[derive(Debug, Parser)]
|
||||
/// DMG Emulator
|
||||
pub struct CliArgs {
|
||||
/// bootrom path
|
||||
#[clap(long)]
|
||||
pub bootrom: Option<PathBuf>,
|
||||
/// game path
|
||||
#[clap(long)]
|
||||
pub rom: Option<PathBuf>,
|
||||
|
@ -48,8 +41,6 @@ pub struct CliArgs {
|
|||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum MeowGBError {
|
||||
#[error(transparent)]
|
||||
Bootrom(BootromParseError),
|
||||
#[error("Game Not Found")]
|
||||
GameNotFound,
|
||||
#[error("IO Error: {0}")]
|
||||
|
@ -71,12 +62,18 @@ fn real_main() -> Result<(), MeowGBError> {
|
|||
path.file_name().and_then(|name| name.to_str().map(str::to_string).map(Cow::Owned))
|
||||
});
|
||||
|
||||
let bootrom = match args.bootrom.as_deref() {
|
||||
Some(path) => Some(verify_parse_bootrom(path).map_err(MeowGBError::Bootrom)?),
|
||||
None => None,
|
||||
let rom = match args.rom.as_deref() {
|
||||
Some(rom) => {
|
||||
if !rom.is_file() {
|
||||
return Err(MeowGBError::GameNotFound);
|
||||
}
|
||||
|
||||
Some(std::fs::read(rom)?)
|
||||
},
|
||||
None => None
|
||||
};
|
||||
|
||||
let mut gameboy = WrappedGameboy::new(Gameboy::new(bootrom, std::io::stdout()));
|
||||
let mut gameboy = WrappedGameboy::new(Gameboy::new(std::io::stdout(), rom));
|
||||
#[cfg(feature = "debugger")]
|
||||
let dbg = args.debug;
|
||||
#[cfg(not(feature = "debugger"))]
|
||||
|
@ -87,7 +84,7 @@ fn real_main() -> Result<(), MeowGBError> {
|
|||
|
||||
let jh = std::thread::Builder::new()
|
||||
.name(String::from("mewmulator"))
|
||||
.spawn(move || run_gameboy(args, gameboy_2, gb_side_rx, gb_side_tx).unwrap())
|
||||
.spawn(move || run_gameboy(gameboy_2, gb_side_rx, gb_side_tx).unwrap())
|
||||
.unwrap();
|
||||
|
||||
window::run_window(
|
||||
|
@ -123,25 +120,10 @@ impl<W: SerialWriter> WrappedGameboy<W> {
|
|||
}
|
||||
|
||||
pub fn run_gameboy(
|
||||
args: CliArgs,
|
||||
gameboy_arc: Arc<RwLock<WrappedGameboy<impl SerialWriter>>>,
|
||||
rx: Receiver<EmulatorWindowEvent>,
|
||||
tx: Sender<GameboyEvent>,
|
||||
) -> Result<(), MeowGBError> {
|
||||
let mut gameboy = gameboy_arc.write().unwrap();
|
||||
|
||||
if let Some(rom) = args.rom {
|
||||
if !rom.is_file() {
|
||||
return Err(MeowGBError::GameNotFound);
|
||||
}
|
||||
|
||||
let rom = std::fs::read(rom.as_path())?;
|
||||
|
||||
gameboy.gameboy.load_cartridge(rom)
|
||||
}
|
||||
|
||||
drop(gameboy);
|
||||
|
||||
let mut goal = time::OffsetDateTime::now_utc() + time::Duration::milliseconds(1000 / 60);
|
||||
let mut frame_counter = 0;
|
||||
let mut debugging_tbf = None;
|
||||
|
|
304
run-test-roms.sh
304
run-test-roms.sh
|
@ -7,711 +7,731 @@ fi
|
|||
TEST_TOTAL=0
|
||||
TEST_SUCCESS=0
|
||||
|
||||
echo "Running test ROM ./test-roms/blargg/roms/cpu_instrs.gb"
|
||||
echo "Running test ROM ./test-roms/blargg/serial-roms/cpu_instrs.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/roms/cpu_instrs.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/cpu_instrs.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/serial-roms/cpu_instrs.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/cpu_instrs.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/blargg/roms/instr_timing.gb"
|
||||
echo "Running test ROM ./test-roms/blargg/serial-roms/instr_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/roms/instr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/instr_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/serial-roms/instr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/instr_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/blargg/roms/mem_timing.gb"
|
||||
echo "Running test ROM ./test-roms/blargg/serial-roms/mem_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/roms/mem_timing.gb test -m 100000000 -s meowgb-tests/expected_output/blargg/mem_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/blargg/serial-roms/mem_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/blargg/mem_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/add_sp_e_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/add_sp_e_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/add_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/add_sp_e_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/add_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/add_sp_e_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/boot_hwio-dmgABCmgb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_hwio-dmgABCmgb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_hwio-dmgABCmgb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_hwio-dmgABCmgb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/boot_regs-dmgABC.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/boot_regs-dmgABC.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/boot_regs-dmgABC.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/boot_regs-dmgABC.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/call_cc_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/call_cc_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/call_cc_timing2.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/call_cc_timing2.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_cc_timing2.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_cc_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_cc_timing2.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/call_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/call_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/call_timing2.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/call_timing2.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/call_timing2.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/call_timing2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/call_timing2.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/di_timing-GS.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/di_timing-GS.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/di_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/di_timing-GS.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/di_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/di_timing-GS.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/div_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/div_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/div_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/div_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/div_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/div_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ei_sequence.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ei_sequence.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_sequence.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_sequence.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_sequence.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_sequence.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ei_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ei_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ei_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ei_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ei_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/halt_ime0_ei.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_ei.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_ei.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/halt_ime0_nointr_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/halt_ime0_nointr_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_nointr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime0_nointr_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime0_nointr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime0_nointr_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/halt_ime1_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/halt_ime1_timing2-GS.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing2-GS.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing2-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/halt_ime1_timing2-GS.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/halt_ime1_timing2-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/halt_ime1_timing2-GS.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/if_ie_registers.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/if_ie_registers.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/if_ie_registers.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/if_ie_registers.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/if_ie_registers.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/if_ie_registers.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/intr_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/intr_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/intr_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/intr_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/jp_cc_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/jp_cc_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/jp_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/jp_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/jp_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/jp_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/jp_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/jp_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ld_hl_sp_e_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ld_hl_sp_e_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ld_hl_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ld_hl_sp_e_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ld_hl_sp_e_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ld_hl_sp_e_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/oam_dma_restart.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/oam_dma_restart.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_restart.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_restart.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_restart.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_restart.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/oam_dma_start.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/oam_dma_start.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_start.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_start.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_start.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_start.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/oam_dma_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/oam_dma_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/pop_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/pop_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/pop_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/pop_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/pop_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/pop_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/push_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/push_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/push_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/push_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/push_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/push_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/rapid_di_ei.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/rapid_di_ei.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rapid_di_ei.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rapid_di_ei.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rapid_di_ei.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rapid_di_ei.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ret_cc_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ret_cc_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_cc_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_cc_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ret_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ret_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ret_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ret_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ret_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ret_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/reti_intr_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/reti_intr_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_intr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_intr_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_intr_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_intr_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/reti_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/reti_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reti_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/reti_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/reti_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/reti_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/rst_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/rst_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rst_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/rst_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/rst_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/rst_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank1.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank1.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank1.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank1.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank2.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_bank2.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_bank2.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_bank2.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/bits_mode.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_mode.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_mode.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_mode.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/bits_ramg.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/bits_ramg.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/bits_ramg.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/bits_ramg.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/multicart_rom_8Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/multicart_rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/multicart_rom_8Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/ram_256kb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_256kb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_256kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_256kb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/ram_64kb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/ram_64kb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/ram_64kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/ram_64kb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_16Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_16Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_16Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_16Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_1Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_1Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_1Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_1Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_2Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_2Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_2Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_2Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_4Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_4Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_4Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_4Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_512kb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_512kb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_512kb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_512kb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/MBC1/rom_8Mb.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/MBC1/rom_8Mb.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/MBC1/rom_8Mb.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/MBC1/rom_8Mb.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/bits/mem_oam.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/bits/mem_oam.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/mem_oam.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/mem_oam.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/mem_oam.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/mem_oam.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/bits/reg_f.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/bits/reg_f.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/reg_f.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/reg_f.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/reg_f.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/reg_f.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/bits/unused_hwio-GS.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/bits/unused_hwio-GS.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/bits/unused_hwio-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/bits/unused_hwio-GS.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/bits/unused_hwio-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/bits/unused_hwio-GS.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/instr/daa.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/instr/daa.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/instr/daa.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/instr/daa.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/instr/daa.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/instr/daa.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/oam_dma/basic.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/oam_dma/basic.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/basic.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/basic.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/basic.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/basic.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/oam_dma/reg_read.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/oam_dma/reg_read.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma/reg_read.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/oam_dma/reg_read.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/oam_dma/reg_read.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/oam_dma/reg_read.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ppu/intr_1_2_timing-GS.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ppu/intr_1_2_timing-GS.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_1_2_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_1_2_timing-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_1_2_timing-GS.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ppu/intr_2_0_timing.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ppu/intr_2_0_timing.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/intr_2_0_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/intr_2_0_timing.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/intr_2_0_timing.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/intr_2_0_timing.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ppu/stat_irq_blocking.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ppu/stat_irq_blocking.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_irq_blocking.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_irq_blocking.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_irq_blocking.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_irq_blocking.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ppu/stat_lyc_onoff.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ppu/stat_lyc_onoff.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/stat_lyc_onoff.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/stat_lyc_onoff.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/stat_lyc_onoff.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/stat_lyc_onoff.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/ppu/vblank_stat_intr-GS.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/ppu/vblank_stat_intr-GS.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ppu/vblank_stat_intr-GS.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/ppu/vblank_stat_intr-GS.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/ppu/vblank_stat_intr-GS.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/div_write.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/div_write.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/div_write.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/div_write.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/div_write.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/div_write.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/rapid_toggle.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/rapid_toggle.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/rapid_toggle.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/rapid_toggle.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/rapid_toggle.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/rapid_toggle.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim00.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim00.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim00_div_trigger.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim00_div_trigger.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim00_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim00_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim00_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim00_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim01.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim01.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim01_div_trigger.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim01_div_trigger.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim01_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim01_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim01_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim01_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim10.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim10.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim10_div_trigger.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim10_div_trigger.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim10_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim10_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim10_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim10_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim11.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim11.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tim11_div_trigger.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tim11_div_trigger.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tim11_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tim11_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tim11_div_trigger.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tim11_div_trigger.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tima_reload.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tima_reload.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_reload.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_reload.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_reload.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_reload.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tima_write_reloading.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tima_write_reloading.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tima_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tima_write_reloading.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tima_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tima_write_reloading.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/roms/timer/tma_write_reloading.gb"
|
||||
echo "Running test ROM ./test-roms/mooneye-test-suite/serial-roms/timer/tma_write_reloading.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/timer/tma_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/mooneye-test-suite/timer/tma_write_reloading.bin 2>&1 > /dev/null) ; then
|
||||
if res=$(./target/release/meowgb-tests test-roms/mooneye-test-suite/serial-roms/timer/tma_write_reloading.gb test-serial -m 100000000 -s meowgb-tests/expected_output/serial/mooneye-test-suite/timer/tma_write_reloading.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/hacktix/framebuffer-roms/bully.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/bully.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/bully.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
fi
|
||||
|
||||
echo "Running test ROM ./test-roms/hacktix/framebuffer-roms/strikethrough.gb"
|
||||
|
||||
TEST_TOTAL=$((TEST_TOTAL + 1))
|
||||
|
||||
if res=$(./target/release/meowgb-tests test-roms/hacktix/framebuffer-roms/strikethrough.gb test-framebuffer -m 100000000 -s meowgb-tests/expected_output/framebuffer/hacktix/strikethrough.bin 2>&1 > /dev/null) ; then
|
||||
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||
else
|
||||
echo "Failed: $res"
|
||||
|
|
21
test-roms/hacktix/BullyGB-LICENSE
Normal file
21
test-roms/hacktix/BullyGB-LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2020 Optix
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
5
test-roms/hacktix/README.md
Normal file
5
test-roms/hacktix/README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Hacktix Tests
|
||||
|
||||
These test ROMs were written by "Hacktix", and are licensed by them under the MIT license, a copy of their license is in [BullyGB-LICENSE](./BullyGB-LICENSE) and [strikethrough-gb-LICENSE](./strikethrough-gb-LICENSE).
|
||||
|
||||
The original source code can be found at [https://github.com/Hacktix/strikethrough.gb](https://github.com/Hacktix/strikethrough.gb) and [https://github.com/Hacktix/BullyGB](https://github.com/Hacktix/BullyGB).
|
BIN
test-roms/hacktix/framebuffer-roms/bully.gb
Normal file
BIN
test-roms/hacktix/framebuffer-roms/bully.gb
Normal file
Binary file not shown.
BIN
test-roms/hacktix/framebuffer-roms/strikethrough.gb
Normal file
BIN
test-roms/hacktix/framebuffer-roms/strikethrough.gb
Normal file
Binary file not shown.
21
test-roms/hacktix/strikethrough-gb-LICENSE
Normal file
21
test-roms/hacktix/strikethrough-gb-LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021 Optix™
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue