From a48f2926a7db747194f7affa5ac3edf9160e0758 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Fri, 20 Jun 2025 20:15:00 +0200 Subject: [PATCH] map: maps can now load tile banks dynamically --- src/map.s | 34 ++++++++++++++++++++++++++++++++++ src/video.s | 22 +++++++++++++--------- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/map.s b/src/map.s index fdf1a8f..6e19ac9 100644 --- a/src/map.s +++ b/src/map.s @@ -18,6 +18,8 @@ map_load: push hl call map_actors_load pop hl + + call map_tile_banks_load call map_draw_all @@ -213,6 +215,38 @@ map_actors_load: call unit_next_request ret + ; loads map tilesets + ; inputs: + ; hl: map ptr +map_tile_banks_load: + ld de, map_tile_bank0_ptr + add hl, de ; hl = bank0 ptr + + ; load ptr + ld a, [hl+] + ld e, a + ld a, [hl+] + ld d, a + push hl + call tiles_load_bank8000 + + pop hl + ld a, [hl+] + ld e, a + ld a, [hl+] + ld d, a + push hl + call tiles_load_bank8800 + + pop hl + ld a, [hl+] + ld e, a + ld a, [hl+] + ld d, a + call tiles_load_bank9000 + + ret + ; draws all cells currently loaded to the screen ; only call during blank! map_draw_all: diff --git a/src/video.s b/src/video.s index 1a20089..1a87d15 100644 --- a/src/video.s +++ b/src/video.s @@ -169,20 +169,24 @@ video_init: ; copies tilest0 and tileset1 to ; vram copy_tiles: - ld de, bank8000 + + + ret + + ; loads tilesets + ; inputs: + ; de: source +tiles_load_bank8000: ld hl, VRAM ld bc, bank8000_end - bank8000 - call memcpy + jp memcpy - ld de, bank8800 +tiles_load_bank8800: ld hl, VRAM8800 ld bc, bank8800_end - bank8800 - call memcpy + jp memcpy - ld de, bank9000 +tiles_load_bank9000: ld hl, VRAM9000 ld bc, bank9000_end - bank9000 - call memcpy - - ret - + jp memcpy -- 2.30.2