aboutsummaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-07-01 15:20:38 +0200
committerAstatin <[email protected]>2025-07-01 15:20:38 +0200
commitbcc4605c06e2b36698ae05eeda1f9078bfbcd2c7 (patch)
tree5c312652e6659ed8c5cc292590f4d4a0e3937133 /map
parentfe3bd75e5844c90a0d82c32d7c08782d5bf32f52 (diff)
Load tilemap or generation depending on dungeon flags
Diffstat (limited to 'map')
-rw-r--r--map/dungeons/morningforest.gbasm5
-rw-r--r--map/loading/dungeoninfos.gbasm73
-rw-r--r--map/loading/dungeontiles.gbasm7
-rw-r--r--map/loading/romtiles.gbasm18
4 files changed, 65 insertions, 38 deletions
diff --git a/map/dungeons/morningforest.gbasm b/map/dungeons/morningforest.gbasm
index 893ac57..3ee08e3 100644
--- a/map/dungeons/morningforest.gbasm
+++ b/map/dungeons/morningforest.gbasm
@@ -5,7 +5,10 @@ Morning_Forest:
.flag: .DB 0b00011110
- .tilemap_padding: .PADTO =.tilemap_padding+3
+ .tilemap_padding:
+ .DB bank(=_map_Test)
+ .DB ptr(=_map_Test)
+ ; .PADTO =.tilemap_padding+3
.generation_events.size:
.DB low(=.generation_events.end-=.generation_events)
diff --git a/map/loading/dungeoninfos.gbasm b/map/loading/dungeoninfos.gbasm
index 2b8fceb..c43a20b 100644
--- a/map/loading/dungeoninfos.gbasm
+++ b/map/loading/dungeoninfos.gbasm
@@ -1,4 +1,6 @@
-Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A
+Load_Dungeon_Infos: ; pointer to Dungeon struct in HL, bank in A
+ ; Load_Dungeon_Txt
+ LD D, A
.CHANGE_BANK_TO_A
LD A, (HL+)
@@ -10,6 +12,7 @@ Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A
LD A, E
.CHANGE_BANK_TO_A
+ PUSH HL
PUSH BC
LD H, B
LD L, C
@@ -29,6 +32,48 @@ Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A
LD H, A
POP BC
CALL =Print_str
+ POP HL
+
+ LD A, D
+ .CHANGE_BANK_TO_A
+
+ ; Load dungeon flags
+ LD A, (HL+)
+ LD $mem_dungeon_flags, A
+
+ ; Load tilemap
+ LD A, (HL+)
+ LD ($mem_rom_tilemap_addr), A
+ LD ($mem_rom_collision_map_addr), A
+ LD A, (HL+)
+ LD B, A
+ LD A, (HL+)
+ LD ($mem_rom_collision_map_addr+2), A
+ ADD $80
+ LD ($mem_rom_tilemap_addr+2), A
+ LD A, B
+ LD ($mem_rom_collision_map_addr+1), A
+ ADC $00
+ LD ($mem_rom_tilemap_addr+1), A
+
+ ; Load_Generation_Events
+ LD A, D
+ .CHANGE_BANK_TO_A
+ LD B, $00
+ LD C, (HL)
+ INC HL
+ LD D, H
+ LD E, L
+ LD HL, $mem_dungeon_generation_events
+ CALL =memcpy
+
+ LD A, C
+ CPL
+ INC A
+ ADD $80
+ LD C, A
+
+ CALL =bzero
RET
@@ -104,29 +149,3 @@ Load_Dungeon_Spawn_patterns: ; pointer to Dungeon struct in HL bank in A
LD $mem_entity_spawning_pattern, A
RET
-
-Load_Generation_Events: ; bank in A, dungeon ptr in HL
- .CHANGE_BANK_TO_A
- LD A, L
- ADD $07
- LD L, A
- LD A, H
- ADC $00
- LD H, A
- LD B, $00
- LD C, (HL)
- INC HL
- LD D, H
- LD E, L
- LD HL, $mem_dungeon_generation_events
- CALL =memcpy
-
- LD A, C
- CPL
- INC A
- ADD $80
- LD C, A
-
- CALL =bzero
-
- RET
diff --git a/map/loading/dungeontiles.gbasm b/map/loading/dungeontiles.gbasm
index 5f91197..ad02ff1 100644
--- a/map/loading/dungeontiles.gbasm
+++ b/map/loading/dungeontiles.gbasm
@@ -166,11 +166,10 @@ Construct_Tile_Address: ; Construct Tile Map address from A and B in DE
RET
-Load_Block:
Load_Block_From_Solid: ; X in A, Y in B
- PUSH BC
- PUSH AF
- .After_AF_BC_Push:
+ .AF_AF_BC_Push:
+ POP AF
+ .AF_BC_Push:
PUSH DE
diff --git a/map/loading/romtiles.gbasm b/map/loading/romtiles.gbasm
index 989a201..e35a1e5 100644
--- a/map/loading/romtiles.gbasm
+++ b/map/loading/romtiles.gbasm
@@ -1,9 +1,17 @@
-Load_ROM_Block: ; X in A, Y in B
+Load_Block:
PUSH BC
PUSH AF
+ PUSH AF
+ LD A, $mem_dungeon_flags
+ AND $01
+ JP Z, =Load_Block_From_Solid.AF_AF_BC_Push
+ POP AF
+
+ .After_AF_BC_Push:
+
CP $20
- JP NC, =Load_Block_From_Solid.After_AF_BC_Push
+ JP NC, =Load_Block_From_Solid.AF_BC_Push
PUSH BC
LD C, A
@@ -11,14 +19,14 @@ Load_ROM_Block: ; X in A, Y in B
CP $20
LD A, C
POP BC
- JP NC, =Load_Block_From_Solid.After_AF_BC_Push
+ JP NC, =Load_Block_From_Solid.AF_BC_Push
+Load_ROM_Block: ; X in A, Y in B
PUSH DE
PUSH HL
LD C, A
-
CALL =Construct_Tile_Address
LD A, $mem_map_loading_flags
@@ -42,8 +50,6 @@ Load_ROM_Block: ; X in A, Y in B
OR C
LD C, A
- DBG
-
LD A, L
ADD C
LD L, A