From dd237573677eb5d438dae1b46588a998abcd6334 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Fri, 20 Jun 2025 16:51:17 +0200 Subject: [PATCH] maps: Added more header values to map converter --- maps/default_map.s | 5 +++++ src/defs.s | 8 +++++--- src/map.s | 12 ++++++++++++ tools/tms2map.py | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/maps/default_map.s b/maps/default_map.s index 2459b06..a4a0a7f 100644 --- a/maps/default_map.s +++ b/maps/default_map.s @@ -1,6 +1,11 @@ default_map_header: .db 0, 0, 0, 0 ; flags dw default_map_bg +dw st_map_null +dw map_actor_table_null +dw bank8000 +dw bank8800 +dw bank9000 default_map_bg: diff --git a/src/defs.s b/src/defs.s index 62a08db..15a804a 100644 --- a/src/defs.s +++ b/src/defs.s @@ -223,14 +223,16 @@ .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 diff --git a/src/map.s b/src/map.s index 348a33e..b016d42 100644 --- a/src/map.s +++ b/src/map.s @@ -161,4 +161,16 @@ map_load_demo_actors: ret + ; empty actor table +map_actor_table_null: +.db 0 + +st_map_null: + st_def 0, map_null_state, st_map_null + + ; null state +map_null_state: + ldnull bc + ret + #include "default_map.s" diff --git a/tools/tms2map.py b/tools/tms2map.py index 9f4f4b6..78bbaa2 100755 --- a/tools/tms2map.py +++ b/tools/tms2map.py @@ -8,6 +8,12 @@ TILE_SIZE = 16 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 } @@ -51,6 +57,11 @@ def print_header(name): 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): @@ -68,10 +79,31 @@ def get_flags(tileset): 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: -- 2.30.2