shithub: pokecrystal

Download patch

ref: 34c6b38da6026b3a877c68541d0d7bd0ec1373e9
parent: dc3fd295c0397fbbaafb13bc02524e86f67c67ac
author: Bryan Bishop <[email protected]>
date: Wed May 16 10:37:30 EDT 2012

tool to help narrow down the problem in a bank

--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -5962,6 +5962,14 @@
         #make sure the file ends with a newline
         fh.write("\n")
 
+def list_things_in_bank(bank):
+    objects = []
+    for blah in script_parse_table.items():
+        object = blah[1]
+        if hasattr(object, "address") and calculate_bank(object.address) == bank:
+            objects.append(object)
+    return objects
+
 def list_texts_in_bank(bank):
     """ Narrows down the list of objects
     that you will be inserting into Asm.
@@ -6031,6 +6039,27 @@
     asm.insert_with_dependencies(movements)
     asm.dump()
     print "done dumping movements for bank $%.2x" % (bank)
+
+def dump_things_in_bank(bank, start=50, end=100):
+    """ is helpful for figuring out which object is breaking that bank.
+    """
+    # load and parse the ROM if necessary
+    if rom == None or len(rom) <= 4:
+        load_rom()
+        run_main()
+    
+    things = list_things_in_bank(bank)[start:end]
+
+    # create a new dump
+    asm = Asm()
+
+    # start the insertion process
+    asm.insert_multiple_with_dependencies(things)
+    
+    # start dumping
+    asm.dump()
+
+    print "done dumping things for bank $%.2x" % (bank)
 
 def index(seq, f):
     """return the index of the first item in seq