./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
--- /dev/null
+; 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
+
--- /dev/null
+; 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
+
--- /dev/null
+; 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
+
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
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
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
; 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
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
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)