feat: implement more accurate memory bus conflicts with DMA #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
- push | |
jobs: | |
main_test: | |
name: Test changes to main | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
run: curl https://sh.rustup.rs -sSf | sh -s -- --profile minimal --default-toolchain stable -y && echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
- name: Run cargo tests (meowgb-core) | |
run: cargo test -p meowgb-core | |
- name: Build release (meowgb-tests) | |
run: cargo build -p meowgb-tests --release | |
- name: Run test ROM (blargg cpu_instrs) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/blargg/roms/cpu_instrs.gb test -m 100000000 -s meowgb-tests/expected_output/cpu_instrs.bin | |
- name: Run test ROM (blargg instr_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/blargg/roms/instr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/instr_timing.bin | |
- name: Run test ROM (blargg mem_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/blargg/roms/mem_timing.gb test -m 100000000 -s meowgb-tests/expected_output/mem_timing.bin | |
- name: Run test ROM (mooneye-test-suite add_sp_e_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/add_sp_e_timing.gb test -m 100000000 -s meowgb-tests/expected_output/add_sp_e_timing.bin | |
- name: Run test ROM (mooneye-test-suite basic) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/basic.gb test -m 100000000 -s meowgb-tests/expected_output/basic.bin | |
- name: Run test ROM (mooneye-test-suite boot_hwio-dmgABCmgb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb test -m 100000000 -s meowgb-tests/expected_output/boot_hwio-dmgABCmgb.bin | |
- name: Run test ROM (mooneye-test-suite boot_regs-dmgABC) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb test -m 100000000 -s meowgb-tests/expected_output/boot_regs-dmgABC.bin | |
- name: Run test ROM (mooneye-test-suite call_cc_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing.gb test -m 100000000 -s meowgb-tests/expected_output/call_cc_timing.bin | |
- name: Run test ROM (mooneye-test-suite call_cc_timing2) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_cc_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/call_cc_timing2.bin | |
- name: Run test ROM (mooneye-test-suite call_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing.gb test -m 100000000 -s meowgb-tests/expected_output/call_timing.bin | |
- name: Run test ROM (mooneye-test-suite call_timing2) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/call_timing2.gb test -m 100000000 -s meowgb-tests/expected_output/call_timing2.bin | |
- name: Run test ROM (mooneye-test-suite daa) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/daa.gb test -m 100000000 -s meowgb-tests/expected_output/daa.bin | |
- name: Run test ROM (mooneye-test-suite di_timing-GS) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/di_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/di_timing-GS.bin | |
- name: Run test ROM (mooneye-test-suite div_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/div_timing.gb test -m 100000000 -s meowgb-tests/expected_output/div_timing.bin | |
- name: Run test ROM (mooneye-test-suite div_write) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/div_write.gb test -m 100000000 -s meowgb-tests/expected_output/div_write.bin | |
- name: Run test ROM (mooneye-test-suite ei_sequence) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_sequence.gb test -m 100000000 -s meowgb-tests/expected_output/ei_sequence.bin | |
- name: Run test ROM (mooneye-test-suite ei_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/ei_timing.gb test -m 100000000 -s meowgb-tests/expected_output/ei_timing.bin | |
- name: Run test ROM (mooneye-test-suite halt_ime0_ei) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb test -m 100000000 -s meowgb-tests/expected_output/halt_ime0_ei.bin | |
- name: Run test ROM (mooneye-test-suite halt_ime0_nointr_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime0_nointr_timing.gb test -m 100000000 -s meowgb-tests/expected_output/halt_ime0_nointr_timing.bin | |
- name: Run test ROM (mooneye-test-suite halt_ime1_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing.gb test -m 100000000 -s meowgb-tests/expected_output/halt_ime1_timing.bin | |
- name: Run test ROM (mooneye-test-suite halt_ime1_timing2-GS) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/halt_ime1_timing2-GS.gb test -m 100000000 -s meowgb-tests/expected_output/halt_ime1_timing2-GS.bin | |
- name: Run test ROM (mooneye-test-suite intr_1_2_timing-GS) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/intr_1_2_timing-GS.gb test -m 100000000 -s meowgb-tests/expected_output/intr_1_2_timing-GS.bin | |
- name: Run test ROM (mooneye-test-suite intr_2_0_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/intr_2_0_timing.gb test -m 100000000 -s meowgb-tests/expected_output/intr_2_0_timing.bin | |
- name: Run test ROM (mooneye-test-suite mem_oam) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/mem_oam.gb test -m 100000000 -s meowgb-tests/expected_output/mem_oam.bin | |
- name: Run test ROM (mooneye-test-suite oam_dma_restart) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_restart.gb test -m 100000000 -s meowgb-tests/expected_output/oam_dma_restart.bin | |
- name: Run test ROM (mooneye-test-suite oam_dma_start) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_start.gb test -m 100000000 -s meowgb-tests/expected_output/oam_dma_start.bin | |
- name: Run test ROM (mooneye-test-suite oam_dma_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/oam_dma_timing.gb test -m 100000000 -s meowgb-tests/expected_output/oam_dma_timing.bin | |
- name: Run test ROM (mooneye-test-suite pop_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/pop_timing.gb test -m 100000000 -s meowgb-tests/expected_output/pop_timing.bin | |
- name: Run test ROM (mooneye-test-suite push_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/push_timing.gb test -m 100000000 -s meowgb-tests/expected_output/push_timing.bin | |
- name: Run test ROM (mooneye-test-suite rapid_di_ei) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rapid_di_ei.gb test -m 100000000 -s meowgb-tests/expected_output/rapid_di_ei.bin | |
- name: Run test ROM (mooneye-test-suite rapid_toggle) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rapid_toggle.gb test -m 100000000 -s meowgb-tests/expected_output/rapid_toggle.bin | |
- name: Run test ROM (mooneye-test-suite reg_f) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reg_f.gb test -m 100000000 -s meowgb-tests/expected_output/reg_f.bin | |
- name: Run test ROM (mooneye-test-suite reg_read) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/reg_read.gb test -m 100000000 -s meowgb-tests/expected_output/reg_read.bin | |
- name: Run test ROM (mooneye-test-suite rst_timing) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/rst_timing.gb test -m 100000000 -s meowgb-tests/expected_output/rst_timing.bin | |
- name: Run test ROM (mooneye-test-suite stat_irq_blocking) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/stat_irq_blocking.gb test -m 100000000 -s meowgb-tests/expected_output/stat_irq_blocking.bin | |
- name: Run test ROM (mooneye-test-suite stat_lyc_onoff) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/stat_lyc_onoff.gb test -m 100000000 -s meowgb-tests/expected_output/stat_lyc_onoff.bin | |
- name: Run test ROM (mooneye-test-suite tim00) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim00.gb test -m 100000000 -s meowgb-tests/expected_output/tim00.bin | |
- name: Run test ROM (mooneye-test-suite tim00_div_trigger) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim00_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/tim00_div_trigger.bin | |
- name: Run test ROM (mooneye-test-suite tim01) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim01.gb test -m 100000000 -s meowgb-tests/expected_output/tim01.bin | |
- name: Run test ROM (mooneye-test-suite tim01_div_trigger) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim01_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/tim01_div_trigger.bin | |
- name: Run test ROM (mooneye-test-suite tim10) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim10.gb test -m 100000000 -s meowgb-tests/expected_output/tim10.bin | |
- name: Run test ROM (mooneye-test-suite tim10_div_trigger) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim10_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/tim10_div_trigger.bin | |
- name: Run test ROM (mooneye-test-suite tim11) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim11.gb test -m 100000000 -s meowgb-tests/expected_output/tim11.bin | |
- name: Run test ROM (mooneye-test-suite tim11_div_trigger) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tim11_div_trigger.gb test -m 100000000 -s meowgb-tests/expected_output/tim11_div_trigger.bin | |
- name: Run test ROM (mooneye-test-suite tima_reload) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tima_reload.gb test -m 100000000 -s meowgb-tests/expected_output/tima_reload.bin | |
- name: Run test ROM (mooneye-test-suite tima_write_reloading) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tima_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/tima_write_reloading.bin | |
- name: Run test ROM (mooneye-test-suite tma_write_reloading) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/tma_write_reloading.gb test -m 100000000 -s meowgb-tests/expected_output/tma_write_reloading.bin | |
- name: Run test ROM (mooneye-test-suite unused_hwio-GS) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/unused_hwio-GS.gb test -m 100000000 -s meowgb-tests/expected_output/unused_hwio-GS.bin | |
- name: Run test ROM (mooneye-test-suite vblank_stat_intr-GS) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb test -m 100000000 -s meowgb-tests/expected_output/vblank_stat_intr-GS.bin | |
- name: Run test ROM (mooneye-test-suite bits_bank1) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/bits_bank1.bin | |
- name: Run test ROM (mooneye-test-suite bits_bank2) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/bits_bank2.bin | |
- name: Run test ROM (mooneye-test-suite bits_mode) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/bits_mode.bin | |
- name: Run test ROM (mooneye-test-suite bits_ramg) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/bits_ramg.bin | |
- name: Run test ROM (mooneye-test-suite multicart_rom_8Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/multicart_rom_8Mb.bin | |
- name: Run test ROM (mooneye-test-suite ram_256kb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/ram_256kb.bin | |
- name: Run test ROM (mooneye-test-suite ram_64kb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/ram_64kb.bin | |
- name: Run test ROM (mooneye-test-suite rom_16Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_16Mb.bin | |
- name: Run test ROM (mooneye-test-suite rom_1Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_1Mb.bin | |
- name: Run test ROM (mooneye-test-suite rom_2Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_2Mb.bin | |
- name: Run test ROM (mooneye-test-suite rom_4Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_4Mb.bin | |
- name: Run test ROM (mooneye-test-suite rom_512kb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_512kb.bin | |
- name: Run test ROM (mooneye-test-suite rom_8Mb) | |
if: always() | |
run: ./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/rom_8Mb.bin |