diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/gbz80disasm.py | 25 | ||||
-rw-r--r-- | extras/romstr.py | 10 |
2 files changed, 17 insertions, 18 deletions
diff --git a/extras/gbz80disasm.py b/extras/gbz80disasm.py index f2ba4839f..d22f152f1 100644 --- a/extras/gbz80disasm.py +++ b/extras/gbz80disasm.py @@ -14,11 +14,8 @@ if not hasattr(json, "read"): from romstr import RomStr def load_rom(filename="../baserom.gbc"): - """loads bytes into memory""" global rom - file_handler = open(filename, "rb") - rom = RomStr(file_handler.read()) - file_handler.close() + rom = RomStr.load(filename=filename) return rom spacing = "\t" @@ -568,8 +565,6 @@ def load_labels(filename="labels.json"): crystal.scan_for_predefined_labels() def find_label(local_address, bank_id=0): - return None - global all_labels # keep an integer @@ -577,17 +572,19 @@ def find_label(local_address, bank_id=0): local_address1 = int(local_address.replace("$", "0x"), 16) else: local_address1 = local_address - # turn local_address into a string + # turn local_address into an integer + if type(local_address) == str: + if "0x" in local_address: + local_address = local_address.replace("0x", "$") + elif "$" in local_address: + local_address = local_address.replace("$", "") + if type(local_address) == str: - if "0x" in local_address: local_address = local_address.replace("0x", "$") - elif not "$" in local_address: local_address = "$" + local_address - if type(local_address) == int: - local_address = "$%.x" % (local_address) - local_address = local_address.upper() + local_address = int(local_address, 16) for label_entry in all_labels: - if label_entry["local_pointer"].upper() == local_address: - if label_entry["bank_id"] == bank_id or (local_address1 < 0x8000 and (label_entry["bank_id"] == 0 or label_entry["bank_id"] == 1)): + if label_entry["address"] == local_address: + if label_entry["bank"] == bank_id or (local_address1 < 0x8000 and (label_entry["bank"] == 0 or label_entry["bank"] == 1)): return label_entry["label"] return None diff --git a/extras/romstr.py b/extras/romstr.py index d2eea44ae..5701f19ae 100644 --- a/extras/romstr.py +++ b/extras/romstr.py @@ -46,15 +46,17 @@ class RomStr(str): return "RomStr(too long)" @classmethod - def load(cls, crystal=True, red=False): + def load(cls, filename=None, crystal=True, red=False): """ Loads a ROM into a RomStr. """ - if crystal and not red: + if crystal and not red and not filename: file_handler = open("../baserom.gbc", "r") - elif red and not crystal: + elif red and not crystal and not filename: file_handler = open("../pokered-baserom.gbc", "r") + elif filename not in ["", None]: + file_handler = open(filename, "rb") else: - raise Exception, "not sure which rom to load?" + raise Exception("not sure which rom to load?") bytes = file_handler.read() file_handler.close() return RomStr(bytes) |