shithub: pokecrystal

Download patch

ref: 82d723840b14fc6b55c00f107a453bc0b0d80772
parent: 1bdcac1fe11746b67f17285d2f04e3b9c52772d1
author: yenatch <yenatch@gmail.com>
date: Tue May 14 17:21:26 EDT 2013

gbz80disasm: clean up $ff00+x handling

--- a/extras/gbz80disasm.py
+++ b/extras/gbz80disasm.py
@@ -723,19 +723,20 @@
                     opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower()
 
                     # because the $ff00+$ff syntax is silly
-                    if opstr.count("$") > 0 and "+" in opstr:
-                        first_orig = opstr.split("$")[1].split("+")[0]
-                        first_num = "0x"+first_orig
-                        first_val = int(first_num, 16)
-                        second_orig = opstr.split("+$")[1].split("]")[0]
-                        second_num = "0x"+second_orig
-                        second_val = int(second_num, 16)
-                        combined_val = "$" + hex(first_val + second_val)[2:]
+                    if opstr.count("$") > 1 and "+" in opstr:
+                        first_orig = opstr[opstr.find("$"):opstr.find("+")]
+                        first_val = eval(first_orig.replace("$","0x"))
+
+                        second_orig = opstr[opstr.find("+$")+1:opstr.find("]")]
+                        second_val = eval(second_orig.replace("$","0x"))
+
+                        combined_val = "$%.4x" % (first_val + second_val)
                         result = find_label(combined_val, bank_id)
                         if result != None:
                             combined_val = result
-                        replacetron = "[$"+first_orig+"+$"+second_orig+"]"
-                        opstr = opstr.replace(replacetron, "["+combined_val+"]")
+
+                        replacetron = "[%s+%s]" % (first_orig, second_orig)
+                        opstr = opstr.replace(replacetron, "[%s]" % combined_val)
 
                     output += spacing + opstr
                     if include_comment:
--