From: Lukas Krickl Date: Tue, 16 Dec 2025 17:33:14 +0000 (+0100) Subject: maps: wip map rendering with doors X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=0649105faaec89b066b35316276a3d0600d70129;p=gbrg%2F.git maps: wip map rendering with doors --- diff --git a/maps/l1.inc b/maps/l1.inc index 9a0e205..c42aaf1 100644 --- a/maps/l1.inc +++ b/maps/l1.inc @@ -1,16 +1,16 @@ ; 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 diff --git a/src/map.s b/src/map.s index 49fde97..42f10cd 100644 --- a/src/map.s +++ b/src/map.s @@ -1,4 +1,5 @@ #define SCRN0_END 0x9BF3 +#define WALL_EMPTY_TILE 0x17 ; inits map globals ; such as map_vram_tl @@ -374,15 +375,17 @@ map_full_draw_count_forward_attributes: 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: @@ -390,6 +393,7 @@ map_full_draw_count_forward_attributes: 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 @@ -398,10 +402,63 @@ map_full_draw_count_forward_attributes: 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 @@ -428,7 +485,69 @@ map_full_draw: 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 @@ -437,6 +556,8 @@ map_full_draw: ld bc, RENDER_BUF_TILES call memcpy + call _map_full_draw_near_doors + @done: ; 4) go to render state call update_render