From fb0772c67170febe5cdafd94a3f61d41f8caa037 Mon Sep 17 00:00:00 2001 From: Rekai Musuka Date: Sat, 2 Jan 2021 22:49:25 -0600 Subject: [PATCH] chore: remove duplicate code --- src/bus.rs | 61 +++--------------------------------------------------- 1 file changed, 3 insertions(+), 58 deletions(-) diff --git a/src/bus.rs b/src/bus.rs index ef7aeb1..970750b 100644 --- a/src/bus.rs +++ b/src/bus.rs @@ -150,66 +150,11 @@ impl Bus { } pub fn read_word(&self, addr: u16) -> u16 { - match addr { - 0x0000..=0x3FFF => { - // 16KB ROM bank 00 - if addr <= 0x00FF && self.boot.is_some() { - let boot = self.boot.unwrap(); - (boot[(addr + 1) as usize] as u16) << 8 | boot[addr as usize] as u16 - } else { - match &self.cartridge { - Some(cart) => cart.read_word(addr), - None => panic!("Tried to read from a non-existant cartridge"), - } - } - } - 0x4000..=0x7FFF => match &self.cartridge { - // 16KB ROM Bank 01 -> NN (switchable via MB) - Some(cart) => cart.read_word(addr), - None => panic!("Tried to read from a non-existant cartridge"), - }, - 0x8000..=0x9FFF => { - // 8KB Video RAM - (self.ppu.vram[((addr + 1) - 0x8000) as usize] as u16) << 8 - | self.ppu.vram[(addr - 0x8000) as usize] as u16 - } - 0xA000..=0xBFFF => { - // 8KB External RAM - unimplemented!("Unable to read {:#06X} in Extermal RAM", addr); - } - 0xC000..=0xCFFF => { - // 4KB Work RAM Bank 0 - unimplemented!("Unable to read {:#06X} in Work RAM Bank 0", addr); - } - 0xD000..=0xDFFF => { - // 4KB Work RAM Bank 1 -> N - unimplemented!("Unable to read {:#06X} in Work RAM Bank N", addr); - } - 0xE000..=0xFDFF => { - // Mirror of 0xC000 to 0xDDFF - unimplemented!("Unable to read {:#06X} in Restricted Mirror", addr); - } - 0xFE00..=0xFE9F => { - // Sprite Attrbute Table - unimplemented!("Unable to read {:#06X} in the Sprite Attribute Table", addr); - } - 0xFEA0..=0xFEFF => unimplemented!("{:#06X} is not allowed to be used", addr), - 0xFF00..=0xFF7F => { - // IO Registers - unimplemented!("Unable to read {:#06X} in I/O Registers", addr); - } - 0xFF80..=0xFFFE => { - // High RAM - unimplemented!("Unable to read {:#06X} in High RAM", addr); - } - 0xFFFF => { - // Interupts Enable Register - unimplemented!("Unable to read IE Register {:#06X} ", addr); - } - } + (self.read_byte(addr + 1) as u16) << 8 | self.read_byte(addr) as u16 } pub fn write_word(&mut self, addr: u16, word: u16) { - unimplemented!("Can't write {:#06X} to {:#06X}", word, addr) + self.write_byte(addr + 1, (word >> 8) as u8); + self.write_byte(addr, (word & 0x00FF) as u8); } }