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 {