diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-05-05 17:04:49 -0500 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-05-05 17:04:49 -0500 |
commit | 1c4ab37b855d83d422386147c867f290cce834d5 (patch) | |
tree | 9b9c2fe831b051f1d07dfdbe2c761fc819208d7e /crystal.py | |
parent | e290600cd6509757be1ef4218cf69e20a6b46b6e (diff) |
tool to dump texts from a particular bank into asm
original-commit-id: 03ce919b58a20fb65d658bd389beabb5c77fde93
Diffstat (limited to 'crystal.py')
-rw-r--r-- | crystal.py | 42 |
1 files changed, 42 insertions, 0 deletions
@@ -5828,6 +5828,48 @@ class Asm: #make sure the file ends with a newline fh.write("\n") +def list_texts_in_bank(bank): + """ Narrows down the list of objects + that you will be inserting into Asm. + """ + if len(all_texts) == 0: + raise Exception, "all_texts is blank.. run_main() will populate it" + + assert bank != None, "list_texts_in_banks must be given a particular bank" + + assert 0 <= bank < 0x80, "bank doesn't exist in the ROM" + + texts = [] + for text in all_texts: + if calculate_bank(text.address) == bank: + texts.append(text) + + return texts + +def dump_asm_for_texts_in_bank(bank, start=50, end=100): + """ Simple utility to help with dumping texts into a particular bank. This + is helpful for figuring out which text is breaking that bank. + """ + # load and parse the ROM if necessary + if rom == None or len(rom) <= 4: + load_rom() + run_main() + + # get all texts + # first 100 look okay? + texts = list_texts_in_bank(bank)[start:end] + + # create a new dump + asm = Asm() + + # start the insertion process + asm.insert_multiple_with_dependencies(texts) + + # start dumping + asm.dump() + + print "done dumping texts for bank $%.2x" % (bank) + def index(seq, f): """return the index of the first item in seq where f(item) == True.""" |