diff --git a/src/main.rs b/src/main.rs index 60a89e6..6c9d123 100644 --- a/src/main.rs +++ b/src/main.rs @@ -124,7 +124,7 @@ fn main() { }; let mut window = Window::new( - format!("{}", rom.get_title()).as_str(), + format!("{} on MBC: {}", rom.get_title(), rom.mbc_type()).as_str(), WIDTH * FACTOR, HEIGHT * FACTOR, WindowOptions::default(), diff --git a/src/processor/memory/rom.rs b/src/processor/memory/rom.rs index 2b0c494..293da98 100644 --- a/src/processor/memory/rom.rs +++ b/src/processor/memory/rom.rs @@ -43,4 +43,8 @@ impl ROM { pub(super) fn set(&mut self, address: Address, data: u8) { self.mbc.set(address, data); } + + pub fn mbc_type(&self) -> &str { + self.mbc.mbc_type() + } } diff --git a/src/processor/memory/rom/mbcs.rs b/src/processor/memory/rom/mbcs.rs index 326fdf2..babf5de 100644 --- a/src/processor/memory/rom/mbcs.rs +++ b/src/processor/memory/rom/mbcs.rs @@ -3,6 +3,7 @@ use crate::processor::memory::Address; pub(super) trait MBC { fn get(&self, address: Address) -> u8; fn set(&mut self, address: Address, data: u8); + fn mbc_type(&self) -> &str; } pub(super) struct NONE { @@ -23,6 +24,10 @@ impl MBC for NONE { fn set(&mut self, _address: Address, _data: u8) { return; } + + fn mbc_type(&self) -> &str { + "None" + } } #[derive(Clone, Copy)] @@ -108,4 +113,8 @@ impl MBC for MBC1 { self.rom_bank = (self.rom_bank as usize % self.num_banks) as u8; return; } + + fn mbc_type(&self) -> &str { + "MBC1" + } }