; map header struct
.se 0
.de map_flags, 1
- ; 8 bytes reserved for map names
- ; map_name in map properties
-.de map_bg_ptr, 2
-
+.de map_init_pat, 2
; ptr to map objects list
.de map_objs_ptr, 2
; pointers to tile banks to be loaded
- ; tile space
-.def int TS = 0x30
+ ; loads a map
+ ; including the required tileset
+ ; sets current page to 0
+ ; draws page 0 to the screen
+ ; loads map objects
+ ; inputs:
+ ; de: map ptr
+map_load:
+ call disableinterrupts
+ call next_vblank_wait
+ call lcd_off
-pat_empty:
-.db TS, TS, TS, TS, TS, TS, TS, TS, TS, TS
+ call map_tile_banks_load
+
+ call lcd_on
+ call vblank_wait
+ call enableinterrupts
+ ret
+
+ ; loads all tile banks
+ ; for a specific map
+ ; inputs:
+ ; de: map ptr
+map_tile_banks_load:
+ ld hl, 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
- ; enf of level row pattern
-pat_eol:
-.db 0xFF
+ 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
+ push hl
+ call tiles_load_bank8C00
+
+ pop hl
+ ld a, [hl+]
+ ld e, a
+ ld a, [hl+]
+ ld d, a
+ call tiles_load_bank9000
+
+ ret
+
+ ; draws the current row pattern
+ ; only call during blank
+map_draw_row:
+ ret
+
+
+l1_map:
+ mapdef 0, pat_empty, NULL, bank8000, bank8800, bank8C00, bank9000
+
+ ; tile space
+.def int TS = 0x30
+
+pat_empty:
+.db TS, TS, TS, TS, TS, TS, TS, TS, TS, TS
+
+ ; enf of level row pattern
+pat_eol:
+.db 0xFF