maps: Added near center wall drawing
authorLukas Krickl <lukas@krickl.dev>
Thu, 1 Jan 2026 11:45:58 +0000 (12:45 +0100)
committerLukas Krickl <lukas@krickl.dev>
Thu, 1 Jan 2026 11:45:58 +0000 (12:45 +0100)
makefile
maps/near_center_wall_left.inc [new file with mode: 0644]
maps/near_center_wall_middle.inc [new file with mode: 0644]
maps/near_center_wall_right.inc [new file with mode: 0644]
src/map.s
src/tiles.s
tools/tmx2map.py

index 07c59ef934f354917983d5c6fb6ebcb4e69b832b..37e45fbd55ad4fd6ac2dee7d3266ca35c9460d34 100644 (file)
--- a/makefile
+++ b/makefile
@@ -28,5 +28,10 @@ maps:
        ./tools/tmx2map.py assets/maps/near_right_door.tmx 1 > maps/near_right_door.inc 
        ./tools/tmx2map.py assets/maps/far_left_door.tmx 1 > maps/far_left_door.inc 
        ./tools/tmx2map.py assets/maps/far_right_door.tmx 1 > maps/far_right_door.inc 
+
        ./tools/tmx2map.py assets/maps/far_center_door.tmx 1 > maps/far_center_door.inc 
        ./tools/tmx2map.py assets/maps/far_center_wall.tmx 1 > maps/far_center_wall.inc 
+
+       ./tools/tmx2map.py assets/maps/near_center_wall_left.tmx 1 > maps/near_center_wall_left.inc 
+       ./tools/tmx2map.py assets/maps/near_center_wall_middle.tmx 1 > maps/near_center_wall_middle.inc 
+       ./tools/tmx2map.py assets/maps/near_center_wall_right.tmx 1 > maps/near_center_wall_right.inc 
diff --git a/maps/near_center_wall_left.inc b/maps/near_center_wall_left.inc
new file mode 100644 (file)
index 0000000..e880587
--- /dev/null
@@ -0,0 +1,4 @@
+; this map was generated by tmx2map.py
+
+.db 0x15, 0x21, 0x21, 0x21, 0x10, 0x12, 0x12, 0x12, 0x10, 0x12, 0x12, 0x12, 0x10, 0x12, 0x12, 0x12, 0x25, 0x22, 0x22, 0x22
+
diff --git a/maps/near_center_wall_middle.inc b/maps/near_center_wall_middle.inc
new file mode 100644 (file)
index 0000000..930e93a
--- /dev/null
@@ -0,0 +1,4 @@
+; this map was generated by tmx2map.py
+
+.db 0x21, 0x21, 0x21, 0x21, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x22, 0x22, 0x22, 0x22
+
diff --git a/maps/near_center_wall_right.inc b/maps/near_center_wall_right.inc
new file mode 100644 (file)
index 0000000..3ad38ca
--- /dev/null
@@ -0,0 +1,4 @@
+; this map was generated by tmx2map.py
+
+.db 0x21, 0x21, 0x21, 0x16, 0x12, 0x12, 0x12, 0x20, 0x12, 0x12, 0x12, 0x20, 0x12, 0x12, 0x12, 0x20, 0x22, 0x22, 0x22, 0x26
+
index 443518a2a1395c926258ea6abf3a1556fc26901f..3c81ec19ba19b6b0b4f9c21399115b2ab73f2d66 100644 (file)
--- a/src/map.s
+++ b/src/map.s
@@ -411,6 +411,13 @@ map_full_draw_ceiling:
        ld d, 0x12
        ; set ceiling tile for 4 rows
        jp memset
+
+       ; draws floor tiles
+map_full_draw_floor:
+       ld hl, render_buffer + RENDER_BUF_W * 4
+       ld bc, RENDER_BUF_W * 10
+       ld d, 0x27
+       jp memset
        
        ; gets a tile based on a positon
        ; and a marching vector
@@ -477,13 +484,13 @@ map_full_draw_far_center:
 
        jr z, @no_door REL
 @door:
-       ld hl, render_buffer + RENDER_BUF_W * 5 + 8
+       ld hl, render_buffer + RENDER_BUF_W * 4 + 8
        ld de, far_center_door
        ld bc, RENDER_BUF_W - 4
        ld a, 3
        jp tiles_block_copy
 @no_door:
-       ld hl, render_buffer  + RENDER_BUF_W * 5 + 8
+       ld hl, render_buffer  + RENDER_BUF_W * 4 + 8
        ld de, far_center_wall
        ld bc, RENDER_BUF_W - 4
        ld a, 3
@@ -500,15 +507,35 @@ map_full_draw_near_center:
        call map_get_tile
        ; hl = tile
        ld de, t_flags0
+       add hl, de
 
        ; get forward direction flag
-       add hl, de
        ld b, [hl]
        ld a, [dir_tf_forward]
+       and a, b
 
-       ret z ; do nothing if there is an opening
+       ret nz ; do nothing if there is an opening
 
 @no_door:
+       ; draw near center wall left, right and center
+       ld hl, render_buffer + RENDER_BUF_W * 4 + 4
+       ld de, near_center_wall_left
+       ld bc, RENDER_BUF_W - 4
+       ld a, 5
+       call tiles_block_copy
+
+       ld hl, render_buffer + RENDER_BUF_W * 4 + 8
+       ld de, near_center_wall_middle
+       ld bc, RENDER_BUF_W - 4
+       ld a, 5
+       call tiles_block_copy
+
+       ld hl, render_buffer + RENDER_BUF_W * 4 + 12
+       ld de, near_center_wall_right
+       ld bc, RENDER_BUF_W - 4
+       ld a, 5
+       call tiles_block_copy
+
        ret
 
        
@@ -530,6 +557,7 @@ map_full_draw:
 
        ; 2) draw back to front
        call map_full_draw_ceiling
+       call map_full_draw_floor
        
        ; either draw a wall or a door ahead
        call map_full_draw_far_center
index fd39a37dc6c449e839c3121297f0820144591b2e..d4abb58e80d0dda493f70d7c907e7d49eddf64ff 100644 (file)
@@ -35,6 +35,18 @@ far_center_door:
 far_center_wall:
 #include "far_center_wall.inc"
 
+       ; 4x5 tiles
+near_center_wall_left:
+#include "near_center_wall_left.inc"
+
+       ; 4x5 tiles
+near_center_wall_middle:
+#include "near_center_wall_middle.inc"
+
+       ; 4x5 tiles
+near_center_wall_right:
+#include "near_center_wall_right.inc"
+
        ; copies a row of tiles
        ; from a linear buffer into a new block
        ; blocks must be 4 tiles wide
index 2a6a05d7627cf4ec9737cb4cad4e3a9e61addd78..4b1c9c637c68a9b69db13936bfb0ae03561d30ce 100755 (executable)
@@ -45,11 +45,8 @@ def convert(src):
        for child in root:
                if child.tag == "layer":
                        name = child.attrib['name']
-                       if name == 'bg':
-                               for data in child:
-                                       print_bg_data(data.text)
-                       elif name == 'doors':
-                                       pass
+                       for data in child:
+                               print_bg_data(data.text)
 
 convert(src)