map: maps can now load tile banks dynamically
authorLukas Krickl <lukas@krickl.dev>
Fri, 20 Jun 2025 18:15:00 +0000 (20:15 +0200)
committerLukas Krickl <lukas@krickl.dev>
Fri, 20 Jun 2025 18:15:00 +0000 (20:15 +0200)
src/map.s
src/video.s

index fdf1a8f1daa02f860273ce7892f0c2a25f2475c8..6e19ac9055555eadcac8e6e18c603746d846c8d5 100644 (file)
--- 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:
index 1a20089a2da01592da5d89506fbebc81c668370b..1a87d156d5844845821acf9bd760e022677f4b55 100644 (file)
@@ -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