diff --git a/fpt/src/memory/lib.rs b/fpt/src/memory/lib.rs index c54cfe9..0f25900 100644 --- a/fpt/src/memory/lib.rs +++ b/fpt/src/memory/lib.rs @@ -123,8 +123,26 @@ impl Bus { self.memory().cartridge.borrow().read(address) } else if address == map::JOYP { self.joyp() - } else { + } else if map::IO_REGISTERS.contains(&address) { + self.memory().mem[address as Address] + } else if map::VRAM.contains(&address) { + self.memory().mem[address as Address] + } else if map::HRAM.contains(&address) { + self.memory().mem[address as Address] + } else if map::WRAM.contains(&address) { self.memory().mem[address as Address] + } else if address == map::IE { + self.memory().mem[address as Address] + } else if map::NOT_USABLE2.contains(&address) { + self.memory().mem[address as Address] + } else if map::OAM.contains(&address) { + self.memory().mem[address as Address] + } else if map::NOT_USABLE1.contains(&address) { + self.memory().mem[(address - 0x2000) as Address] + } else { + //self.memory().mem[address as Address] + dbg!(address); + panic!(); } } @@ -137,8 +155,27 @@ impl Bus { .cartridge .borrow_mut() .write(address, value); - } else { + } else if map::IO_REGISTERS.contains(&address) { + self.memory_mut().mem[address as Address] = value; + } else if map::VRAM.contains(&address) { + self.memory_mut().mem[address as Address] = value; + } else if map::HRAM.contains(&address) { + self.memory_mut().mem[address as Address] = value; + } else if map::WRAM.contains(&address) { self.memory_mut().mem[address as Address] = value; + } else if address == map::IE { + self.memory_mut().mem[address as Address] = value; + } else if map::NOT_USABLE2.contains(&address) { + self.memory_mut().mem[address as Address] = value; + } else if map::OAM.contains(&address) { + self.memory_mut().mem[address as Address] = value; + } else if map::NOT_USABLE1.contains(&address) { + self.memory_mut().mem[address - 0x2000 as Address] = value; + } else { + //self.memory_mut().mem[address as Address] = value; + dbg!(address); + dbg!(value); + panic!(); } } diff --git a/fpt/src/memory/map.rs b/fpt/src/memory/map.rs index 6db6deb..3f3debc 100644 --- a/fpt/src/memory/map.rs +++ b/fpt/src/memory/map.rs @@ -38,6 +38,8 @@ pub const OAM: MemoryRange = 0xFE00..0xFEA0; /// Not usable https://gbdev.io/pandocs/Memory_Map.html#fea0-feff-range pub const NOT_USABLE2: MemoryRange = 0xFEA0..0xFF00; +pub const IO_REGISTERS: MemoryRange = 0xFF00..0xFF80; + //------------------------------------------------------------------------- // I/O Registers //-------------------------------------------------------------------------