From e0d4532ae72f4f4fddb86441fcd13d828eb54129 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Mon, 22 Jul 2024 11:16:38 +0100
Subject: [PATCH] chore: support for ROM checksum

---
 src/rom.rs | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/rom.rs b/src/rom.rs
index 99890032..98bdcead 100644
--- a/src/rom.rs
+++ b/src/rom.rs
@@ -864,6 +864,18 @@ impl Cartridge {
         self.game_shark = None;
     }
 
+    pub fn checksum(&self) -> u8 {
+        let mut sum: u8 = 0;
+        for i in 0x0134..=0x014c {
+            sum = sum.wrapping_sub(self.rom_data[i]).wrapping_sub(1);
+        }
+        sum
+    }
+
+    pub fn valid_checksum(&self) -> bool {
+        self.rom_data[0x014d] == self.checksum()
+    }
+
     pub fn description(&self, column_length: usize) -> String {
         let title_l = format!("{:width$}", "Title", width = column_length);
         let publisher_l = format!("{:width$}", "Publisher", width = column_length);
-- 
GitLab