summarylogtreecommitdiffstats
path: root/verify_baserom.py
diff options
context:
space:
mode:
Diffstat (limited to 'verify_baserom.py')
-rwxr-xr-xverify_baserom.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/verify_baserom.py b/verify_baserom.py
new file mode 100755
index 000000000000..e84897c2f9b8
--- /dev/null
+++ b/verify_baserom.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+import sys
+import hashlib
+
+baseromhash = 'f0b7f35375f9cc8ca1b2d59d78e35405'
+baseromsize = 0x3600000
+
+with open(sys.argv[1], 'rb') as f:
+ filedata = bytearray(f.read(baseromsize))
+
+### BYTEORDER CONVERTS
+## LITTLE ENDIAN (.n64)
+#if filedata[0] == 0x40:
+# filedata[0::4], filedata[1::4], filedata[2::4], filedata[3::4] = \
+# filedata[3::4], filedata[2::4], filedata[1::4], filedata[0::4]
+#
+## BYTE SWAPPED (.v64)
+#elif filedata[0] == 0x37:
+# filedata[0::2], filedata[1::2] = filedata[1::2], filedata[0::2]
+
+orighash = hashlib.md5(filedata).hexdigest()
+
+## ROM PATCHES
+# NZLP HEADER
+filedata[0x3E] = 0x50
+
+# BLACKOUT REMAINING ONES
+filedata[0x35CF000:] = [0xFF] * (len(filedata) - 0x35CF000)
+
+patchedhash = hashlib.md5(filedata).hexdigest()
+
+if patchedhash != baseromhash:
+ print(f"Bad ROM! Expected {baseromhash} but got {patchedhash}.")
+ sys.exit(1)
+
+print("OK! Looks good.")