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)
|
- name: Run test ROM (blargg cpu_instrs)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (blargg instr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (blargg mem_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite add_sp_e_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite boot_hwio-dmgABCmgb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite boot_regs-dmgABC)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_cc_timing2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_timing2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite di_timing-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite div_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ei_sequence)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ei_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime0_ei)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime0_nointr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime1_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime1_timing2-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite if_ie_registers)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite intr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite jp_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite jp_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ld_hl_sp_e_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_restart)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_start)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite pop_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite push_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite rapid_di_ei)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ret_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ret_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite reti_intr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite reti_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite rst_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank1)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_mode)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_ramg)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/multicart_rom_8Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/ram_256kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/ram_64kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_16Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_1Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_2Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_4Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_512kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_8Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/mem_oam)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/reg_f)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/unused_hwio-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite instr/daa)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma/basic)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma/reg_read)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/intr_1_2_timing-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/intr_2_0_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/stat_irq_blocking)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/stat_lyc_onoff)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/vblank_stat_intr-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/div_write)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/rapid_toggle)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim00)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim00_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim01)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim01_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim10)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim10_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim11)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim11_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tima_reload)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tima_write_reloading)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tma_write_reloading)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (blargg cpu_instrs)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (blargg instr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (blargg mem_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite add_sp_e_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite boot_hwio-dmgABCmgb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite boot_regs-dmgABC)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_cc_timing2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite call_timing2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite di_timing-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite div_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ei_sequence)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ei_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime0_ei)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime0_nointr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime1_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite halt_ime1_timing2-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite if_ie_registers)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite intr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite jp_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite jp_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ld_hl_sp_e_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_restart)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_start)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite pop_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite push_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite rapid_di_ei)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ret_cc_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ret_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite reti_intr_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite reti_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite rst_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank1)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_bank2)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_mode)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/bits_ramg)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/multicart_rom_8Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/ram_256kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/ram_64kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_16Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_1Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_2Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_4Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_512kb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite MBC1/rom_8Mb)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/mem_oam)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/reg_f)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite bits/unused_hwio-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite instr/daa)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma/basic)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite oam_dma/reg_read)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/intr_1_2_timing-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/intr_2_0_timing)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/stat_irq_blocking)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/stat_lyc_onoff)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite ppu/vblank_stat_intr-GS)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/div_write)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/rapid_toggle)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim00)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim00_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim01)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim01_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim10)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim10_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim11)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tim11_div_trigger)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tima_reload)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tima_write_reloading)
|
||||||
if: always()
|
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)
|
- name: Run test ROM (mooneye-test-suite timer/tma_write_reloading)
|
||||||
if: always()
|
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"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
|
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]]
|
[[package]]
|
||||||
name = "block-sys"
|
name = "block-sys"
|
||||||
version = "0.1.0-beta.1"
|
version = "0.1.0-beta.1"
|
||||||
|
@ -451,15 +442,6 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cpufeatures"
|
|
||||||
version = "0.2.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc32fast"
|
name = "crc32fast"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
|
@ -469,16 +451,6 @@ dependencies = [
|
||||||
"cfg-if",
|
"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]]
|
[[package]]
|
||||||
name = "d3d12"
|
name = "d3d12"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
@ -534,16 +506,6 @@ dependencies = [
|
||||||
"powerfmt",
|
"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]]
|
[[package]]
|
||||||
name = "dispatch"
|
name = "dispatch"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
@ -728,16 +690,6 @@ dependencies = [
|
||||||
"percent-encoding",
|
"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]]
|
[[package]]
|
||||||
name = "gimli"
|
name = "gimli"
|
||||||
version = "0.28.1"
|
version = "0.28.1"
|
||||||
|
@ -1110,7 +1062,6 @@ dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"meowgb-opcode",
|
"meowgb-opcode",
|
||||||
"paste",
|
"paste",
|
||||||
"sha1",
|
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1654,17 +1605,6 @@ dependencies = [
|
||||||
"serde",
|
"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]]
|
[[package]]
|
||||||
name = "simd-adler32"
|
name = "simd-adler32"
|
||||||
version = "0.3.7"
|
version = "0.3.7"
|
||||||
|
@ -1902,12 +1842,6 @@ dependencies = [
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "typenum"
|
|
||||||
version = "1.17.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ultraviolet"
|
name = "ultraviolet"
|
||||||
version = "0.9.2"
|
version = "0.9.2"
|
||||||
|
|
|
@ -50,10 +50,10 @@ cat >>$TEST_MD_FILE << EOF
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
for full_f in ./test-roms/blargg/roms/*.gb
|
for full_f in ./test-roms/blargg/serial-roms/*.gb
|
||||||
do
|
do
|
||||||
f="${full_f##*/}"; f="${f%.*}";
|
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
|
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat >>$TEST_MD_FILE << 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
|
EOF
|
||||||
|
|
||||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||||
|
@ -86,10 +86,10 @@ cat >>$TEST_MD_FILE << EOF
|
||||||
|
|
||||||
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
|
do
|
||||||
f="${full_f##*/}"; f="${f%.*}";
|
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
|
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat >>$TEST_MD_FILE << 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
|
EOF
|
||||||
|
|
||||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||||
|
@ -116,7 +116,7 @@ EOF
|
||||||
EOF
|
EOF
|
||||||
done
|
done
|
||||||
|
|
||||||
for directory in ./test-roms/mooneye-test-suite/roms/*/
|
for directory in ./test-roms/mooneye-test-suite/serial-roms/*/
|
||||||
do
|
do
|
||||||
d=$(basename $directory)
|
d=$(basename $directory)
|
||||||
|
|
||||||
|
@ -126,10 +126,10 @@ do
|
||||||
|
|
||||||
EOF
|
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
|
do
|
||||||
f="${full_f##*/}"; f="${f%.*}";
|
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
|
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat >>$TEST_MD_FILE << 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
|
EOF
|
||||||
|
|
||||||
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF
|
||||||
|
@ -158,6 +158,42 @@ EOF
|
||||||
|
|
||||||
done
|
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
|
cat >>$TEST_SCRIPT_OUTPUT_FILE << EOF
|
||||||
|
|
||||||
echo "Succeeded in running \$TEST_SUCCESS/\$TEST_TOTAL"
|
echo "Succeeded in running \$TEST_SUCCESS/\$TEST_TOTAL"
|
||||||
|
|
|
@ -12,5 +12,4 @@ log = "0.4.14"
|
||||||
paste = "1.0.6"
|
paste = "1.0.6"
|
||||||
meowgb-opcode = { path = "../meowgb-opcode" }
|
meowgb-opcode = { path = "../meowgb-opcode" }
|
||||||
bmp = "0.5.0"
|
bmp = "0.5.0"
|
||||||
thiserror = "1.0.30"
|
thiserror = "1.0.30"
|
||||||
sha1 = { version = "0.10.6", features = ["std"] }
|
|
|
@ -1,4 +1,3 @@
|
||||||
pub mod bootrom;
|
|
||||||
pub mod cpu;
|
pub mod cpu;
|
||||||
pub mod dma;
|
pub mod dma;
|
||||||
pub mod interrupts;
|
pub mod interrupts;
|
||||||
|
@ -27,10 +26,12 @@ use self::{
|
||||||
#[cfg(feature = "instr-dbg")]
|
#[cfg(feature = "instr-dbg")]
|
||||||
use crate::ringbuffer::RingBuffer;
|
use crate::ringbuffer::RingBuffer;
|
||||||
|
|
||||||
|
pub type GenericCartridge = dyn Mapper + Send + Sync;
|
||||||
|
|
||||||
pub struct Gameboy<S: SerialWriter> {
|
pub struct Gameboy<S: SerialWriter> {
|
||||||
pub ppu: Ppu,
|
pub ppu: Ppu,
|
||||||
pub memory: Memory,
|
pub memory: Memory,
|
||||||
pub cartridge: Option<Box<dyn Mapper + Send + Sync>>,
|
pub cartridge: Option<Box<GenericCartridge>>,
|
||||||
pub interrupts: Interrupts,
|
pub interrupts: Interrupts,
|
||||||
pub timer: Timer,
|
pub timer: Timer,
|
||||||
pub registers: Registers,
|
pub registers: Registers,
|
||||||
|
@ -54,20 +55,21 @@ pub struct Gameboy<S: SerialWriter> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<S: SerialWriter> Gameboy<S> {
|
impl<S: SerialWriter> Gameboy<S> {
|
||||||
pub fn new(bootrom: Option<[u8; 0x100]>, serial_writer: S) -> Self {
|
pub fn new(serial_writer: S, rom: Option<Vec<u8>>) -> Self {
|
||||||
Self {
|
Self::new_with_cartridge(serial_writer, rom.map(Self::parse_rom))
|
||||||
memory: Memory::new(bootrom),
|
}
|
||||||
cartridge: None,
|
|
||||||
|
pub fn new_with_cartridge(serial_writer: S, cartridge: Option<Box<GenericCartridge>>) -> Self {
|
||||||
|
let mut out = Self {
|
||||||
|
memory: Memory::new(),
|
||||||
|
cartridge,
|
||||||
interrupts: Interrupts::new(),
|
interrupts: Interrupts::new(),
|
||||||
timer: Timer::new(),
|
timer: Timer::new(),
|
||||||
joypad: Joypad::new(),
|
joypad: Joypad::new(),
|
||||||
serial: Serial::new(serial_writer),
|
serial: Serial::new(serial_writer),
|
||||||
dma: DmaState::new(),
|
dma: DmaState::new(),
|
||||||
ppu: Ppu::new(bootrom.is_some()),
|
ppu: Ppu::new(),
|
||||||
registers: match bootrom.is_some() {
|
registers: Registers::default(),
|
||||||
true => Registers::default(),
|
|
||||||
false => Registers::post_rom(),
|
|
||||||
},
|
|
||||||
sound: Sound::new(),
|
sound: Sound::new(),
|
||||||
halt: false,
|
halt: false,
|
||||||
halt_bug: false,
|
halt_bug: false,
|
||||||
|
@ -78,18 +80,166 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
last_write: None,
|
last_write: None,
|
||||||
#[cfg(feature = "instr-dbg")]
|
#[cfg(feature = "instr-dbg")]
|
||||||
pc_history: RingBuffer::new(),
|
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 {
|
if bytes.len() < 0x150 {
|
||||||
panic!("Bad cartridge (len < 0x150)");
|
panic!("Bad cartridge (len < 0x150)");
|
||||||
}
|
}
|
||||||
match bytes[0x147] {
|
match bytes[0x147] {
|
||||||
0 => self.cartridge = Some(Box::new(NoMBC::new(bytes))),
|
0 => Box::new(NoMBC::new(bytes)),
|
||||||
1 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
1 => Box::new(MBC1::new(bytes)),
|
||||||
2 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
2 => Box::new(MBC1::new(bytes)),
|
||||||
3 => self.cartridge = Some(Box::new(MBC1::new(bytes))),
|
3 => Box::new(MBC1::new(bytes)),
|
||||||
other => unimplemented!("Cartidge type: {:#X}", other),
|
other => unimplemented!("Cartidge type: {:#X}", other),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,9 +255,9 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
|
|
||||||
pub fn tick(&mut self) -> bool {
|
pub fn tick(&mut self) -> bool {
|
||||||
if self.tick_count == 0 {
|
if self.tick_count == 0 {
|
||||||
|
self.dma.tick_dma(&mut self.ppu, &self.memory, self.cartridge.as_deref());
|
||||||
cpu::tick_cpu(self);
|
cpu::tick_cpu(self);
|
||||||
let redraw_requested = self.ppu.tick(&self.dma, &mut self.interrupts);
|
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.serial.tick(&mut self.interrupts);
|
||||||
self.timer.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,
|
0xFF4B => self.ppu.registers.wx = value,
|
||||||
0xFF4C..=0xFF4E => {} // Unused
|
0xFF4C..=0xFF4E => {} // Unused
|
||||||
0xFF4F => {} // CGB VRAM Bank Select
|
0xFF4F => {} // CGB VRAM Bank Select
|
||||||
0xFF50 => {
|
0xFF50 => {} // BROM lockout
|
||||||
if value & 0b1 == 1 {
|
|
||||||
self.memory.bootrom_disabled = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
0xFF51..=0xFF55 => {} // CGB VRAM DMA
|
0xFF51..=0xFF55 => {} // CGB VRAM DMA
|
||||||
0xFF56..=0xFF67 => {} // Unused
|
0xFF56..=0xFF67 => {} // Unused
|
||||||
0xFF68..=0xFF69 => {} // CGB BG/OBJ Palettes
|
0xFF68..=0xFF69 => {} // CGB BG/OBJ Palettes
|
||||||
|
@ -273,7 +419,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
/// debugging/testing purposes
|
/// debugging/testing purposes
|
||||||
pub fn debug_read_u8(&self, address: u16) -> u8 {
|
pub fn debug_read_u8(&self, address: u16) -> u8 {
|
||||||
match address {
|
match address {
|
||||||
0..=0xFF if !self.memory.bootrom_disabled => self.memory.bootrom[address as usize],
|
|
||||||
0..=0x7FFF => match self.cartridge.as_ref() {
|
0..=0x7FFF => match self.cartridge.as_ref() {
|
||||||
Some(mapper) => mapper.read_rom_u8(address),
|
Some(mapper) => mapper.read_rom_u8(address),
|
||||||
None => 0xFF,
|
None => 0xFF,
|
||||||
|
@ -298,7 +443,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
pub fn debug_write_u8(&mut self, address: u16, value: u8) {
|
pub fn debug_write_u8(&mut self, address: u16, value: u8) {
|
||||||
match address {
|
match address {
|
||||||
0..=0xFF if !self.memory.bootrom_disabled => {}
|
|
||||||
0..=0x7FFF => {
|
0..=0x7FFF => {
|
||||||
if let Some(mapper) = self.cartridge.as_mut() {
|
if let Some(mapper) = self.cartridge.as_mut() {
|
||||||
mapper.write_rom_u8(address, value)
|
mapper.write_rom_u8(address, value)
|
||||||
|
@ -330,13 +474,13 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
self.registers.mem_op_happened = true;
|
self.registers.mem_op_happened = true;
|
||||||
let value = match self.dma.is_conflict(address) {
|
let value = match self.dma.is_conflict(address) {
|
||||||
true => match 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),
|
0xFF00..=0xFF7F => self.cpu_read_io(address),
|
||||||
0xFF80..=0xFFFE => self.memory.hram[address as usize - 0xFF80],
|
0xFF80..=0xFFFE => self.memory.hram[address as usize - 0xFF80],
|
||||||
0xFFFF => self.interrupts.interrupt_enable,
|
0xFFFF => self.interrupts.interrupt_enable,
|
||||||
},
|
},
|
||||||
false => match address {
|
false => match address {
|
||||||
0..=0xFF if !self.memory.bootrom_disabled => self.memory.bootrom[address as usize],
|
|
||||||
0..=0x7FFF => match self.cartridge.as_ref() {
|
0..=0x7FFF => match self.cartridge.as_ref() {
|
||||||
Some(mapper) => mapper.read_rom_u8(address),
|
Some(mapper) => mapper.read_rom_u8(address),
|
||||||
None => 0xFF,
|
None => 0xFF,
|
||||||
|
@ -374,7 +518,6 @@ impl<S: SerialWriter> Gameboy<S> {
|
||||||
0xFFFF => self.interrupts.cpu_set_interrupt_enable(value),
|
0xFFFF => self.interrupts.cpu_set_interrupt_enable(value),
|
||||||
},
|
},
|
||||||
false => match address {
|
false => match address {
|
||||||
0..=0xFF if !self.memory.bootrom_disabled => {}
|
|
||||||
0..=0x7FFF => {
|
0..=0x7FFF => {
|
||||||
if let Some(mapper) = self.cartridge.as_mut() {
|
if let Some(mapper) = self.cartridge.as_mut() {
|
||||||
mapper.write_rom_u8(address, value)
|
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!(d, e);
|
||||||
define_register!(h, l);
|
define_register!(h, l);
|
||||||
|
|
||||||
pub fn post_rom() -> Self {
|
pub fn set_post_rom(&mut self) {
|
||||||
Self {
|
self.a = 0x01;
|
||||||
a: 0x01,
|
self.f = 0xB0;
|
||||||
f: 0xB0,
|
self.b = 0x00;
|
||||||
b: 0x00,
|
self.c = 0x13;
|
||||||
c: 0x13,
|
self.d = 0x00;
|
||||||
d: 0x00,
|
self.e = 0xD8;
|
||||||
e: 0xD8,
|
self.h = 0x01;
|
||||||
h: 0x01,
|
self.l = 0x4D;
|
||||||
l: 0x4D,
|
self.sp = 0xFFFE;
|
||||||
sp: 0xFFFE,
|
self.pc = 0x0100;
|
||||||
pc: 0x0100,
|
|
||||||
..Default::default()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This is just a helper function for macros utilizing ident pasting
|
/// 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)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum DmaMemoryBus {
|
pub enum DmaMemoryBus {
|
||||||
|
@ -36,7 +36,7 @@ impl DmaMemoryBus {
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct DmaState {
|
pub struct DmaState {
|
||||||
original_base: u8,
|
original_base: u8,
|
||||||
pub dma_in_progress: bool,
|
pub dma_in_progress: Option<u16>,
|
||||||
pub base: u8,
|
pub base: u8,
|
||||||
pub remaining_cycles: u8,
|
pub remaining_cycles: u8,
|
||||||
restarting: Option<(u8, bool)>,
|
restarting: Option<(u8, bool)>,
|
||||||
|
@ -48,7 +48,7 @@ impl DmaState {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn in_progress(&self) -> Option<DmaMemoryBus> {
|
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)),
|
true => Some(DmaMemoryBus::from_base(self.original_base)),
|
||||||
false => None,
|
false => None,
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ impl DmaState {
|
||||||
|
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
dma_in_progress: false,
|
dma_in_progress: None,
|
||||||
original_base: 0,
|
original_base: 0,
|
||||||
base: 0,
|
base: 0,
|
||||||
remaining_cycles: 0,
|
remaining_cycles: 0,
|
||||||
|
@ -69,11 +69,29 @@ impl DmaState {
|
||||||
self.restarting = Some((base, false));
|
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(
|
pub fn tick_dma(
|
||||||
&mut self,
|
&mut self,
|
||||||
ppu: &mut Ppu,
|
ppu: &mut Ppu,
|
||||||
memory: &Memory,
|
memory: &Memory,
|
||||||
cartridge: Option<&(dyn Mapper + Send + Sync)>,
|
cartridge: Option<&GenericCartridge>,
|
||||||
) {
|
) {
|
||||||
match self.restarting {
|
match self.restarting {
|
||||||
Some((base, false)) => self.restarting = Some((base, true)),
|
Some((base, false)) => self.restarting = Some((base, true)),
|
||||||
|
@ -85,30 +103,15 @@ impl DmaState {
|
||||||
None => {}
|
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 {
|
if self.remaining_cycles > 0 {
|
||||||
let offset = 0xA0 - self.remaining_cycles;
|
let value = self.read_next_byte(ppu, memory, cartridge);
|
||||||
let read_address = ((self.original_base as usize) << 8) | offset as usize;
|
ppu.dma_write_oam(0xA0 - self.remaining_cycles, value);
|
||||||
|
|
||||||
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);
|
|
||||||
self.remaining_cycles -= 1;
|
self.remaining_cycles -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ macro_rules! joypad_input {
|
||||||
($input:ident, $mode:ident) => {
|
($input:ident, $mode:ident) => {
|
||||||
paste::paste! {
|
paste::paste! {
|
||||||
pub fn [<set_ $input>](&mut self, val: bool) {
|
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.interrupt_triggered = true;
|
||||||
}
|
}
|
||||||
self.$input = val;
|
self.$input = val;
|
||||||
|
@ -17,7 +17,7 @@ macro_rules! joypad_input {
|
||||||
|
|
||||||
pub fn [<invert_ $input>](&mut self) {
|
pub fn [<invert_ $input>](&mut self) {
|
||||||
let val = !self.$input;
|
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.interrupt_triggered = true;
|
||||||
}
|
}
|
||||||
self.$input = val;
|
self.$input = val;
|
||||||
|
@ -86,9 +86,9 @@ impl Joypad {
|
||||||
joypad_input!(right, Direction);
|
joypad_input!(right, Direction);
|
||||||
|
|
||||||
pub fn cpu_write(&mut self, content: u8) {
|
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;
|
self.mode = JoypadMode::Action;
|
||||||
} else if (content >> 4) & 0b1 == 0 {
|
} else if (content >> 4) & 0b1 == 0 && (content >> 5) & 0b1 == 1 {
|
||||||
self.mode = JoypadMode::Direction;
|
self.mode = JoypadMode::Direction;
|
||||||
} else {
|
} else {
|
||||||
self.mode = JoypadMode::Both;
|
self.mode = JoypadMode::Both;
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
pub struct Memory {
|
pub struct Memory {
|
||||||
pub wram: [u8; 0x2000],
|
pub wram: [u8; 0x2000],
|
||||||
pub hram: [u8; 0xAF],
|
pub hram: [u8; 0xAF],
|
||||||
|
|
||||||
pub bootrom_disabled: bool,
|
|
||||||
pub bootrom: [u8; 0x100],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Memory {
|
impl Memory {
|
||||||
pub fn new(bootrom: Option<[u8; 0x100]>) -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
wram: [0; 0x2000],
|
wram: [0; 0x2000],
|
||||||
hram: [0; 0xAF],
|
hram: [0; 0xAF],
|
||||||
bootrom: bootrom.unwrap_or_else(|| [0u8; 0x100]),
|
|
||||||
bootrom_disabled: bootrom.is_none(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_bootrom_disabled(&self) -> u8 {
|
pub fn get_bootrom_disabled(&self) -> u8 {
|
||||||
match self.bootrom_disabled {
|
0xFF
|
||||||
true => 0xFF,
|
|
||||||
false => 0x00,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -273,7 +273,9 @@ pub struct PpuRegisters {
|
||||||
pub scx: u8,
|
pub scx: u8,
|
||||||
pub ly: u8,
|
pub ly: u8,
|
||||||
cycles_since_last_ly_increment: u64,
|
cycles_since_last_ly_increment: u64,
|
||||||
|
cycles_since_stat_mode_0: u64,
|
||||||
cycles_since_last_last_mode_start_increment: [u64; 4],
|
cycles_since_last_last_mode_start_increment: [u64; 4],
|
||||||
|
cycles_since_stat_mode_2: u64,
|
||||||
pub lyc: u8,
|
pub lyc: u8,
|
||||||
pub wy: u8,
|
pub wy: u8,
|
||||||
pub wx: u8,
|
pub wx: u8,
|
||||||
|
@ -306,6 +308,7 @@ pub struct Ppu {
|
||||||
total_dots: u16,
|
total_dots: u16,
|
||||||
|
|
||||||
is_irq_high: bool,
|
is_irq_high: bool,
|
||||||
|
window_counter: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Ppu {
|
impl Ppu {
|
||||||
|
@ -320,16 +323,17 @@ impl Ppu {
|
||||||
self.first_frame = true;
|
self.first_frame = true;
|
||||||
self.first_line = true;
|
self.first_line = true;
|
||||||
self.total_dots = 0;
|
self.total_dots = 0;
|
||||||
|
self.window_counter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn start(&mut self, interrupts: &mut Interrupts) {
|
pub fn start(&mut self, interrupts: &mut Interrupts) {
|
||||||
self.set_scanline(interrupts, 0);
|
self.set_scanline(interrupts, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(bootrom_ran: bool) -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
registers: PpuRegisters {
|
registers: PpuRegisters {
|
||||||
lcdc: (!bootrom_ran).then_some(0b1001_0001).unwrap_or_default(),
|
lcdc: 0b1001_0001,
|
||||||
stat_flags: StatFlags::default(),
|
stat_flags: StatFlags::default(),
|
||||||
mode: PPUMode::HBlank,
|
mode: PPUMode::HBlank,
|
||||||
scy: 0,
|
scy: 0,
|
||||||
|
@ -341,6 +345,8 @@ impl Ppu {
|
||||||
wy: 0,
|
wy: 0,
|
||||||
wx: 0,
|
wx: 0,
|
||||||
ly_lyc: true,
|
ly_lyc: true,
|
||||||
|
cycles_since_stat_mode_0: 0,
|
||||||
|
cycles_since_stat_mode_2: 0,
|
||||||
},
|
},
|
||||||
vram: [0; 0x2000],
|
vram: [0; 0x2000],
|
||||||
oam: [0; 0xA0],
|
oam: [0; 0xA0],
|
||||||
|
@ -359,6 +365,7 @@ impl Ppu {
|
||||||
total_dots: 0,
|
total_dots: 0,
|
||||||
first_line: true,
|
first_line: true,
|
||||||
is_irq_high: false,
|
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;
|
self.is_irq_high = stat_int || ly_eq_lyc_int || vblank_causing_oam_int_bug;
|
||||||
|
|
||||||
if !old_irq_high && self.is_irq_high {
|
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);
|
interrupts.write_if_lcd_stat(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -415,7 +427,7 @@ impl Ppu {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sprite_height(&self) -> SpriteHeight {
|
pub fn sprite_height(&self) -> SpriteHeight {
|
||||||
match (self.registers.lcdc >> 2) == 1 {
|
match (self.registers.lcdc >> 2) & 0b1 == 1 {
|
||||||
false => SpriteHeight::Eight,
|
false => SpriteHeight::Eight,
|
||||||
true => SpriteHeight::Sixteen,
|
true => SpriteHeight::Sixteen,
|
||||||
}
|
}
|
||||||
|
@ -546,11 +558,14 @@ impl Ppu {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_scanline(&mut self, interrupts: &mut Interrupts, scanline: u8) {
|
fn set_scanline(&mut self, interrupts: &mut Interrupts, scanline: u8) {
|
||||||
// println!("LY incrementing: {} cycles since last incrementation. cycles since:
|
// println!("LY incrementing: {} cycles since last incrementation and {} cycles
|
||||||
// {:?}", self.registers.cycles_since_last_ly_increment,
|
// since last stat mode0 interrupt",
|
||||||
// self.registers.cycles_since_last_last_mode_start_increment.iter().
|
// self.registers.cycles_since_last_ly_increment,
|
||||||
// enumerate().map(|(idx, value)| { let idx_enum = match idx {
|
// self.registers.cycles_since_stat_mode_0); println!("LY incrementing: {}
|
||||||
// 0 => PPUMode::HBlank,
|
// 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,
|
// 1 => PPUMode::VBlank,
|
||||||
// 2 => PPUMode::SearchingOAM,
|
// 2 => PPUMode::SearchingOAM,
|
||||||
// 3 => PPUMode::TransferringData,
|
// 3 => PPUMode::TransferringData,
|
||||||
|
@ -568,13 +583,16 @@ impl Ppu {
|
||||||
pub fn tick(&mut self, dma_state: &DmaState, interrupts: &mut Interrupts) -> bool {
|
pub fn tick(&mut self, dma_state: &DmaState, interrupts: &mut Interrupts) -> bool {
|
||||||
if self.enabled() {
|
if self.enabled() {
|
||||||
self.registers.cycles_since_last_ly_increment += 1;
|
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() {
|
match self.mode() {
|
||||||
PPUMode::SearchingOAM => {
|
PPUMode::SearchingOAM => {
|
||||||
self.registers.cycles_since_last_last_mode_start_increment[2] += 1;
|
self.registers.cycles_since_last_last_mode_start_increment[2] += 1;
|
||||||
if self.current_dot == 0 {
|
if self.current_dot == 0 {
|
||||||
if self.registers.ly == 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_buffer = [None; 10];
|
||||||
self.sprite_count = 0;
|
self.sprite_count = 0;
|
||||||
}
|
}
|
||||||
|
@ -679,6 +697,7 @@ impl Ppu {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
PPUMode::VBlank => {
|
PPUMode::VBlank => {
|
||||||
|
self.window_counter = 0;
|
||||||
self.registers.cycles_since_last_last_mode_start_increment[1] += 1;
|
self.registers.cycles_since_last_last_mode_start_increment[1] += 1;
|
||||||
self.current_dot += 1;
|
self.current_dot += 1;
|
||||||
if self.current_dot % 456 == 0 {
|
if self.current_dot % 456 == 0 {
|
||||||
|
@ -711,8 +730,9 @@ impl Ppu {
|
||||||
|
|
||||||
fn clear_line_sprite_fb(&mut self, real_line_number: usize) {
|
fn clear_line_sprite_fb(&mut self, real_line_number: usize) {
|
||||||
assert!(real_line_number < FB_HEIGHT as usize);
|
assert!(real_line_number < FB_HEIGHT as usize);
|
||||||
for value in 0..256 {
|
let y_fb_offset = (real_line_number * FB_WIDTH as usize) * PIXEL_SIZE;
|
||||||
let idx = ((real_line_number * FB_WIDTH as usize) + value) * 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] = 0;
|
||||||
self.sprite_framebuffer[idx + 1] = 0;
|
self.sprite_framebuffer[idx + 1] = 0;
|
||||||
self.sprite_framebuffer[idx + 2] = 0;
|
self.sprite_framebuffer[idx + 2] = 0;
|
||||||
|
@ -724,6 +744,7 @@ impl Ppu {
|
||||||
let state = match self.current_draw_state.take() {
|
let state = match self.current_draw_state.take() {
|
||||||
Some(state) => state,
|
Some(state) => state,
|
||||||
None => {
|
None => {
|
||||||
|
self.clear_line_sprite_fb(self.registers.ly as usize);
|
||||||
let scrolling_delay = self.registers.scx % 8;
|
let scrolling_delay = self.registers.scx % 8;
|
||||||
self.dot_target += scrolling_delay as u16;
|
self.dot_target += scrolling_delay as u16;
|
||||||
if scrolling_delay != 0 {
|
if scrolling_delay != 0 {
|
||||||
|
@ -733,7 +754,6 @@ impl Ppu {
|
||||||
self.registers.scy,
|
self.registers.scy,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
self.clear_line_sprite_fb(self.registers.ly as usize);
|
|
||||||
LineDrawingState::BackgroundAndObjectFifo(
|
LineDrawingState::BackgroundAndObjectFifo(
|
||||||
self.registers.scx,
|
self.registers.scx,
|
||||||
self.registers.scy,
|
self.registers.scy,
|
||||||
|
@ -760,7 +780,6 @@ impl Ppu {
|
||||||
false,
|
false,
|
||||||
self.registers.lcdc & 0b1 == 0,
|
self.registers.lcdc & 0b1 == 0,
|
||||||
));
|
));
|
||||||
self.clear_line_sprite_fb(self.registers.ly as usize);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LineDrawingState::BackgroundAndObjectFifo(
|
LineDrawingState::BackgroundAndObjectFifo(
|
||||||
|
@ -770,8 +789,6 @@ impl Ppu {
|
||||||
mut window_drawn,
|
mut window_drawn,
|
||||||
draw_only_sprites,
|
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 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_y = self.registers.ly.wrapping_add(scy) as usize;
|
||||||
let scrolled_x = drawn_pixels.wrapping_add(scx) as usize;
|
let scrolled_x = drawn_pixels.wrapping_add(scx) as usize;
|
||||||
|
@ -795,14 +812,16 @@ impl Ppu {
|
||||||
as usize;
|
as usize;
|
||||||
let window_y =
|
let window_y =
|
||||||
self.registers.ly.wrapping_sub(self.registers.wy) as usize;
|
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];
|
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),
|
self.read_bg_win_tile(tilemap_value),
|
||||||
window_x % 8,
|
window_x % 8,
|
||||||
window_y % 8,
|
window_y % 8,
|
||||||
&self.bgp,
|
&self.bgp,
|
||||||
);
|
);
|
||||||
|
bg_color_id = window_color_id;
|
||||||
|
bg_color = window_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
(bg_color_id, bg_color)
|
(bg_color_id, bg_color)
|
||||||
|
@ -816,69 +835,82 @@ impl Ppu {
|
||||||
self.framebuffer[framebuffer_offset + idx] = *byte;
|
self.framebuffer[framebuffer_offset + idx] = *byte;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut sprite_buffer = Vec::new();
|
if (self.registers.lcdc >> 1) & 0b1 == 1 {
|
||||||
for sprite_idx in 0..self.sprite_count {
|
let mut sprite_buffer: Vec<OAMEntry> = Vec::new();
|
||||||
// WARNING: Sprites are not scrolled, they have an absolute position!
|
for sprite_idx in 0..self.sprite_count {
|
||||||
let sprite = self.sprite_buffer[sprite_idx]
|
// WARNING: Sprites are not scrolled, they have an absolute position!
|
||||||
.as_ref()
|
let sprite = self.sprite_buffer[sprite_idx]
|
||||||
.expect("within the sprite count there should be non `None`s");
|
.as_ref()
|
||||||
|
.expect("within the sprite count there should be no `None`s");
|
||||||
|
|
||||||
let x_valid =
|
let x_valid =
|
||||||
drawn_pixels < sprite.x && drawn_pixels.wrapping_add(8) >= sprite.x;
|
drawn_pixels < sprite.x && drawn_pixels.wrapping_add(8) >= sprite.x;
|
||||||
let y_valid = self.registers.ly < sprite.y
|
let y_valid = self.registers.ly < sprite.y
|
||||||
&& self.registers.ly.wrapping_add(16) >= sprite.y;
|
&& self.registers.ly.wrapping_add(16) >= sprite.y;
|
||||||
|
|
||||||
if x_valid && y_valid {
|
if !sprite_buffer.iter().any(|existing| existing.x == sprite.x)
|
||||||
sprite_buffer.push(*sprite);
|
&& 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.y_flip() {
|
sprite_buffer.sort_by(|l, r| r.x.cmp(&l.x));
|
||||||
sprite_y_idx = 7 - sprite_y_idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
if sprite.x_flip() {
|
// TODO: Adjust mode length based on sprites
|
||||||
sprite_x_idx = 7 - sprite_x_idx;
|
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 =
|
if sprite.y_flip() {
|
||||||
self.read_obj_tile_colour_id(tile_idx, sprite_x_idx, sprite_y_idx);
|
let sprite_offset = match self.sprite_height() {
|
||||||
let palette = &self.obp[sprite.palette_number() as usize];
|
SpriteHeight::Eight => 7,
|
||||||
let sprite_color = palette.color_from_2bit(color_id);
|
SpriteHeight::Sixteen => 15,
|
||||||
|
};
|
||||||
|
sprite_y_idx = sprite_offset - sprite_y_idx;
|
||||||
|
}
|
||||||
|
|
||||||
if color_id != 0 && !(sprite.covered_by_bg_window() && bg_color_id != 0) {
|
if sprite.x_flip() {
|
||||||
self.sprite_framebuffer[framebuffer_offset + 0] = sprite_color.rgba()[0];
|
sprite_x_idx = 7 - sprite_x_idx;
|
||||||
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];
|
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;
|
drawn_pixels += 1;
|
||||||
if drawn_pixels == FB_WIDTH as u8 {
|
if drawn_pixels == FB_WIDTH as u8 {
|
||||||
if window_drawn {
|
if window_drawn {
|
||||||
|
self.window_counter += 1;
|
||||||
self.dot_target += 6;
|
self.dot_target += 6;
|
||||||
}
|
}
|
||||||
self.current_draw_state = Some(LineDrawingState::Finished);
|
self.current_draw_state = Some(LineDrawingState::Finished);
|
||||||
|
|
|
@ -8,13 +8,11 @@ pub mod ringbuffer;
|
||||||
pub fn setup_test_emulator<const ROM_LENGTH: usize>(
|
pub fn setup_test_emulator<const ROM_LENGTH: usize>(
|
||||||
test_opcodes: [u8; ROM_LENGTH],
|
test_opcodes: [u8; ROM_LENGTH],
|
||||||
) -> gameboy::Gameboy<std::io::Stdout> {
|
) -> 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 };
|
let mut cartridge = gameboy::mapper::NoMBC { rom: [0u8; 0x8000], ram: None };
|
||||||
|
|
||||||
(&mut cartridge.rom[0x100..ROM_LENGTH + 0x100]).copy_from_slice(&test_opcodes);
|
(&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
|
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
|
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)]
|
#[derive(Debug, Subcommand)]
|
||||||
pub enum Operation {
|
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
|
/// maximum M-cycles
|
||||||
#[clap(short = 'm', long)]
|
#[clap(short = 'm', long)]
|
||||||
maximum_m_cycles: u64,
|
maximum_m_cycles: u64,
|
||||||
|
@ -26,7 +34,7 @@ pub enum Operation {
|
||||||
#[clap(short = 's', long)]
|
#[clap(short = 's', long)]
|
||||||
expected_serial: PathBuf,
|
expected_serial: PathBuf,
|
||||||
},
|
},
|
||||||
GenerateOutput {
|
GenerateOutputSerial {
|
||||||
/// M-cycles to run for
|
/// M-cycles to run for
|
||||||
#[clap(short = 'm', long)]
|
#[clap(short = 'm', long)]
|
||||||
m_cycles: u64,
|
m_cycles: u64,
|
||||||
|
@ -34,6 +42,14 @@ pub enum Operation {
|
||||||
#[clap(short = 's', long)]
|
#[clap(short = 's', long)]
|
||||||
expected_serial: PathBuf,
|
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)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
|
@ -42,14 +58,16 @@ pub enum DmgTestError {
|
||||||
RomNotFound,
|
RomNotFound,
|
||||||
#[error("ROM reading error: {0}")]
|
#[error("ROM reading error: {0}")]
|
||||||
RomRead(std::io::Error),
|
RomRead(std::io::Error),
|
||||||
#[error("Missing serial output file")]
|
#[error("Missing output file")]
|
||||||
SerialOutputFileNotFound,
|
OutputFileNotFound,
|
||||||
#[error("Error reading serial output file: {0}")]
|
#[error("Error reading output file: {0}")]
|
||||||
SerialOutputFileRead(std::io::Error),
|
OutputFileRead(std::io::Error),
|
||||||
#[error("Error writing serial output file: {0}")]
|
#[error("Error writing output file: {0}")]
|
||||||
SerialOutputFileWrite(std::io::Error),
|
OutputFileWrite(std::io::Error),
|
||||||
#[error("Serial mismatch\nExpected: {0}\nFound: {1}")]
|
#[error("Serial mismatch\nExpected: {0}\nFound: {1}")]
|
||||||
SerialDifferent(String, String),
|
SerialDifferent(String, String),
|
||||||
|
#[error("Framebuffer mismatch")]
|
||||||
|
FramebufferDifferent,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -75,10 +93,10 @@ impl SerialWriter for SyncWriter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_output(
|
fn generate_output<const FRAMEBUFFER: bool>(
|
||||||
rom: &Path,
|
rom: &Path,
|
||||||
m_cycles: u64,
|
m_cycles: u64,
|
||||||
expected_serial: &Path,
|
expected: &Path,
|
||||||
) -> Result<Duration, DmgTestError> {
|
) -> Result<Duration, DmgTestError> {
|
||||||
let rom = {
|
let rom = {
|
||||||
if !rom.is_file() {
|
if !rom.is_file() {
|
||||||
|
@ -88,29 +106,39 @@ fn generate_output(
|
||||||
};
|
};
|
||||||
|
|
||||||
let sync_writer = SyncWriter::new();
|
let sync_writer = SyncWriter::new();
|
||||||
|
let mut fb = None;
|
||||||
|
|
||||||
let mut gameboy = Gameboy::new(None, sync_writer.clone());
|
let mut gameboy = Gameboy::new(sync_writer.clone(), Some(rom));
|
||||||
gameboy.load_cartridge(rom);
|
|
||||||
|
|
||||||
let instant = std::time::Instant::now();
|
let instant = std::time::Instant::now();
|
||||||
|
|
||||||
for _ in 0..m_cycles {
|
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);
|
drop(gameboy);
|
||||||
|
|
||||||
let serial_content = sync_writer.into_inner();
|
if FRAMEBUFFER {
|
||||||
std::fs::write(expected_serial, &serial_content)
|
std::fs::write(expected, &fb.unwrap())
|
||||||
.map_err(DmgTestError::SerialOutputFileWrite)?;
|
.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())
|
Ok(instant.elapsed())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_test(
|
|
||||||
|
fn run_test<const FRAMEBUFFER: bool>(
|
||||||
rom: &Path,
|
rom: &Path,
|
||||||
maximum_m_cycles: u64,
|
maximum_m_cycles: u64,
|
||||||
expected_serial: &Path,
|
expected: &Path,
|
||||||
) -> Result<(u64, Duration), DmgTestError> {
|
) -> Result<(u64, Duration), DmgTestError> {
|
||||||
let rom = {
|
let rom = {
|
||||||
if !rom.is_file() {
|
if !rom.is_file() {
|
||||||
|
@ -119,38 +147,51 @@ fn run_test(
|
||||||
std::fs::read(rom).map_err(DmgTestError::RomRead)?
|
std::fs::read(rom).map_err(DmgTestError::RomRead)?
|
||||||
};
|
};
|
||||||
|
|
||||||
let expected_serial = {
|
let expected = {
|
||||||
if !expected_serial.is_file() {
|
if !expected.is_file() {
|
||||||
return Err(DmgTestError::SerialOutputFileNotFound);
|
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 sync_writer = SyncWriter::new();
|
||||||
|
|
||||||
let mut gameboy = Gameboy::new(None, sync_writer.clone());
|
let mut gameboy = Gameboy::new(sync_writer.clone(), Some(rom));
|
||||||
gameboy.load_cartridge(rom);
|
|
||||||
|
|
||||||
let instant = Instant::now();
|
let instant = Instant::now();
|
||||||
|
|
||||||
let mut cycle_counter = 0;
|
let mut cycle_counter = 0;
|
||||||
|
|
||||||
while cycle_counter < maximum_m_cycles {
|
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) {
|
if redraw && expected == gameboy.ppu.write_fb() {
|
||||||
return Ok((cycle_counter, instant.elapsed()));
|
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);
|
drop(gameboy);
|
||||||
|
|
||||||
match sync_writer.compare(&expected_serial) {
|
match sync_writer.compare(&expected) {
|
||||||
true => Ok((cycle_counter, instant.elapsed())),
|
true => Ok((cycle_counter, instant.elapsed())),
|
||||||
false => Err(DmgTestError::SerialDifferent(
|
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(),
|
sync_writer.into_inner().into_iter().map(char::from).collect(),
|
||||||
)),
|
)),
|
||||||
}
|
}
|
||||||
|
@ -160,8 +201,8 @@ fn main() {
|
||||||
let args = CliArgs::parse();
|
let args = CliArgs::parse();
|
||||||
|
|
||||||
match args.operation {
|
match args.operation {
|
||||||
Operation::Test { maximum_m_cycles, expected_serial } => {
|
Operation::TestSerial { maximum_m_cycles, expected_serial } => {
|
||||||
match run_test(args.rom.as_path(), maximum_m_cycles, expected_serial.as_path()) {
|
match run_test::<false>(args.rom.as_path(), maximum_m_cycles, expected_serial.as_path()) {
|
||||||
Ok((m_cycles, duration)) => {
|
Ok((m_cycles, duration)) => {
|
||||||
println!("Success! Ran {} M-Cycles in {}ms", m_cycles, duration.as_millis());
|
println!("Success! Ran {} M-Cycles in {}ms", m_cycles, duration.as_millis());
|
||||||
}
|
}
|
||||||
|
@ -171,8 +212,8 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Operation::GenerateOutput { m_cycles, expected_serial } => {
|
Operation::GenerateOutputSerial { m_cycles, expected_serial } => {
|
||||||
match generate_output(args.rom.as_path(), m_cycles, expected_serial.as_path()) {
|
match generate_output::<false>(args.rom.as_path(), m_cycles, expected_serial.as_path()) {
|
||||||
Ok(duration) => {
|
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());
|
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 clap::Parser;
|
||||||
use config::MeowGBConfig;
|
use config::MeowGBConfig;
|
||||||
use meowgb_core::gameboy::{
|
use meowgb_core::gameboy::{
|
||||||
bootrom::{verify_parse_bootrom, BootromParseError},
|
|
||||||
serial::SerialWriter,
|
serial::SerialWriter,
|
||||||
Gameboy,
|
Gameboy,
|
||||||
};
|
};
|
||||||
|
@ -23,9 +22,6 @@ use window::events::{EmulatorDebugEvent, EmulatorWindowEvent, GameboyEvent};
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
/// DMG Emulator
|
/// DMG Emulator
|
||||||
pub struct CliArgs {
|
pub struct CliArgs {
|
||||||
/// bootrom path
|
|
||||||
#[clap(long)]
|
|
||||||
pub bootrom: Option<PathBuf>,
|
|
||||||
/// game path
|
/// game path
|
||||||
#[clap(long)]
|
#[clap(long)]
|
||||||
pub rom: Option<PathBuf>,
|
pub rom: Option<PathBuf>,
|
||||||
|
@ -38,9 +34,6 @@ pub struct CliArgs {
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
/// DMG Emulator
|
/// DMG Emulator
|
||||||
pub struct CliArgs {
|
pub struct CliArgs {
|
||||||
/// bootrom path
|
|
||||||
#[clap(long)]
|
|
||||||
pub bootrom: Option<PathBuf>,
|
|
||||||
/// game path
|
/// game path
|
||||||
#[clap(long)]
|
#[clap(long)]
|
||||||
pub rom: Option<PathBuf>,
|
pub rom: Option<PathBuf>,
|
||||||
|
@ -48,8 +41,6 @@ pub struct CliArgs {
|
||||||
|
|
||||||
#[derive(Debug, thiserror::Error)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
pub enum MeowGBError {
|
pub enum MeowGBError {
|
||||||
#[error(transparent)]
|
|
||||||
Bootrom(BootromParseError),
|
|
||||||
#[error("Game Not Found")]
|
#[error("Game Not Found")]
|
||||||
GameNotFound,
|
GameNotFound,
|
||||||
#[error("IO Error: {0}")]
|
#[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))
|
path.file_name().and_then(|name| name.to_str().map(str::to_string).map(Cow::Owned))
|
||||||
});
|
});
|
||||||
|
|
||||||
let bootrom = match args.bootrom.as_deref() {
|
let rom = match args.rom.as_deref() {
|
||||||
Some(path) => Some(verify_parse_bootrom(path).map_err(MeowGBError::Bootrom)?),
|
Some(rom) => {
|
||||||
None => None,
|
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")]
|
#[cfg(feature = "debugger")]
|
||||||
let dbg = args.debug;
|
let dbg = args.debug;
|
||||||
#[cfg(not(feature = "debugger"))]
|
#[cfg(not(feature = "debugger"))]
|
||||||
|
@ -87,7 +84,7 @@ fn real_main() -> Result<(), MeowGBError> {
|
||||||
|
|
||||||
let jh = std::thread::Builder::new()
|
let jh = std::thread::Builder::new()
|
||||||
.name(String::from("mewmulator"))
|
.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();
|
.unwrap();
|
||||||
|
|
||||||
window::run_window(
|
window::run_window(
|
||||||
|
@ -123,25 +120,10 @@ impl<W: SerialWriter> WrappedGameboy<W> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn run_gameboy(
|
pub fn run_gameboy(
|
||||||
args: CliArgs,
|
|
||||||
gameboy_arc: Arc<RwLock<WrappedGameboy<impl SerialWriter>>>,
|
gameboy_arc: Arc<RwLock<WrappedGameboy<impl SerialWriter>>>,
|
||||||
rx: Receiver<EmulatorWindowEvent>,
|
rx: Receiver<EmulatorWindowEvent>,
|
||||||
tx: Sender<GameboyEvent>,
|
tx: Sender<GameboyEvent>,
|
||||||
) -> Result<(), MeowGBError> {
|
) -> 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 goal = time::OffsetDateTime::now_utc() + time::Duration::milliseconds(1000 / 60);
|
||||||
let mut frame_counter = 0;
|
let mut frame_counter = 0;
|
||||||
let mut debugging_tbf = None;
|
let mut debugging_tbf = None;
|
||||||
|
|
304
run-test-roms.sh
304
run-test-roms.sh
|
@ -7,711 +7,731 @@ fi
|
||||||
TEST_TOTAL=0
|
TEST_TOTAL=0
|
||||||
TEST_SUCCESS=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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
echo "Failed: $res"
|
||||||
fi
|
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))
|
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))
|
TEST_SUCCESS=$((TEST_SUCCESS + 1))
|
||||||
else
|
else
|
||||||
echo "Failed: $res"
|
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