mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-03-21 17:45:52 -05:00
70 lines
1.4 KiB
Python
Executable File
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)
|