aboutsummaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
Diffstat (limited to 'map')
-rw-r--r--map/dungeons.gbasm23
-rw-r--r--map/dungeons/campsite.gbasm6
-rw-r--r--map/generationevents.gbasm63
3 files changed, 71 insertions, 21 deletions
diff --git a/map/dungeons.gbasm b/map/dungeons.gbasm
index f6ac819..8afe451 100644
--- a/map/dungeons.gbasm
+++ b/map/dungeons.gbasm
@@ -30,14 +30,29 @@
.END
.MACRODEF GEN_EVENT_SPECIAL_ENTITY floor entity_idx
- $start:
- .DB low($floor), $02, low($entity_idx)
- .PADTO =$start+8
+ $load:
+ .DB low($floor), $03, $07, low($entity_idx)
+ .PADTO =$load+8
+ $spawn:
+ .DB low($floor), $04, $07
+ .PADTO =$spawn+8
+.END
+
+.MACRODEF GEN_EVENT_LOAD_ENTITY floor loaded_entity_idx entity_idx
+ $load:
+ .DB low($floor), $03, low($loaded_entity_idx), low($entity_idx)
+ .PADTO =$load+8
+.END
+
+.MACRODEF GEN_EVENT_SPAWN_LOADED_ENTITY_XY floor loaded_entity_idx arg_x arg_y arg_d
+ $spawn:
+ .DB low($floor), $05, low($loaded_entity_idx), low($arg_x), low($arg_y), low($arg_d)
+ .PADTO =$spawn+8
.END
.MACRODEF GEN_EVENT_REMOVE_STAIRS floor
$start:
- .DB low($floor), $03
+ .DB low($floor), $02
.PADTO =$start+8
.END
diff --git a/map/dungeons/campsite.gbasm b/map/dungeons/campsite.gbasm
index 2ee4a1f..cef4abb 100644
--- a/map/dungeons/campsite.gbasm
+++ b/map/dungeons/campsite.gbasm
@@ -5,7 +5,7 @@ Camp_Site:
.flag: .DB 0b00100001
- .tilemap_padding:
+ .tilemap:
.DB bank(=_map_Test)
.DB ptr(=_map_Test)
@@ -13,10 +13,12 @@ Camp_Site:
.DB bank(=Camp_Site_Fire_Animation)
.DB ptr(=Camp_Site_Fire_Animation)
- .generation_events.size:
+ .generation_events.size_padding:
.DB low(=.generation_events.end-=.generation_events)
.generation_events:
+ .GEN_EVENT_LOAD_ENTITY $01 $05 $08
+ .GEN_EVENT_SPAWN_LOADED_ENTITY_XY $01 $05 $11 $10 $01
.GEN_EVENT_REMOVE_STAIRS $01
.generation_events.end:
diff --git a/map/generationevents.gbasm b/map/generationevents.gbasm
index b540508..5fc35de 100644
--- a/map/generationevents.gbasm
+++ b/map/generationevents.gbasm
@@ -4,7 +4,7 @@ Generation_Event_Execution:
LD HL, $mem_dungeon_generation_events
.loop:
LD A, (HL+)
- CP $00
+ AND A
JR Z, =.skip
CP D
JR NZ, =.skip
@@ -24,7 +24,7 @@ Generation_Event_Execution:
AND $f8
ADD $08
LD L, A
- CP $00
+ AND A
JR NZ, =.loop
RET
@@ -40,11 +40,20 @@ Generation_Event_Jump_Table:
NOP
; 02
- JP =.Entity
+ JP =.Remove_Stairs
NOP
; 03
- JP =.Remove_Stairs
+ JP =.Load_Entity
+ NOP
+
+ ; 04
+ JP =.Entity_Random_Room
+ NOP
+
+ ; 05
+ JP =.Entity_XY
+ NOP
.Dialogue_Script:
LD A, $enum_dungeon_dialogue_mode
@@ -58,18 +67,42 @@ Generation_Event_Jump_Table:
LD ($mem_dialogue_script_program_counter+1), A
JP =Dialogue_script_step
- .Entity:
- LD A, (HL)
- LD $mem_loaded_special_entity_index, A
+ .Load_Entity:
+ LD A, (HL+)
+ LD E, A
+ LD D, $00
+ LD A, (HL)
+ LD HL, $mem_loaded_entities_indices
+ ADD HL, DE
+ LD (HL), A
+ RET
- CALL =FindFreeEntity
- LD A, $01
- LD $tmp_var_3, A
- LD A, $07
- CALL =Initialize_Entity
- RET
+ .Entity_Random_Room:
+ LD A, $01
+ LD $tmp_var_3, A
+
+ LD D, (HL)
+ CALL =FindFreeEntity
+ LD A, D
+ JP =Initialize_Entity
+
+ .Entity_XY:
+ LD A, (HL+)
+ LD D, A
+ LD A, (HL+)
+ LD B, A
+ LD A, (HL+)
+ LD C, A
+ LD A, (HL)
+ DBG
+ SWAP A
+ OR $02
+ LD $tmp_var_3, A
+ CALL =FindFreeEntity
+ LD A, D
+ JP =Initialize_Entity
.Remove_Stairs:
- LD HL, $mem_object_list
- LD (HL), $00
+ LD HL, $mem_object_list
+ LD (HL), $00
RET