From 0be026c91e807392c9175490a9c0b6df78a057d2 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Fri, 2 Jan 2026 07:02:54 +0100 Subject: [PATCH] map: Added more wall templates Fixed east/west direction vectors. --- makefile | 3 ++ maps/far_center_left_wall.inc | 2 +- maps/far_center_right_wall.inc | 2 +- maps/near_left_center_wall.inc | 5 ++ maps/near_right_center_wall.inc | 5 ++ src/map.s | 70 +++++++++++++++++++++--- src/tiles.s | 12 ++++- tiles/bank8000.inc | 96 ++++++++++++++++----------------- tiles/bank9000.inc | 96 ++++++++++++++++----------------- 9 files changed, 185 insertions(+), 106 deletions(-) create mode 100644 maps/near_left_center_wall.inc create mode 100644 maps/near_right_center_wall.inc diff --git a/makefile b/makefile index 8885b66..ba4cd84 100644 --- a/makefile +++ b/makefile @@ -44,3 +44,6 @@ maps: ./tools/tmx2map.py assets/maps/far_center_right_wall.tmx 1 > maps/far_center_right_wall.inc ./tools/tmx2map.py assets/maps/far_center_left_wall.tmx 1 > maps/far_center_left_wall.inc + + ./tools/tmx2map.py assets/maps/near_right_center_wall.tmx 1 > maps/near_right_center_wall.inc + ./tools/tmx2map.py assets/maps/near_left_center_wall.tmx 1 > maps/near_left_center_wall.inc diff --git a/maps/far_center_left_wall.inc b/maps/far_center_left_wall.inc index 2c38372..b546093 100644 --- a/maps/far_center_left_wall.inc +++ b/maps/far_center_left_wall.inc @@ -1,4 +1,4 @@ ; this map was generated by tmx2map.py -.db 0x15, 0x21, 0x21, 0x21, 0x10, 0x12, 0x12, 0x12, 0x25, 0x22, 0x22, 0x22 +.db 0x48, 0x49, 0x4a, 0x3, 0x15, 0x21, 0x21, 0x21, 0x10, 0x12, 0x12, 0x12, 0x25, 0x22, 0x22, 0x22 diff --git a/maps/far_center_right_wall.inc b/maps/far_center_right_wall.inc index 600df44..e896a66 100644 --- a/maps/far_center_right_wall.inc +++ b/maps/far_center_right_wall.inc @@ -1,4 +1,4 @@ ; this map was generated by tmx2map.py -.db 0x21, 0x21, 0x21, 0x16, 0x12, 0x12, 0x12, 0x20, 0x22, 0x22, 0x22, 0x26 +.db 0x4, 0x4d, 0x4e, 0x4f, 0x21, 0x21, 0x21, 0x16, 0x12, 0x12, 0x12, 0x20, 0x22, 0x22, 0x22, 0x26 diff --git a/maps/near_left_center_wall.inc b/maps/near_left_center_wall.inc new file mode 100644 index 0000000..f27d958 --- /dev/null +++ b/maps/near_left_center_wall.inc @@ -0,0 +1,5 @@ +; this map was generated by tmx2map.py + +.db 0x48, 0x49, 0x4a, 0x3, 0x21, 0x21, 0x21, 0x21, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 +.db 0x22, 0x22, 0x22, 0x22 + diff --git a/maps/near_right_center_wall.inc b/maps/near_right_center_wall.inc new file mode 100644 index 0000000..0bbb00e --- /dev/null +++ b/maps/near_right_center_wall.inc @@ -0,0 +1,5 @@ +; this map was generated by tmx2map.py + +.db 0x4, 0x4d, 0x4e, 0x4f, 0x21, 0x21, 0x21, 0x21, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 +.db 0x22, 0x22, 0x22, 0x22 + diff --git a/src/map.s b/src/map.s index a474d35..397ea38 100644 --- a/src/map.s +++ b/src/map.s @@ -268,9 +268,9 @@ _dir_vectors_east: ; back .db 0, -1 ; left - .db 1, 0 - ; right .db -1, 0 + ; right + .db 1, 0 _dir_vectors_west: ; forward @@ -278,9 +278,9 @@ _dir_vectors_west: ; back .db 0, 1 ; left - .db -1, 0 - ; right .db 1, 0 + ; right + .db -1, 0 _dir_vectors_north: ; forward @@ -570,7 +570,10 @@ map_full_draw_near_left: ld de, near_left_door ld bc, RENDER_BUF_W - 4 ld a, 7 - jp tiles_block_copy + call tiles_block_copy + + ; draw a near left wall if needed + jp map_full_draw_near_left_wall @no_door: ld hl, render_buffer + RENDER_BUF_W * 3 ld de, near_left_wall @@ -578,6 +581,32 @@ map_full_draw_near_left: ld a, 7 jp tiles_block_copy + ; draws a near left wall if + ; the near left tile has a forward wall + ; otherwise does nothing +map_full_draw_near_left_wall: + ; get left tile + ld de, player + map_load_march_vec dir_vector_left + ld a, 1 + call map_get_tile_march + ; hl = tile to the left + ld de, t_flags0 + add hl, de + + ld b, [hl] + ld a, [dir_tf_forward] + and a, b + ret nz ; bail if door + + ld hl, render_buffer + RENDER_BUF_W * 3 + ld de, near_center_left_wall + ld bc, RENDER_BUF_W-4 + ld a, 6 + call tiles_block_copy + + ret + ; draws near right wall or door map_full_draw_near_right: @@ -597,7 +626,9 @@ map_full_draw_near_right: ld de, near_right_door ld bc, RENDER_BUF_W - 4 ld a, 7 - jp tiles_block_copy + call tiles_block_copy + + jp map_full_draw_near_right_wall @no_door: ld hl, render_buffer + RENDER_BUF_W * 3 + 16 ld de, near_right_wall @@ -606,6 +637,33 @@ map_full_draw_near_right: jp tiles_block_copy + ; draws a near right wall if + ; the near right tile has a forward wall + ; otherwise does nothing +map_full_draw_near_right_wall: + ; get left tile + ld de, player + map_load_march_vec dir_vector_right + ld a, 1 + call map_get_tile_march + ; hl = tile to the left + ld de, t_flags0 + add hl, de + + ld b, [hl] + ld a, [dir_tf_forward] + and a, b + ret nz ; bail if door + + ld hl, render_buffer + RENDER_BUF_W * 3 + 16 + ld de, near_center_right_wall + ld bc, RENDER_BUF_W-4 + ld a, 6 + call tiles_block_copy + + ret + + ; draws far left wall or door map_full_draw_far_left: _map_full_draw_load_far_tile diff --git a/src/tiles.s b/src/tiles.s index de49227..1a64ef0 100644 --- a/src/tiles.s +++ b/src/tiles.s @@ -63,13 +63,21 @@ far_left_wall: far_right_wall: #include "far_right_wall.inc" - ; 4x3 tiles + ; 4x4 tiles far_center_left_wall: #include "far_center_left_wall.inc" - ; 4x3 tiles + ; 4x4 tiles far_center_right_wall: #include "far_center_right_wall.inc" + + ; 4x6 tiles +near_center_left_wall: +#include "near_left_center_wall.inc" + + ; 4x6 tiles +near_center_right_wall: +#include "near_right_center_wall.inc" ; copies a row of tiles ; from a linear buffer into a new block diff --git a/tiles/bank8000.inc b/tiles/bank8000.inc index 79a60a0..8af81cf 100644 --- a/tiles/bank8000.inc +++ b/tiles/bank8000.inc @@ -647,32 +647,32 @@ .chr 00000000 .chr 00000000 ; tile 72 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 33111111 +.chr 31333311 +.chr 31111133 +.chr 31111111 +.chr 31111111 +.chr 31111111 +.chr 31111111 +.chr 31111111 ; tile 73 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 33111111 +.chr 11333111 +.chr 11111333 +.chr 11111111 +.chr 11111111 +.chr 11111111 ; tile 74 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 31111111 +.chr 13333111 +.chr 11111333 +.chr 11111111 ; tile 75 .chr 00000000 .chr 00000000 @@ -692,32 +692,32 @@ .chr 00000000 .chr 00000000 ; tile 77 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111113 +.chr 11133331 +.chr 33311111 +.chr 11111111 ; tile 78 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111133 +.chr 11133311 +.chr 33311111 +.chr 11111111 +.chr 11111111 +.chr 11111111 ; tile 79 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111133 +.chr 11333313 +.chr 33111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 ; tile 80 .chr 30222222 .chr 30222222 diff --git a/tiles/bank9000.inc b/tiles/bank9000.inc index 79a60a0..8af81cf 100644 --- a/tiles/bank9000.inc +++ b/tiles/bank9000.inc @@ -647,32 +647,32 @@ .chr 00000000 .chr 00000000 ; tile 72 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 33111111 +.chr 31333311 +.chr 31111133 +.chr 31111111 +.chr 31111111 +.chr 31111111 +.chr 31111111 +.chr 31111111 ; tile 73 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 33111111 +.chr 11333111 +.chr 11111333 +.chr 11111111 +.chr 11111111 +.chr 11111111 ; tile 74 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 31111111 +.chr 13333111 +.chr 11111333 +.chr 11111111 ; tile 75 .chr 00000000 .chr 00000000 @@ -692,32 +692,32 @@ .chr 00000000 .chr 00000000 ; tile 77 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111111 +.chr 11111113 +.chr 11133331 +.chr 33311111 +.chr 11111111 ; tile 78 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111111 +.chr 11111111 +.chr 11111133 +.chr 11133311 +.chr 33311111 +.chr 11111111 +.chr 11111111 +.chr 11111111 ; tile 79 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 11111133 +.chr 11333313 +.chr 33111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 +.chr 11111113 ; tile 80 .chr 30222222 .chr 30222222 -- 2.30.2