diff --git a/src/gb.rs b/src/gb.rs index e248248d72851f1a9ea84e760b89ad0c4710abac..482f849de5358017e5bc242c8be825f13260acb4 100644 --- a/src/gb.rs +++ b/src/gb.rs @@ -138,6 +138,10 @@ impl GameBoy { self.frame_buffer().to_vec() } + pub fn cartridge_eager(&mut self) -> Cartridge { + self.mmu().rom().clone() + } + pub fn registers(&mut self) -> Registers { let ppu_registers = self.ppu().registers(); Registers { diff --git a/src/rom.rs b/src/rom.rs index 26a09286e6616beadfc39c397cc657e442f934ed..1c3e313a431fe255818fa5d8bebecf7ffaf2819a 100644 --- a/src/rom.rs +++ b/src/rom.rs @@ -410,6 +410,31 @@ impl Cartridge { pub fn ram_size_s(&self) -> String { String::from(self.ram_size().description()) } + + pub fn has_battery(&self) -> bool { + match self.rom_type() { + RomType::Mbc1RamBattery => true, + RomType::Mbc2Battery => true, + RomType::RomRamBattery => true, + RomType::Mmm01RamBattery => true, + RomType::Mbc3TimerBattery => true, + RomType::Mbc3TimerRamBattery => true, + RomType::Mbc3RamBattery => true, + RomType::Mbc5RamBattery => true, + RomType::Mbc5RumbleRamBattery => true, + RomType::Mbc7SensorRumbleRamBattery => true, + RomType::HuC1RamBattery => true, + _ => false, + } + } + + pub fn ram_data_eager(&self) -> Vec<u8> { + self.ram_data.clone() + } + + pub fn set_ram_data(&mut self, ram_data: Vec<u8>) { + self.ram_data = ram_data; + } } impl Default for Cartridge {