mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 15:08:23 +00:00
connection_helper - print out a formula for connection math
hg-commit-id: 27e8096bb251
This commit is contained in:
parent
1f38d74c65
commit
1f1f31ff9c
3 changed files with 95 additions and 3 deletions
|
@ -8138,7 +8138,7 @@ PalletTown_h:
|
|||
db NORTH | SOUTH ; connections
|
||||
|
||||
db ROUTE_1
|
||||
dw $4192,$C6EB ; pointers
|
||||
dw Route1Blocks + 150,$C6EB ; pointers
|
||||
db $0A,$0A ; bigness, width
|
||||
db $23,$00 ; alignments
|
||||
dw $C809 ; window
|
||||
|
|
94
extras/connection_helper.py
Normal file
94
extras/connection_helper.py
Normal file
|
@ -0,0 +1,94 @@
|
|||
#!/usr/bin/python
|
||||
#author: Bryan Bishop <kanzure@gmail.com>
|
||||
#date: 2012-01-15
|
||||
#help with connection math
|
||||
import extract_maps
|
||||
from pretty_map_headers import map_constants, map_name_cleaner, offset_to_pointer
|
||||
|
||||
def print_connections(map_id):
|
||||
map1 = extract_maps.map_headers[map_id]
|
||||
map1_name = map1["name"]
|
||||
connections = map1["connections"]
|
||||
|
||||
for connection_id in connections:
|
||||
connection = connections[connection_id]
|
||||
direction = connection["direction"]
|
||||
connected_pointer = int(connection["connected_map_tile_pointer"], 16)
|
||||
current_pointer = int(connection["current_map_tile_pointer"], 16)
|
||||
map2_id = connection["map_id"]
|
||||
map2 = extract_maps.map_headers[map2_id]
|
||||
map2_name = map2["name"]
|
||||
map2_cname = map_name_cleaner(map2["name"], None)[:-2]
|
||||
map2_bank = int(map2["bank"], 16)
|
||||
map2_blocks_pointer = offset_to_pointer(int(map2["map_pointer"], 16))
|
||||
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)
|
||||
|
||||
shift = 0
|
||||
#not sure about the calculated shift for NORTH or SOUTH
|
||||
if direction == "NORTH":
|
||||
calculated = map2_blocks_pointer + (map2_height - 3) * map2_width
|
||||
result = connected_pointer - calculated
|
||||
if result != 0:
|
||||
shift = result #seems to always be 2?
|
||||
calculated = map2_blocks_pointer + (map2_height - 3) * map2_width + shift
|
||||
print "shift: " + str(shift)
|
||||
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"
|
||||
elif direction == "SOUTH":
|
||||
calculated = map2_blocks_pointer
|
||||
result = connected_pointer - calculated
|
||||
formula = map2_cname + "Blocks"
|
||||
if result != 0:
|
||||
shift = result
|
||||
calculated = map2_blocks_pointer + shift
|
||||
print "shift: " + str(shift)
|
||||
formula += " + " + str(shift)
|
||||
elif direction == "WEST":
|
||||
calculated = map2_blocks_pointer - 3 + (map2_width)
|
||||
result = connected_pointer - calculated
|
||||
formula = map2_cname + " - 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) + ")"
|
||||
elif direction == "EAST":
|
||||
calculated = map2_blocks_pointer + (map2_width)
|
||||
result = connected_pointer - calculated
|
||||
print ".. result is: " + str(result)
|
||||
formula = map2_cname + " + (" + 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) + ")"
|
||||
|
||||
print "formula: " + formula
|
||||
|
||||
result = connected_pointer - calculated
|
||||
print "result: " + str(result)
|
||||
|
||||
print "\n",
|
||||
|
||||
if __name__ == "__main__":
|
||||
extract_maps.load_rom()
|
||||
extract_maps.load_map_pointers()
|
||||
extract_maps.read_all_map_headers()
|
||||
|
||||
#trouble:
|
||||
#print_connections(13)
|
||||
#print_connections(15)
|
||||
|
||||
for map_id in extract_maps.map_headers.keys():
|
||||
if map_id not in extract_maps.bad_maps:
|
||||
print_connections(map_id)
|
|
@ -560,8 +560,6 @@ def get_direction(connection_byte, connection_id):
|
|||
#prune results
|
||||
while "" in results:
|
||||
results.remove("")
|
||||
print results
|
||||
print "connection_id is: " + str(connection_id) + " and byte is: " + hex(connection_byte)
|
||||
return results[connection_id]
|
||||
|
||||
def read_map_header(address, bank):
|
||||
|
|
Loading…
Reference in a new issue