From 80ea6b2c1fef9c906d60d1f382d0a36c0628ea88 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Wed, 11 Oct 2023 17:13:49 -0600 Subject: [PATCH] paper mario fixes --- src/device/pi.rs | 5 +++-- src/device/tlb.rs | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/device/pi.rs b/src/device/pi.rs index d7437581..13fac556 100644 --- a/src/device/pi.rs +++ b/src/device/pi.rs @@ -122,8 +122,9 @@ pub fn get_handler(address: u32) -> PiHandler { }; if address >= device::memory::MM_CART_ROM as u32 { if address >= device::memory::MM_DOM1_ADDR3 as u32 { - panic!("unimplemented handler") - //RW(cart, cart_dom3); + // this should result in all 0's being read/written + handler.read = device::cart_rom::dma_read; + handler.write = device::cart_rom::dma_write; } else { handler.read = device::cart_rom::dma_read; handler.write = device::cart_rom::dma_write; diff --git a/src/device/tlb.rs b/src/device/tlb.rs index 32108616..8574c8c2 100644 --- a/src/device/tlb.rs +++ b/src/device/tlb.rs @@ -238,9 +238,11 @@ pub fn tlb_map(device: &mut device::Device, index: u64) { pub fn get_physical_address( device: &mut device::Device, - address: u64, + mut address: u64, access_type: device::memory::AccessType, ) -> (u64, bool, bool) { + address &= 0xffffffff; + if access_type == device::memory::AccessType::Write { if device.cpu.cop0.tlb_lut_w[(address >> 12) as usize].address != 0 { return (