shithub: pokered

Download patch

ref: 33b7fedda3456492daa6afc84dc50d730eb2ce97
parent: 24d5cdd15ef3fa09726d994331a35b1aa2769842
author: Bryan Bishop <kanzure@gmail.com>
date: Tue Jan 10 06:16:57 EST 2012

replace call pointers with labels in gbz80disasm

Also, this changes how output_bank_opcodes works. Instead of calling lower()
on the entire output, each opcode and each line is individually lowercased.

As a result, the calls end up with correctly-capitalized labels.

hg-commit-id: bdde4aa404da


--- a/extras/gbz80disasm.py
+++ b/extras/gbz80disasm.py
@@ -538,6 +538,17 @@
 ]
 relative_jumps = [0x38, 0x30, 0x20, 0x28, 0x18]
 
+#TODO: replace call and a pointer with call and a label
+call_commands = [0xdc, 0xd4, 0xc4, 0xcc, 0xcd]
+
+asm_commands = {
+    "3c49": "PrintText",
+    "35d6": "Bankswitch",
+    "3927": "AddPokemonToParty",
+    "3e48": "GivePokemon",
+    "3dd7": "Delay3",
+}
+
 def random_asm_label():
     return ".ASM_" + random_hash()
 
@@ -577,7 +588,7 @@
             byte_labels[offset] = {}
             byte_labels[offset]["name"] = line_label
             byte_labels[offset]["usage"] = 0
-        output += line_label + " ; " + hex(offset) + "\n"
+        output += line_label.lower() + " ; " + hex(offset) + "\n"
 
         #find out if there's a two byte key like this
         temp_maybe = maybe_byte
@@ -585,7 +596,7 @@
         if temp_maybe in opt_table.keys():
             opstr = copy(opt_table[temp_maybe][0])
               
-            output += spacing + opstr #+ " ; " + hex(offset)
+            output += spacing + opstr.lower() #+ " ; " + hex(offset)
             output += "\n"
 
             current_byte_number += 2
@@ -598,7 +609,7 @@
             #type = -1 when it's the E op
             #if op_code_type != -1:
             if   op_code_type == 0 and ord(rom[offset]) == op_code_byte:
-                output += spacing + op_code[0] #+ " ; " + hex(offset)
+                output += spacing + op_code[0].lower() #+ " ; " + hex(offset)
                 output += "\n"
                 
                 offset += 1
@@ -624,10 +635,10 @@
                             byte_labels[target_address]["name"] = line_label2
                             byte_labels[target_address]["usage"] = 1
                         
-                        insertion = line_label2
+                        insertion = line_label2.lower()
                         include_comment = True
 
-                    opstr = opstr[:opstr.find("x")] + insertion + opstr[opstr.find("x")+1:]
+                    opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower()
                     output += spacing + opstr 
                     if include_comment: output += " ; " + hex(offset)
                     output += "\n"
@@ -649,9 +660,13 @@
                     
                     number = byte1
                     number += byte2 << 8;
+
                     insertion = "$%.4x" % (number)
+                    if maybe_byte in call_commands:
+                        if insertion[1:] in asm_commands:
+                            insertion = asm_commands[insertion[1:]]
                     
-                    opstr = opstr[:opstr.find("?")] + insertion + opstr[opstr.find("?")+1:]
+                    opstr = opstr[:opstr.find("?")].lower() + insertion + opstr[opstr.find("?")+1:].lower()
                     output += spacing + opstr #+ " ; " + hex(offset)
                     output += "\n"
 
@@ -690,9 +705,9 @@
         address = label_line
         label_line = byte_labels[label_line]
         if label_line["usage"] == 0:
-            output = output.replace(label_line["name"] + " ; " + hex(address) + "\n", "")
+            output = output.replace((label_line["name"] + " ; " + hex(address) + "\n").lower(), "")
 
-    return (output.lower(), offset)
+    return (output, offset)
 
 def text_asm_pretty_printer(label, address_of_08, include_08=True):
     """returns (output, end_address)"""
@@ -712,4 +727,4 @@
 
     #0x18f96 is PalletTownText1
     #0x19B5D is BluesHouseText1
-    print output_bank_opcodes(0x3927)[0]
+    print output_bank_opcodes(0x74a69)[0]