From a893988c10736d324330fbdcacabd6ac862500e1 Mon Sep 17 00:00:00 2001 From: Astatin Date: Wed, 3 Sep 2025 14:27:00 +0200 Subject: Add a post assembly script to round up ROM size (fixes ROM banking on some emulator) --- scripts/round-rom-size.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 scripts/round-rom-size.py (limited to 'scripts/round-rom-size.py') diff --git a/scripts/round-rom-size.py b/scripts/round-rom-size.py new file mode 100644 index 0000000..a59a11f --- /dev/null +++ b/scripts/round-rom-size.py @@ -0,0 +1,34 @@ +import sys +import os + +if len(sys.argv) != 2: + raise ValueError("Rom file must be specified as first argument") + +rom_filename = sys.argv[1] +current_filesize = os.path.getsize(rom_filename) + +i = 0 +for n in range(0, 9): + if current_filesize <= 32768 * (1 << n): + break + i += 1 + +missing = (32768 * (1 << i)) - current_filesize + +print("Original file size =", current_filesize, "bytes") +print("ROM size =", hex(i), "({} bytes)".format(32768 * (1 << i))) + +rom_file = open(rom_filename, 'r+b') + +rom_file.seek(0x148) + +rom_file.write(bytes(bytearray([i]))) + +rom_file.close() + +rom_file = open(rom_filename, 'a+b') + + +rom_file.write(bytes(bytearray([0]*missing))) + +rom_file.close() -- cgit v1.2.3-70-g09d2