diff --git a/.forgejo/workflows/action.yml b/.forgejo/workflows/action.yml index 911fbec..9f9f1de 100644 --- a/.forgejo/workflows/action.yml +++ b/.forgejo/workflows/action.yml @@ -161,3 +161,59 @@ jobs: - 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 diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 911fbec..9f9f1de 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -161,3 +161,59 @@ jobs: - 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 diff --git a/generate-action-and-tests.sh b/generate-action-and-tests.sh index c2ce06b..915520f 100755 --- a/generate-action-and-tests.sh +++ b/generate-action-and-tests.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/zsh GH_ACTION_OUTPUT_FILE=./.github/workflows/action.yml FJ_ACTION_OUTPUT_FILE=./.forgejo/workflows/action.yml TEST_SCRIPT_OUTPUT_FILE=./run-test-roms.sh @@ -50,7 +50,7 @@ cat >>$TEST_MD_FILE << EOF EOF -for full_f in ./test-roms/blargg/roms/* +for full_f in ./test-roms/blargg/roms/*.gb do f="${full_f##*/}"; f="${f%.*}"; TEST_CMD="./target/release/meowgb-tests test-roms/blargg/roms/$f.gb test -m 100000000 -s meowgb-tests/expected_output/$f.bin" @@ -86,7 +86,7 @@ cat >>$TEST_MD_FILE << EOF EOF -for full_f in ./test-roms/mooneye-test-suite/roms/* +for full_f in ./test-roms/mooneye-test-suite/roms/*.gb do f="${full_f##*/}"; f="${f%.*}"; TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/$f.gb test -m 100000000 -s meowgb-tests/expected_output/$f.bin" @@ -97,6 +97,42 @@ 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 Serial Output](./meowgb-tests/expected_output/MBC1/$f.bin) +EOF + + tee -a $GH_ACTION_OUTPUT_FILE $FJ_ACTION_OUTPUT_FILE >/dev/null << EOF + + - name: Run test ROM (mooneye-test-suite $f) + if: always() + run: $TEST_CMD +EOF +done + +cat >>$TEST_MD_FILE << EOF + +### MBC1 + +EOF + +for full_f in ./test-roms/mooneye-test-suite/roms/MBC1/**.gb +do + f="${full_f##*/}"; f="${f%.*}"; + TEST_CMD="./target/release/meowgb-tests test-roms/mooneye-test-suite/roms/MBC1/$f.gb test -m 100000000 -s meowgb-tests/expected_output/MBC1/$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 diff --git a/meowgb-core/src/gameboy.rs b/meowgb-core/src/gameboy.rs index 5fb54a4..7b76c9f 100644 --- a/meowgb-core/src/gameboy.rs +++ b/meowgb-core/src/gameboy.rs @@ -221,7 +221,10 @@ impl Gameboy { } 0xFF41 => self.ppu.set_stat(&mut self.interrupts, value), 0xFF42 => self.ppu.registers.scy = value, - 0xFF43 => self.ppu.registers.scx = value, + 0xFF43 => { + // println!("Setting SCX to {} from {}", value, self.ppu.registers.scx); + self.ppu.registers.scx = value; + }, 0xFF44 => {} // LY is read only 0xFF45 => self.ppu.set_lyc(&mut self.interrupts, value), 0xFF46 => self.dma.init_request(value), diff --git a/meowgb-core/src/gameboy/ppu.rs b/meowgb-core/src/gameboy/ppu.rs index 4ad8dc0..11b4b52 100644 --- a/meowgb-core/src/gameboy/ppu.rs +++ b/meowgb-core/src/gameboy/ppu.rs @@ -94,7 +94,7 @@ impl WrappedBuffer { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum PPUMode { /// Mode 0 - HBlank, + HBlank = 0, /// Mode 1 VBlank, /// Mode 2 @@ -272,6 +272,8 @@ pub struct PpuRegisters { pub scy: u8, pub scx: u8, pub ly: u8, + cycles_since_last_ly_increment: u64, + cycles_since_last_last_mode_start_increment: [u64; 4], pub lyc: u8, pub wy: u8, pub wx: u8, @@ -335,6 +337,8 @@ impl Ppu { scy: 0, scx: 0, ly: 0, + cycles_since_last_ly_increment: 0, + cycles_since_last_last_mode_start_increment: [0; 4], lyc: 0, wy: 0, wx: 0, @@ -517,6 +521,7 @@ impl Ppu { } pub fn set_mode(&mut self, interrupts: &mut Interrupts, mode: PPUMode) { + self.registers.cycles_since_last_last_mode_start_increment[mode.mode_flag() as usize] = 0; if mode == PPUMode::HBlank { assert_eq!(self.mode(), PPUMode::TransferringData); assert!(self.current_dot >= 172); @@ -545,6 +550,18 @@ impl Ppu { } fn set_scanline(&mut self, interrupts: &mut Interrupts, scanline: u8) { + // println!("LY incrementing: {} cycles since last incrementation. cycles since: {:?}", self.registers.cycles_since_last_ly_increment, self.registers.cycles_since_last_last_mode_start_increment.iter().enumerate().map(|(idx, value)| { + // let idx_enum = match idx { + // 0 => PPUMode::HBlank, + // 1 => PPUMode::VBlank, + // 2 => PPUMode::SearchingOAM, + // 3 => PPUMode::TransferringData, + // _ => unreachable!(), + // }; + + // (idx_enum, value) + // }).collect::>()); + self.registers.cycles_since_last_ly_increment = 0; self.registers.ly = scanline; self.handle_stat_irq(interrupts); self.registers.ly_lyc = self.registers.ly == self.registers.lyc; @@ -552,8 +569,10 @@ impl Ppu { pub fn tick(&mut self, interrupts: &mut Interrupts) -> bool { if self.enabled() { + self.registers.cycles_since_last_ly_increment += 1; match self.mode() { PPUMode::SearchingOAM => { + self.registers.cycles_since_last_last_mode_start_increment[2] += 1; if self.current_dot == 0 { if self.registers.ly == 0 { self.wy_match = self.registers.wy == self.registers.ly; @@ -600,6 +619,7 @@ impl Ppu { false } PPUMode::TransferringData => { + self.registers.cycles_since_last_last_mode_start_increment[3] += 1; if !self.first_frame && self.current_dot == 0 { assert_eq!(self.total_dots, 80); } @@ -617,11 +637,8 @@ impl Ppu { self.current_dot += 1; self.total_dots += 1; - // if self.current_dot == self.dot_target - 1 { - // self.handle_stat_irq(interrupts, true); - // } - if self.current_dot == self.dot_target { + // println!("Mode 3 DT: {}", self.dot_target); // assert_eq!(self.total_dots, match self.first_frame && self.first_line { // true => self.dot_target, // false => 80 + self.dot_target @@ -633,17 +650,24 @@ impl Ppu { false } PPUMode::HBlank => { - if self.first_line && self.current_dot == 64 && self.dot_target == 0 { + self.registers.cycles_since_last_last_mode_start_increment[0] += 1; + self.current_dot += 1; + self.total_dots += 1; + if !self.first_line { + assert_ne!(self.dot_target, 0); + } + if self.first_line && self.current_dot == 80 && self.dot_target == 0 { self.set_mode(interrupts, PPUMode::TransferringData); } else if self.dot_target != 0 && self.current_dot == self.dot_target { + // println!("Mode 0 DT: {}", self.dot_target); self.set_scanline(interrupts, self.registers.ly + 1); assert_eq!( self.total_dots, - match self.first_frame && self.first_line { - true => 456 - (80 - 64), - false => 456, - } + 456 // match self.first_frame && self.first_line { + // true => 456 - (80 - 64), + // false => 456, + // } ); self.total_dots = 0; self.first_line = false; @@ -654,18 +678,14 @@ impl Ppu { }; self.set_mode(interrupts, next_mode); - } else { - self.current_dot += 1; - self.total_dots += 1; - if !self.first_line { - assert_ne!(self.dot_target, 0); - } } false } PPUMode::VBlank => { - if self.current_dot != 0 && self.current_dot % 456 == 0 { + self.registers.cycles_since_last_last_mode_start_increment[1] += 1; + self.current_dot += 1; + if self.current_dot % 456 == 0 { if self.registers.ly >= 153 { self.set_scanline(interrupts, 0); self.set_mode(interrupts, PPUMode::SearchingOAM); @@ -673,12 +693,10 @@ impl Ppu { true } else { self.set_scanline(interrupts, self.registers.ly + 1); - self.current_dot += 1; false } } else { assert!(self.current_dot < 4560); - self.current_dot += 1; false } } @@ -711,8 +729,10 @@ impl Ppu { Some(state) => state, None => { let scrolling_delay = self.registers.scx % 8; + // println!("{}", scrolling_delay); self.dot_target += scrolling_delay as u16; if scrolling_delay != 0 { + // println!("Scrolling delay of {:#X} with scx of {}", scrolling_delay, self.registers.scx); LineDrawingState::BackgroundScrolling( scrolling_delay as usize, self.registers.scx, diff --git a/meowgb-tests/expected_output/basic.gb b/meowgb-tests/expected_output/MBC1/bits_bank1.bin similarity index 100% rename from meowgb-tests/expected_output/basic.gb rename to meowgb-tests/expected_output/MBC1/bits_bank1.bin diff --git a/meowgb-tests/expected_output/MBC1/bits_bank2.bin b/meowgb-tests/expected_output/MBC1/bits_bank2.bin new file mode 100644 index 0000000..2a02163 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/bits_bank2.bin @@ -0,0 +1 @@ + " \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/bits_mode.bin b/meowgb-tests/expected_output/MBC1/bits_mode.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/bits_mode.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/bits_ramg.bin b/meowgb-tests/expected_output/MBC1/bits_ramg.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/bits_ramg.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/multicart_rom_8Mb.bin b/meowgb-tests/expected_output/MBC1/multicart_rom_8Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/multicart_rom_8Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/ram_256kb.bin b/meowgb-tests/expected_output/MBC1/ram_256kb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/ram_256kb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/ram_64kb.bin b/meowgb-tests/expected_output/MBC1/ram_64kb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/ram_64kb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_16Mb.bin b/meowgb-tests/expected_output/MBC1/rom_16Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_16Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_1Mb.bin b/meowgb-tests/expected_output/MBC1/rom_1Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_1Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_2Mb.bin b/meowgb-tests/expected_output/MBC1/rom_2Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_2Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_4Mb.bin b/meowgb-tests/expected_output/MBC1/rom_4Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_4Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_512kb.bin b/meowgb-tests/expected_output/MBC1/rom_512kb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_512kb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/MBC1/rom_8Mb.bin b/meowgb-tests/expected_output/MBC1/rom_8Mb.bin new file mode 100644 index 0000000..6dac7b9 --- /dev/null +++ b/meowgb-tests/expected_output/MBC1/rom_8Mb.bin @@ -0,0 +1 @@ +BBBBBB \ No newline at end of file diff --git a/meowgb-tests/expected_output/vblank_stat_intr-GS.bin b/meowgb-tests/expected_output/vblank_stat_intr-GS.bin new file mode 100644 index 0000000..2a02163 --- /dev/null +++ b/meowgb-tests/expected_output/vblank_stat_intr-GS.bin @@ -0,0 +1 @@ + " \ No newline at end of file diff --git a/run-test-roms.sh b/run-test-roms.sh index f949bb6..e315aca 100755 --- a/run-test-roms.sh +++ b/run-test-roms.sh @@ -367,4 +367,144 @@ else echo "Failed: $res" fi +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb" + +TEST_TOTAL=$((TEST_TOTAL + 1)) + +if res=$(./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 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb" + +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/MBC1/bits_bank1.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb" + +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/MBC1/bits_bank2.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb" + +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/MBC1/bits_mode.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb" + +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/MBC1/bits_ramg.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb" + +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/MBC1/multicart_rom_8Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb" + +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/MBC1/ram_256kb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb" + +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/MBC1/ram_64kb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb" + +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/MBC1/rom_16Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb" + +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/MBC1/rom_1Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb" + +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/MBC1/rom_2Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb" + +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/MBC1/rom_4Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb" + +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/MBC1/rom_512kb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + +echo "Running test ROM ./test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb" + +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/MBC1/rom_8Mb.bin 2>&1 > /dev/null) ; then + TEST_SUCCESS=$((TEST_SUCCESS + 1)) +else + echo "Failed: $res" +fi + echo "Succeeded in running $TEST_SUCCESS/$TEST_TOTAL" diff --git a/test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb b/test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb new file mode 100644 index 0000000..2de8e23 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb b/test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb new file mode 100644 index 0000000..5c679c0 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb b/test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb new file mode 100644 index 0000000..2f5ee68 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb b/test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb new file mode 100644 index 0000000..312af5d Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb new file mode 100644 index 0000000..11c41a0 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb b/test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb new file mode 100644 index 0000000..562992b Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb b/test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb new file mode 100644 index 0000000..3e3c0a0 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb new file mode 100644 index 0000000..6dbb7c1 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb new file mode 100644 index 0000000..4ca3f20 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb new file mode 100644 index 0000000..c555794 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb new file mode 100644 index 0000000..899f835 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb new file mode 100644 index 0000000..b889455 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb b/test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb new file mode 100644 index 0000000..fef2463 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb differ diff --git a/test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb b/test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb new file mode 100644 index 0000000..b68caa7 Binary files /dev/null and b/test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb differ diff --git a/tests.md b/tests.md index f05fe0c..ade1e25 100644 --- a/tests.md +++ b/tests.md @@ -8,36 +8,53 @@ ## Mooneye Test Suite -* basic.gb - [ROM](./test-roms/mooneye-test-suite/roms/basic.gb) - [Expected Serial Output](./meowgb-tests/expected_output/basic.bin) -* boot_hwio-dmgABCmgb.gb - [ROM](./test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/boot_hwio-dmgABCmgb.bin) -* boot_regs-dmgABC.gb - [ROM](./test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb) - [Expected Serial Output](./meowgb-tests/expected_output/boot_regs-dmgABC.bin) -* daa.gb - [ROM](./test-roms/mooneye-test-suite/roms/daa.gb) - [Expected Serial Output](./meowgb-tests/expected_output/daa.bin) -* div_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/div_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/div_timing.bin) -* div_write.gb - [ROM](./test-roms/mooneye-test-suite/roms/div_write.gb) - [Expected Serial Output](./meowgb-tests/expected_output/div_write.bin) -* ei_sequence.gb - [ROM](./test-roms/mooneye-test-suite/roms/ei_sequence.gb) - [Expected Serial Output](./meowgb-tests/expected_output/ei_sequence.bin) -* ei_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/ei_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/ei_timing.bin) -* halt_ime0_ei.gb - [ROM](./test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb) - [Expected Serial Output](./meowgb-tests/expected_output/halt_ime0_ei.bin) -* intr_1_2_timing-GS.gb - [ROM](./test-roms/mooneye-test-suite/roms/intr_1_2_timing-GS.gb) - [Expected Serial Output](./meowgb-tests/expected_output/intr_1_2_timing-GS.bin) -* intr_2_0_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/intr_2_0_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/intr_2_0_timing.bin) -* mem_oam.gb - [ROM](./test-roms/mooneye-test-suite/roms/mem_oam.gb) - [Expected Serial Output](./meowgb-tests/expected_output/mem_oam.bin) -* oam_dma_restart.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_restart.gb) - [Expected Serial Output](./meowgb-tests/expected_output/oam_dma_restart.bin) -* oam_dma_start.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_start.gb) - [Expected Serial Output](./meowgb-tests/expected_output/oam_dma_start.bin) -* oam_dma_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/oam_dma_timing.bin) -* rapid_di_ei.gb - [ROM](./test-roms/mooneye-test-suite/roms/rapid_di_ei.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rapid_di_ei.bin) -* rapid_toggle.gb - [ROM](./test-roms/mooneye-test-suite/roms/rapid_toggle.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rapid_toggle.bin) -* reg_f.gb - [ROM](./test-roms/mooneye-test-suite/roms/reg_f.gb) - [Expected Serial Output](./meowgb-tests/expected_output/reg_f.bin) -* reg_read.gb - [ROM](./test-roms/mooneye-test-suite/roms/reg_read.gb) - [Expected Serial Output](./meowgb-tests/expected_output/reg_read.bin) -* stat_irq_blocking.gb - [ROM](./test-roms/mooneye-test-suite/roms/stat_irq_blocking.gb) - [Expected Serial Output](./meowgb-tests/expected_output/stat_irq_blocking.bin) -* stat_lyc_onoff.gb - [ROM](./test-roms/mooneye-test-suite/roms/stat_lyc_onoff.gb) - [Expected Serial Output](./meowgb-tests/expected_output/stat_lyc_onoff.bin) -* tim00.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim00.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim00.bin) -* tim00_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim00_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim00_div_trigger.bin) -* tim01.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim01.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim01.bin) -* tim01_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim01_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim01_div_trigger.bin) -* tim10.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim10.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim10.bin) -* tim10_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim10_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim10_div_trigger.bin) -* tim11.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim11.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim11.bin) -* tim11_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim11_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tim11_div_trigger.bin) -* tima_reload.gb - [ROM](./test-roms/mooneye-test-suite/roms/tima_reload.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tima_reload.bin) -* tima_write_reloading.gb - [ROM](./test-roms/mooneye-test-suite/roms/tima_write_reloading.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tima_write_reloading.bin) -* tma_write_reloading.gb - [ROM](./test-roms/mooneye-test-suite/roms/tma_write_reloading.gb) - [Expected Serial Output](./meowgb-tests/expected_output/tma_write_reloading.bin) -* unused_hwio-GS.gb - [ROM](./test-roms/mooneye-test-suite/roms/unused_hwio-GS.gb) - [Expected Serial Output](./meowgb-tests/expected_output/unused_hwio-GS.bin) +* basic.gb - [ROM](./test-roms/mooneye-test-suite/roms/basic.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/basic.bin) +* boot_hwio-dmgABCmgb.gb - [ROM](./test-roms/mooneye-test-suite/roms/boot_hwio-dmgABCmgb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/boot_hwio-dmgABCmgb.bin) +* boot_regs-dmgABC.gb - [ROM](./test-roms/mooneye-test-suite/roms/boot_regs-dmgABC.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/boot_regs-dmgABC.bin) +* daa.gb - [ROM](./test-roms/mooneye-test-suite/roms/daa.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/daa.bin) +* div_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/div_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/div_timing.bin) +* div_write.gb - [ROM](./test-roms/mooneye-test-suite/roms/div_write.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/div_write.bin) +* ei_sequence.gb - [ROM](./test-roms/mooneye-test-suite/roms/ei_sequence.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/ei_sequence.bin) +* ei_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/ei_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/ei_timing.bin) +* halt_ime0_ei.gb - [ROM](./test-roms/mooneye-test-suite/roms/halt_ime0_ei.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/halt_ime0_ei.bin) +* intr_1_2_timing-GS.gb - [ROM](./test-roms/mooneye-test-suite/roms/intr_1_2_timing-GS.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/intr_1_2_timing-GS.bin) +* intr_2_0_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/intr_2_0_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/intr_2_0_timing.bin) +* mem_oam.gb - [ROM](./test-roms/mooneye-test-suite/roms/mem_oam.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/mem_oam.bin) +* oam_dma_restart.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_restart.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/oam_dma_restart.bin) +* oam_dma_start.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_start.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/oam_dma_start.bin) +* oam_dma_timing.gb - [ROM](./test-roms/mooneye-test-suite/roms/oam_dma_timing.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/oam_dma_timing.bin) +* rapid_di_ei.gb - [ROM](./test-roms/mooneye-test-suite/roms/rapid_di_ei.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/rapid_di_ei.bin) +* rapid_toggle.gb - [ROM](./test-roms/mooneye-test-suite/roms/rapid_toggle.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/rapid_toggle.bin) +* reg_f.gb - [ROM](./test-roms/mooneye-test-suite/roms/reg_f.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/reg_f.bin) +* reg_read.gb - [ROM](./test-roms/mooneye-test-suite/roms/reg_read.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/reg_read.bin) +* stat_irq_blocking.gb - [ROM](./test-roms/mooneye-test-suite/roms/stat_irq_blocking.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/stat_irq_blocking.bin) +* stat_lyc_onoff.gb - [ROM](./test-roms/mooneye-test-suite/roms/stat_lyc_onoff.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/stat_lyc_onoff.bin) +* tim00.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim00.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim00.bin) +* tim00_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim00_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim00_div_trigger.bin) +* tim01.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim01.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim01.bin) +* tim01_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim01_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim01_div_trigger.bin) +* tim10.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim10.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim10.bin) +* tim10_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim10_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim10_div_trigger.bin) +* tim11.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim11.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim11.bin) +* tim11_div_trigger.gb - [ROM](./test-roms/mooneye-test-suite/roms/tim11_div_trigger.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tim11_div_trigger.bin) +* tima_reload.gb - [ROM](./test-roms/mooneye-test-suite/roms/tima_reload.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tima_reload.bin) +* tima_write_reloading.gb - [ROM](./test-roms/mooneye-test-suite/roms/tima_write_reloading.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tima_write_reloading.bin) +* tma_write_reloading.gb - [ROM](./test-roms/mooneye-test-suite/roms/tma_write_reloading.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/tma_write_reloading.bin) +* unused_hwio-GS.gb - [ROM](./test-roms/mooneye-test-suite/roms/unused_hwio-GS.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/unused_hwio-GS.bin) +* vblank_stat_intr-GS.gb - [ROM](./test-roms/mooneye-test-suite/roms/vblank_stat_intr-GS.gb) - [Expected Serial Output](./meowgb-tests/expected_output/MBC1/vblank_stat_intr-GS.bin) + +### MBC1 + +* bits_bank1.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/bits_bank1.gb) - [Expected Serial Output](./meowgb-tests/expected_output/bits_bank1.bin) +* bits_bank2.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/bits_bank2.gb) - [Expected Serial Output](./meowgb-tests/expected_output/bits_bank2.bin) +* bits_mode.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/bits_mode.gb) - [Expected Serial Output](./meowgb-tests/expected_output/bits_mode.bin) +* bits_ramg.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/bits_ramg.gb) - [Expected Serial Output](./meowgb-tests/expected_output/bits_ramg.bin) +* multicart_rom_8Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/multicart_rom_8Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/multicart_rom_8Mb.bin) +* ram_256kb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/ram_256kb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/ram_256kb.bin) +* ram_64kb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/ram_64kb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/ram_64kb.bin) +* rom_16Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_16Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_16Mb.bin) +* rom_1Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_1Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_1Mb.bin) +* rom_2Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_2Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_2Mb.bin) +* rom_4Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_4Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_4Mb.bin) +* rom_512kb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_512kb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_512kb.bin) +* rom_8Mb.gb - [ROM](./test-roms/mooneye-test-suite/roms/MBC1/rom_8Mb.gb) - [Expected Serial Output](./meowgb-tests/expected_output/rom_8Mb.bin)