pokegold-spaceworld/utils/dump_names.py
Rangi42 5904823317
Some checks failed
CI / build (push) Has been cancelled
Remove executable permission from various files
2025-12-02 12:23:39 -05:00

70 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import sys, os, io
from read_charmap import read_charmap
def calc_bank(p):
return p // 0x4000
def calc_address(p):
b = calc_bank(p)
o = b * 0x4000
return 0x4000 + p - o
def get_sym_loc(p):
b, a = calc_bank(p), calc_address(p)
return '%02x:%04x' % (b, a)
def get_project_dir():
script_path = os.path.realpath(__file__)
script_dir = os.path.dirname(script_path)
project_dir = os.path.join(script_dir, '..')
return os.path.normpath(project_dir)
def get_baserom_path():
project_dir = get_project_dir()
return os.path.join(project_dir, 'baserom.gb')
def dump_strings(data):
charmap = read_charmap()
ss = []
chars = []
for v in data:
if v in charmap:
c = charmap[v]
chars.append(c)
else:
if chars:
ss.append('"%s"' % ''.join(chars))
chars = []
ss.append('$%02x' % v)
if v == 0x50:
if chars:
ss.append('"%s"' % ''.join(chars))
chars = []
print '\tdb %s' % ', '.join(ss)
ss = []
if ss:
print '\tdb %s' % ', '.join(ss)
def read_data(bank, address, n):
offset = bank * 0x4000 + address - 0x4000
baserom_path = get_baserom_path()
with open(baserom_path, 'rb') as f:
f.seek(offset)
data = []
i = 0
while i < n:
c = f.read(1)
v = ord(c)
if v == 0x50:
i += 1
data.append(v)
return data
p = 0xfcaaf # Landmarks
print get_sym_loc(p)
data = read_data(calc_bank(p), calc_address(p), 45)
dump_strings(data)