From 6965009f3ef75b45261590ddfed008c42bd90955 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Sun, 13 Nov 2022 23:49:48 +0000
Subject: [PATCH] feat: new cartridge methods

---
 src/gb.rs  |  4 ++++
 src/rom.rs | 25 +++++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/src/gb.rs b/src/gb.rs
index e248248d..482f849d 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 26a09286..1c3e313a 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 {
-- 
GitLab