From 6f961cae17eb151aadc64ef6ff198ef009fe3873 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Tue, 22 Jul 2025 12:58:49 +0200 Subject: [PATCH] maps: Added left, right, up, down flags to mapgen This allows setting up exits for an entire corner of the map easily. Set up exit tables for the _c map for now. --- maps/map_bc.s | 4 ++-- maps/map_be.s | 3 +-- maps/map_bw.s | 3 +-- maps/map_c.s | 26 ++++++++++++++++++-------- maps/map_ce.s | 5 ++--- maps/map_cw.s | 3 +-- maps/map_tc.s | 4 ++-- maps/map_te.s | 3 +-- maps/map_tw.s | 3 +-- src/exittables.s | 10 +++++++++- src/player.s | 2 +- tools/tms2map.py | 14 +++++++++++++- 12 files changed, 52 insertions(+), 28 deletions(-) diff --git a/maps/map_bc.s b/maps/map_bc.s index 8c72602..f071db3 100644 --- a/maps/map_bc.s +++ b/maps/map_bc.s @@ -29,6 +29,6 @@ map_bc_bg: map_bc_tile_flags: .db 0x27, 0x0, 0x4, 0x1, 0x48, 0x0, 0x4, 0x1 -.db 0x8, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x1, 0x12, 0xf, 0x0, 0x1, 0x12, 0x5f, 0x0 +.db 0x19, 0x0, 0x1, 0x10, 0xf, 0x0, 0x1, 0x10 +.db 0x5f, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_be.s b/maps/map_be.s index 1705d48..09fcae3 100644 --- a/maps/map_be.s +++ b/maps/map_be.s @@ -28,6 +28,5 @@ map_be_bg: .db 0x00 ; termiante data map_be_tile_flags: -.db 0x9f, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x50, 0x0 +.db 0xff, 0x0, 0x1, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_bw.s b/maps/map_bw.s index b79c55a..4a1e1f2 100644 --- a/maps/map_bw.s +++ b/maps/map_bw.s @@ -28,6 +28,5 @@ map_bw_bg: .db 0x00 ; termiante data map_bw_tile_flags: -.db 0x9f, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x50, 0x0 +.db 0xff, 0x0, 0x1, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_c.s b/maps/map_c.s index 702a87c..885ff58 100644 --- a/maps/map_c.s +++ b/maps/map_c.s @@ -13,27 +13,37 @@ dw map_c_exit_table map_c_bg: -.db 0x1, 0x0, 0xf, 0x0, 0x1, 0x0, 0x6, 0x6e -.db 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0 +.db 0x1, 0x44, 0x1, 0x44, 0xe, 0x0, 0x1, 0x44 .db 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0 .db 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e .db 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0 .db 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e .db 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0 .db 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0 -.db 0x1, 0x0, 0xf, 0x0, 0x1, 0x0, 0xf, 0x0 .db 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e -.db 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0 +.db 0x1, 0x0, 0x1, 0x0, 0xf, 0x0, 0x1, 0x0 +.db 0xf, 0x0, 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0 .db 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e .db 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0 .db 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0 .db 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0, 0x6, 0x6e .db 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e, 0x2, 0x0 -.db 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0, 0xe, 0x0 -.db 0x1, 0x0 +.db 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0, 0x6, 0x6e +.db 0x2, 0x0, 0x6, 0x6e, 0x1, 0x0, 0x1, 0x0 +.db 0xe, 0x0, 0x1, 0x0 .db 0x00 ; termiante data map_c_tile_flags: -.db 0x90, 0x2, 0x1, 0x12, 0xf, 0x2, 0x1, 0x12 -.db 0x5f, 0x2 +.db 0x2, 0x33, 0xe, 0x32, 0x1, 0x13, 0xe, 0x0 +.db 0x1, 0x22, 0x1, 0x12, 0xe, 0x0, 0x1, 0x22 +.db 0x1, 0x12, 0xe, 0x0, 0x1, 0x22, 0x1, 0x12 +.db 0xe, 0x0, 0x1, 0x22, 0x1, 0x12, 0xe, 0x0 +.db 0x1, 0x22, 0x1, 0x12, 0xe, 0x0, 0x1, 0x22 +.db 0x1, 0x12, 0xe, 0x0, 0x1, 0x22, 0x1, 0x12 +.db 0xe, 0x0, 0x1, 0x22, 0x1, 0x12, 0xe, 0x0 +.db 0x1, 0x22, 0x1, 0x12, 0xe, 0x0, 0x1, 0x22 +.db 0x1, 0x12, 0xe, 0x0, 0x1, 0x22, 0x1, 0x12 +.db 0xe, 0x0, 0x1, 0x22, 0x1, 0x12, 0xe, 0x0 +.db 0x1, 0x22, 0x1, 0x12, 0xe, 0x0, 0x1, 0x22 +.db 0x1, 0x12, 0xe, 0x2, 0x1, 0x22 .db 0x00 ; termiante data diff --git a/maps/map_ce.s b/maps/map_ce.s index ce05bed..27753e7 100644 --- a/maps/map_ce.s +++ b/maps/map_ce.s @@ -27,7 +27,6 @@ map_ce_bg: .db 0x00 ; termiante data map_ce_tile_flags: -.db 0x27, 0x0, 0x4, 0x1, 0x45, 0x0, 0x1, 0x2 -.db 0x2, 0x0, 0x4, 0x1, 0x9, 0x0, 0x1, 0x2 -.db 0x7f, 0x0 +.db 0x27, 0x0, 0x4, 0x1, 0x48, 0x0, 0x4, 0x1 +.db 0x89, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_cw.s b/maps/map_cw.s index 3adb6c0..e6250f1 100644 --- a/maps/map_cw.s +++ b/maps/map_cw.s @@ -28,6 +28,5 @@ map_cw_bg: .db 0x00 ; termiante data map_cw_tile_flags: -.db 0x9f, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x50, 0x0 +.db 0xff, 0x0, 0x1, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_tc.s b/maps/map_tc.s index e55dd49..335464f 100644 --- a/maps/map_tc.s +++ b/maps/map_tc.s @@ -29,6 +29,6 @@ map_tc_bg: map_tc_tile_flags: .db 0x27, 0x0, 0x4, 0x1, 0x48, 0x0, 0x4, 0x1 -.db 0x8, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x1, 0x12, 0xf, 0x0, 0x1, 0x12, 0x5f, 0x0 +.db 0x19, 0x0, 0x1, 0x10, 0xf, 0x0, 0x1, 0x10 +.db 0x5f, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_te.s b/maps/map_te.s index 150bda1..7469d00 100644 --- a/maps/map_te.s +++ b/maps/map_te.s @@ -28,6 +28,5 @@ map_te_bg: .db 0x00 ; termiante data map_te_tile_flags: -.db 0x9f, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x50, 0x0 +.db 0xff, 0x0, 0x1, 0x0 .db 0x00 ; termiante data diff --git a/maps/map_tw.s b/maps/map_tw.s index efec5d1..259d117 100644 --- a/maps/map_tw.s +++ b/maps/map_tw.s @@ -28,6 +28,5 @@ map_tw_bg: .db 0x00 ; termiante data map_tw_tile_flags: -.db 0x9f, 0x0, 0x1, 0x2, 0xf, 0x0, 0x1, 0x2 -.db 0x50, 0x0 +.db 0xff, 0x0, 0x1, 0x0 .db 0x00 ; termiante data diff --git a/src/exittables.s b/src/exittables.s index 2429516..2f9cadc 100644 --- a/src/exittables.s +++ b/src/exittables.s @@ -1,6 +1,14 @@ +; exit tables: +; down: 0 +; left: 1 +; right: 2 +; up: 3 + map_c_exit_table: -exit_def EXITF_GOTOXY_REL, BTNRIGHT, 0, -15, map_ce_header +exit_def EXITF_GOTOXY_REL, BTNDOWN, -15, 0, map_ce_header exit_def EXITF_GOTOXY_REL, BTNLEFT, 0, 15, map_cw_header +exit_def EXITF_GOTOXY_REL, BTNRIGHT, 0, -15, map_cw_header +exit_def EXITF_GOTOXY_REL, BTNUP, 15, 0, map_cw_header map_ce_exit_table: exit_def EXITF_GOTOXY_REL, BTNLEFT, 0, 15, map_c_header diff --git a/src/player.s b/src/player.s index b27874d..de93ec5 100644 --- a/src/player.s +++ b/src/player.s @@ -96,7 +96,7 @@ unit_check_exit_hit: jr z, @skip_input_check REL ; if inputs is not 0 we check button state ld b, a ; b = button mask - input_just + input_held ret z ; if not input bail @skip_input_check: diff --git a/tools/tms2map.py b/tools/tms2map.py index 64a99cf..2706b45 100755 --- a/tools/tms2map.py +++ b/tools/tms2map.py @@ -167,7 +167,19 @@ def get_map_props(root): def read_bg_props(data): for child in data: name = child.attrib['name'] - if name.startswith('flags_'): + if name.startswith('flags_left'): + for i in range(0, MAP_H): + BG_FLAGS[(MAP_W)*i] = int(child.attrib['value']) + elif name.startswith('flags_up'): + for i in range(0, MAP_W): + BG_FLAGS[i] = int(child.attrib['value']) + elif name.startswith('flags_down'): + for i in range(0, MAP_W): + BG_FLAGS[(MAP_H) * (MAP_W - 1) + i] = int(child.attrib['value']) + elif name.startswith('flags_right'): + for i in range(0, MAP_H): + BG_FLAGS[(MAP_W - 1) + (MAP_W) * i] = int(child.attrib['value']) + elif name.startswith('flags_'): name = name.replace('flags_', '') coords = name.split(',') tile_index = int(coords[1]) * MAP_W + int(coords[0]) -- 2.30.2