chore: remove duplicate code
This commit is contained in:
parent
fe74f80ddf
commit
fb0772c671
61
src/bus.rs
61
src/bus.rs
|
@ -150,66 +150,11 @@ impl Bus {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn read_word(&self, addr: u16) -> u16 {
|
pub fn read_word(&self, addr: u16) -> u16 {
|
||||||
match addr {
|
(self.read_byte(addr + 1) as u16) << 8 | self.read_byte(addr) as u16
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_word(&mut self, addr: u16, word: 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue