blob: 3242c317ae8574e6a3356beb957be02d1ac1b2b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#!/usr/bin/python3
from sys import argv, stdout
from read_charmap import read_charmap
bank_size = 0x4000
charmap = read_charmap()
if len(argv) != 4:
print(f"Usage: {argv[0]} path/to/ROM.gb start_offset end_offset\noffsets are in the form bank:address (both hex), and end_offset is *not* included.")
exit(1)
try:
start_bank,start_addr = [ int(s, 16) for s in argv[2].split(':') ]
end_bank, end_addr = [ int(s, 16) for s in argv[3].split(':') ]
if start_bank != 0:
start_addr += (start_bank - 1) * bank_size
if end_bank != 0:
end_addr += (end_bank - 1) * bank_size
except Error:
print("Please specify valid offsets (bank:address, both hex)")
exit(1)
with open(argv[1], "rb") as f:
f.seek(start_addr)
string = ""
while start_addr < end_addr:
b = f.read(1)
v = int.from_bytes(b, "little")
string += char_table[ v ]
start_addr += 1
stdout.buffer.write( f"db \"{string}\"\n".encode('utf-8') )
|