diff options
Diffstat (limited to 'extras/insert_object_data.py')
m--------- | extras | 0 | ||||
-rw-r--r-- | extras/insert_object_data.py | 82 |
2 files changed, 0 insertions, 82 deletions
diff --git a/extras b/extras new file mode 160000 +Subproject 7aa016fb528bcc8dcb30c6a887957851623eccc diff --git a/extras/insert_object_data.py b/extras/insert_object_data.py deleted file mode 100644 index e779c10b..00000000 --- a/extras/insert_object_data.py +++ /dev/null @@ -1,82 +0,0 @@ -#author: Bryan Bishop <kanzure@gmail.com> -#date: 2012-01-05 -#insert object data into pokered.asm -import extract_maps -from pretty_map_headers import map_name_cleaner, object_data_pretty_printer, make_object_label_name, make_text_label, map_constants -from analyze_incbins import asm, offset_to_pointer, find_incbin_to_replace_for, split_incbin_line_into_three, generate_diff_insert, load_asm, isolate_incbins, process_incbins -import analyze_incbins -import os, sys -import subprocess -spacing = " " - -def insert_object(map_id): - map = extract_maps.map_headers[map_id] - object = map["object_data"] - size = extract_maps.compute_object_data_size(object) - address = int(map["object_data_pointer"], 16) - - line_number = find_incbin_to_replace_for(address) - if line_number == None: - print "skipping object data for map " + str(map["id"]) + " at " + map["object_data_pointer"] + " for " + str(size) + " bytes." - return - - newlines = split_incbin_line_into_three(line_number, address, size) - object_asm = object_data_pretty_printer(map_id) - - newlines = newlines.split("\n") - if len(newlines) == 2: index = 0 #replace the 1st line with new content - elif len(newlines) == 3: index = 1 #replace the 2nd line with new content - - newlines[index] = object_asm - - if len(newlines) == 3 and newlines[2][-2:] == "$0": - #get rid of the last incbin line if it is only including 0 bytes - del newlines[2] - #note that this has to be done after adding in the new asm - newlines = "\n".join(line for line in newlines) - - diff = generate_diff_insert(line_number, newlines) - print diff - - print "... Applying diff." - - #write the diff to a file - fh = open("temp.patch", "w") - fh.write(diff) - fh.close() - - #apply the patch - os.system("patch ../pokered.asm temp.patch") - - #remove the patch - os.system("rm temp.patch") - - #confirm it's working - subprocess.check_call("cd ../; make clean; LC_CTYPE=UTF-8 make", shell=True) - -def insert_all_objects(): - for map_id in extract_maps.map_headers.keys(): - if map_id not in extract_maps.bad_maps: - insert_object(map_id) - - analyze_incbins.asm = None - analyze_incbins.incbin_lines = [] - analyze_incbins.processed_incbins = {} - load_asm() - isolate_incbins() - process_incbins() - -if __name__ == "__main__": - #load map headers and object data - extract_maps.load_rom() - extract_maps.load_map_pointers() - extract_maps.read_all_map_headers() - - #load incbins - load_asm() - isolate_incbins() - process_incbins() - - #insert_object(1) - insert_all_objects() - |