; this map was generated by tmx2map.py
.db 0x9, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0x5
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
-.db 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0xa, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x9, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0x9, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0x3, 0xb, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
+.db 0x3, 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7
.db 0xa, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0x6
#define SCRN0_END 0x9BF3
+#define WALL_EMPTY_TILE 0x17
; inits map globals
; such as map_vram_tl
map_full_draw_write_door_state 1, 1, ret
dec b ; move one tile back
+ call map_get_tile
map_full_draw_door_state TF_NE, TF_WE, TF_EE
map_full_draw_write_door_state 3, 2, ret
ret
@south:
- map_full_draw_door_state TF_SE, TF_EE, TF_WE
+ map_full_draw_door_state TF_SE, TF_WE, TF_EE
map_full_draw_write_door_state 1, 1, ret
inc b ; move one tile forward
- map_full_draw_door_state TF_SE, TF_EE, TF_WE
+ call map_get_tile
+ map_full_draw_door_state TF_SE, TF_WE, TF_EE
map_full_draw_write_door_state 3, 2, ret
ret
@east:
map_full_draw_write_door_state 1, 1, ret
inc c ; move one tile east
+ call map_get_tile
map_full_draw_door_state TF_EE, TF_NE, TF_SE
map_full_draw_write_door_state 3, 2, ret
ret
map_full_draw_write_door_state 1, 1, ret
dec c ; move one tile west
+ call map_get_tile
map_full_draw_door_state TF_WE, TF_SE, TF_NE
map_full_draw_write_door_state 3, 2, ret
ret
-
+
+ ; draws near doors
+_map_full_draw_near_doors:
+ ld a, [tmp_map_near_left_door]
+ cp a, 1
+ jr nz, @no_near_left REL
+ ld hl, render_buffer
+ ld de, RENDER_BUF_W * 6 + 1
+ add hl, de
+
+ ld a, WALL_EMPTY_TILE
+ ld [hl+], a
+ ld [hl+], a
+
+ ld de, RENDER_BUF_W-2
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+@no_near_left:
+
+ ld a, [tmp_map_near_right_door]
+ cp a, 1
+ jr nz, @no_near_right REL
+ ld hl, render_buffer
+ ld de, RENDER_BUF_W * 6 + 17
+ add hl, de
+
+ ld a, WALL_EMPTY_TILE
+ ld [hl+], a
+ ld [hl+], a
+
+ ld de, RENDER_BUF_W-2
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+@no_near_right:
+ ret
; draws a full map copy into the current map view buffer
; bsed on the current location the player is facing
ld hl, render_buffer
ld bc, RENDER_BUF_TILES
call memcpy
+
+ ; clear far back door if _forward is > 1
+ ld a, [tmp_map_forward]
+ cp a, 2
+ jr nz, @no_far_forward_door REL
+ ld hl, render_buffer
+ ld de, RENDER_BUF_W * 6 + 9
+ add hl, de
+ ld a, WALL_EMPTY_TILE
+ ld [hl+], a
+ ld [hl+], a
+
+ ld de, RENDER_BUF_W-2
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+@no_far_forward_door:
+
+ ld a, [tmp_map_far_left_door]
+ cp a, 1
+ jr nz, @no_far_left_door REL
+ ld hl, render_buffer
+ ld de, RENDER_BUF_W * 6 + 5
+ add hl, de
+ ld a, WALL_EMPTY_TILE
+
+ ld [hl+], a
+ ld [hl+], a
+
+ ld de, RENDER_BUF_W-2
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+@no_far_left_door:
+
+ ld a, [tmp_map_far_right_door]
+ cp a, 1
+ jr nz, @no_far_right_door REL
+ ld hl, render_buffer
+ ld de, RENDER_BUF_W * 6 + 13
+ add hl, de
+ ld a, WALL_EMPTY_TILE
+
+ ld [hl+], a
+ ld [hl+], a
+
+ ld de, RENDER_BUF_W-2
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+ add hl, de
+ ld [hl+], a
+ ld [hl+], a
+
+@no_far_right_door:
+ call _map_full_draw_near_doors
+
jp @done
@short_wall:
; draw short wall template
ld bc, RENDER_BUF_TILES
call memcpy
+ call _map_full_draw_near_doors
+
@done:
; 4) go to render state
call update_render