maps: Added left, right, up, down flags to mapgen
authorLukas Krickl <lukas@krickl.dev>
Tue, 22 Jul 2025 10:58:49 +0000 (12:58 +0200)
committerLukas Krickl <lukas@krickl.dev>
Tue, 22 Jul 2025 10:58:49 +0000 (12:58 +0200)
This allows setting up exits for an entire corner of the map easily.
Set up exit tables for the _c map for now.

12 files changed:
maps/map_bc.s
maps/map_be.s
maps/map_bw.s
maps/map_c.s
maps/map_ce.s
maps/map_cw.s
maps/map_tc.s
maps/map_te.s
maps/map_tw.s
src/exittables.s
src/player.s
tools/tms2map.py

index 8c7260277ae4bd65b04cf66ecdd57d614713ae2d..f071db3a80875cb96a9680506f149297051d539a 100644 (file)
@@ -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
index 1705d4823ec046953fdee8d9bf0e0b81c8a59f1b..09fcae3dcd925ac000878bf6c9846d456df9e462 100644 (file)
@@ -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
index b79c55a9a2756fd0209b8f6c2ddbcb0759ceb70a..4a1e1f2c8fbcf2fea1da347d62a12047c5530e0e 100644 (file)
@@ -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
index 702a87c51f4582e806017a91f366c29623a92d4e..885ff58ab4d9416b6e39d24fc3c0efdf066ef03b 100644 (file)
@@ -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
index ce05bed34b8667adb0f9b2f1100504fb0508b626..27753e709008fde5a2ed3b955bcc690bc87597ed 100644 (file)
@@ -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
index 3adb6c0b109b5fa581a3be42770b92696bc64eac..e6250f1efebd3055cd9d45c7d6559df8cacea328 100644 (file)
@@ -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
index e55dd49a1f8b246bd480e2976db72ef48ccfc638..335464fe8654949dc2c05f432fbb390028db2a65 100644 (file)
@@ -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
index 150bda1375506a04ee0efea05829c0470610928a..7469d00b537e65832a765e481ee1cca0602026ca 100644 (file)
@@ -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
index efec5d1900b68ad191e7228e64af029c66372595..259d117d587234d5c4bb8f12d754fe24798d0b5f 100644 (file)
@@ -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
index 2429516056f67bb7979b76687a6257d5c7f04756..2f9cadcac8eb14a043112b780c04dd89629658a0 100644 (file)
@@ -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 
index b27874dbae6969baf40ffd011cb4816f3fe8ccbc..de93ec52a4764fb8d32ba062324f5e31cb68c88f 100644 (file)
@@ -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:
   
index 64a99cf6ec626d3f92decb4da3aec5c34b6d487d..2706b4581bfb33d2817048aa48d7cbc0bd8221be 100755 (executable)
@@ -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])