diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-01-15 17:20:06 -0600 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-01-15 17:20:06 -0600 |
commit | f0d8e69adcb176e82deb588c6b6e1ba8a12f5123 (patch) | |
tree | 6c33b6ab3536059e2c96365d7190617ecb6a11ef /extras/connection_helper.py | |
parent | f8291c9cda3d4be6ba29a61280bd33e89f375e35 (diff) |
replace connection pointers with formulas
hg-commit-id: 92972d3acaea
Diffstat (limited to 'extras/connection_helper.py')
-rw-r--r-- | extras/connection_helper.py | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/extras/connection_helper.py b/extras/connection_helper.py index 4c7e1ce0..e116347c 100644 --- a/extras/connection_helper.py +++ b/extras/connection_helper.py @@ -5,10 +5,16 @@ import extract_maps from pretty_map_headers import map_constants, map_name_cleaner, offset_to_pointer -def print_connections(map_id): +def print_connections(map_id, in_connection_id=None, do_output=False): map1 = extract_maps.map_headers[map_id] map1_name = map1["name"] connections = map1["connections"] + output = "" + + if in_connection_id != None: + connections2 = {} + connections2[in_connection_id] = connections[in_connection_id] + connections = connections2 for connection_id in connections: connection = connections[connection_id] @@ -24,11 +30,11 @@ def print_connections(map_id): map2_height = int(map2["y"], 16) map2_width = int(map2["x"], 16) - print map1_name + " (id=" + str(map_id) + ") " + direction + " to " + map2_name - print "map2 blocks pointer: " + hex(map2_blocks_pointer) - print "map2 height: " + str(map2_height) - print "map2 width: " + str(map2_width) - print "map1 connection pointer: " + hex(connected_pointer) + output += map1_name + " (id=" + str(map_id) + ") " + direction + " to " + map2_name + "\n" + output += "map2 blocks pointer: " + hex(map2_blocks_pointer) + "\n" + output += "map2 height: " + str(map2_height) + "\n" + output += "map2 width: " + str(map2_width) + "\n" + output += "map1 connection pointer: " + hex(connected_pointer) + "\n" shift = 0 #not sure about the calculated shift for NORTH or SOUTH @@ -38,7 +44,7 @@ def print_connections(map_id): if result != 0: shift = result #seems to always be 2? calculated = map2_blocks_pointer + (map2_height - 3) * map2_width + shift - print "shift: " + str(shift) + output += "shift: " + str(shift) + "\n" formula = map2_cname + "Blocks + (" + map2_cname + "Height - 3) * " + map2_cname + "Width + " + str(shift) else: formula = map2_cname + "Blocks + (" + map2_cname + "Height - 3) * " + map2_cname + "Width" @@ -49,36 +55,41 @@ def print_connections(map_id): if result != 0: shift = result calculated = map2_blocks_pointer + shift - print "shift: " + str(shift) - formula += " + " + str(shift) + output += "shift: " + str(shift) + "\n" + formula += "Blocks + " + str(shift) elif direction == "WEST": calculated = map2_blocks_pointer - 3 + (map2_width) result = connected_pointer - calculated - formula = map2_cname + " - 3 + (" + map2_cname + "Width)" + formula = map2_cname + "Blocks - 3 + (" + map2_cname + "Width)" if result != 0: shift = result / map2_width shift += 1 calculated = map2_blocks_pointer - 3 + (map2_width * shift) - print "shift: " + str(shift) - formula = map2_cname + " - 3 + (" + map2_cname + "Width * " + str(shift) + ")" + output += "shift: " + str(shift) + "\n" + formula = map2_cname + "Blocks - 3 + (" + map2_cname + "Width * " + str(shift) + ")" elif direction == "EAST": calculated = map2_blocks_pointer + (map2_width) result = connected_pointer - calculated - print ".. result is: " + str(result) - formula = map2_cname + " + (" + map2_cname + "Width)" + output += ".. result is: " + str(result) + "\n" + formula = map2_cname + "Blocks + (" + map2_cname + "Width)" if result != 0: shift = result / map2_width shift += 1 calculated = map2_blocks_pointer + (map2_width * shift) - print "shift: " + str(shift) - formula = map2_cname + " + (" + map2_cname + "Width * " + str(shift) + ")" + output += "shift: " + str(shift) + "\n" + formula = map2_cname + "Blocks" + " + (" + map2_cname + "Width * " + str(shift) + ")" - print "formula: " + formula + output += "formula: " + formula + "\n" result = connected_pointer - calculated - print "result: " + str(result) + output += "result: " + str(result) + "\n" - print "\n", + output += "\n\n" + + if in_connection_id != None: + return formula + if do_output == True: + return output if __name__ == "__main__": extract_maps.load_rom() @@ -91,4 +102,4 @@ if __name__ == "__main__": for map_id in extract_maps.map_headers.keys(): if map_id not in extract_maps.bad_maps: - print_connections(map_id) + print print_connections(map_id, do_output=True) |