.de map_flags_4, 1
.de map_bg_ptr, 2
; ptr to mape state to be loaded
+ ; maps to map property state_ptr
.de map_state_ptr, 2
- ; amount of entires in actor table
-.de map_actor_table_len, 1
; ptr to actor table
- ; actor table is a list of pointers to actor
+ ; an actor table is a single byte for number of actors
+ ; followed by a list of pointers to actor
; templates
+ ; maps to map property actor_table_ptr
.de map_actor_table_ptr, 2
; pointers to tile banks to be loaded
+ ; maps to map property bank0, bank1, bank2
.de map_tile_bank0_ptr, 2
.de map_tile_bank1_ptr, 2
.de map_tile_bank2_ptr, 2
ACTOR_OFFSET_X = 0
ACTOR_OFFSET_Y = 0
+state_ptr = "st_map_null"
+tile_bank0 = "bank8000"
+tile_bank1 = "bank8800"
+tile_bank2 = "bank9000"
+actor_table_ptr = "map_actor_table_null"
+
FLAGS = {
'f_collision': 0x01
}
print(name + "_header:")
print(".db 0, 0, 0, 0 ; flags")
print("dw " + name + "_bg")
+ print("dw " + state_ptr)
+ print("dw " + actor_table_ptr)
+ print("dw " + tile_bank0)
+ print("dw " + tile_bank1)
+ print("dw " + tile_bank2)
print("")
def get_flag(tile):
if child.tag == 'tile':
get_flag(child)
+def get_map_props(root):
+ global state_ptr, actor_table_ptr, tile_bank0, tile_bank1, tile_bank2
+ for child in root:
+ if child.tag == "properties":
+ for prop in child:
+ name = prop.attrib['name']
+ value = prop.attrib['value']
+ if name == 'state_ptr':
+ state_ptr = value
+ elif name == 'actor_table_ptr':
+ actor_table_ptr = value
+ elif name == 'tile_bank0':
+ tile_bank0 = value
+ elif name == 'tile_bank1':
+ tile_bank1 = value
+ elif name == 'tile_bank2':
+ tile_bank2 = value
+
+ return
+
def convert(src, name):
tree = ET.parse(src)
root = tree.getroot()
+ get_map_props(root)
print_header(name)
for child in root: