From b7236e862a8cc2c72972248a358d991bef1f34a6 Mon Sep 17 00:00:00 2001 From: Franco Colmenarez Date: Thu, 4 Nov 2021 13:13:22 -0500 Subject: [PATCH] moonoeye if_ie_registers test --- src/bus.rs | 5 ++++- src/emulator.rs | 2 +- src/ppu.rs | 2 +- src/render.rs | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/bus.rs b/src/bus.rs index c55aba4..0dca296 100644 --- a/src/bus.rs +++ b/src/bus.rs @@ -59,7 +59,7 @@ pub struct Bus { impl Bus { pub fn new() -> Self { - let game_rom = match ROM::load_file("ignore/m3_scy_change.gb".to_string()) { + let game_rom = match ROM::load_file("ignore/mooneye/acceptance/if_ie_registers.gb".to_string()) { // let game_rom = match ROM::load_file("roms/cpu_instrs.gb".to_string()) { // let game_rom = match ROM::load_file("roms/cpu_instrs_individual/01-special.gb".to_string()) { // let game_rom = match ROM::load_file("roms/cpu_instrs_individual/02-interrupts.gb".to_string()) { @@ -110,6 +110,9 @@ impl Bus { pub fn read(&self, address: u16) -> u8 { if BANK_ZERO.in_range(address) || BANK_SWITCHABLE.in_range(address) { return self.game_rom.read(address); + + } else if address == INTERRUPT_ENABLE_ADDRESS || address == INTERRUPT_FLAG_ADDRESS { + return 0b11100000 | self.data[address as usize]; } self.data[address as usize] } diff --git a/src/emulator.rs b/src/emulator.rs index d998046..74f4b56 100644 --- a/src/emulator.rs +++ b/src/emulator.rs @@ -102,7 +102,7 @@ impl Emulator { pub fn run(&mut self, cpu_cycles: Cycles, frame_buffer: &mut [u8]) { self.cpu.reset_cycles(); - while self.cpu.get_cycles().0 <= cpu_cycles.0 { + while self.cpu.get_cycles().to_t() <= cpu_cycles.0 { self.cpu.run(&mut self.bus); if self.bus.reset_timer { self.bus.reset_timer = false; diff --git a/src/ppu.rs b/src/ppu.rs index c1ebe9e..d6ce0d4 100644 --- a/src/ppu.rs +++ b/src/ppu.rs @@ -120,7 +120,7 @@ impl PPU { pub fn do_cycles(&mut self, bus: &mut Bus, cycles: Cycles, frame_buffer: &mut [u8]) { let mut count = 0; - while count < cycles.0 { + while count < cycles.to_t() { self.cycle(bus, frame_buffer); count += 1; } diff --git a/src/render.rs b/src/render.rs index 50f1d66..08bd622 100644 --- a/src/render.rs +++ b/src/render.rs @@ -67,7 +67,7 @@ pub fn start_eventloop() { emulator.run(Cycles(70224), pixels.get_frame()); // emulator.draw(pixels.get_frame()); - // thread::sleep(time::Duration::from_millis(1000)); + // thread::sleep(time::Duration::from_millis(500)); window.request_redraw(); }, Event::RedrawRequested(_) => {