aboutsummaryrefslogtreecommitdiff
path: root/scripts/set_checksums.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/set_checksums.py')
-rw-r--r--scripts/set_checksums.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/scripts/set_checksums.py b/scripts/set_checksums.py
new file mode 100644
index 0000000..e05d1cf
--- /dev/null
+++ b/scripts/set_checksums.py
@@ -0,0 +1,24 @@
+import sys
+
+if len(sys.argv) != 2:
+ raise ValueError("Rom file must be specified as first argument")
+
+rom_filename = sys.argv[1]
+
+rom_file = open(rom_filename, 'r+b')
+
+rom_file.seek(0x0134)
+
+header = rom_file.read(0x19)
+
+header_checksum = 0
+for b in header:
+ header_checksum = (header_checksum - int(b) - 1) & 0xff
+
+print("HEADER CHECKSUM =", hex(header_checksum), file=sys.stderr)
+
+rom_file.seek(0x014d)
+
+rom_file.write(bytes(bytearray([header_checksum])))
+
+rom_file.close()