summaryrefslogtreecommitdiff
path: root/utils/dump_names.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/dump_names.py')
-rw-r--r--utils/dump_names.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/utils/dump_names.py b/utils/dump_names.py
new file mode 100644
index 0000000..12eafb5
--- /dev/null
+++ b/utils/dump_names.py
@@ -0,0 +1,69 @@
+#!/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)