aboutsummaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-09-09 16:53:39 +0200
committerAstatin <[email protected]>2025-09-09 16:53:39 +0200
commitb5ca0d4bff573f14ac7d3b47ebd7b23c56346b5e (patch)
tree60be3e7de9dd156416b981df014e67244c0038f0 /map
parent03c359596bdacbf39cdc244d2f164d0ec94d5505 (diff)
Add per entity dialogue + screen darkening animation for future big menu openingHEADlatestmain
Diffstat (limited to 'map')
-rw-r--r--map/dungeons.gbasm20
-rw-r--r--map/dungeons/campsite.gbasm3
-rw-r--r--map/dungeons/morningforest.gbasm3
-rw-r--r--map/generationevents.gbasm59
-rw-r--r--map/objects.gbasm6
5 files changed, 67 insertions, 24 deletions
diff --git a/map/dungeons.gbasm b/map/dungeons.gbasm
index 8afe451..8b7e711 100644
--- a/map/dungeons.gbasm
+++ b/map/dungeons.gbasm
@@ -29,24 +29,30 @@
.PADTO =$start+8
.END
-.MACRODEF GEN_EVENT_SPECIAL_ENTITY floor entity_idx
+.MACRODEF GEN_EVENT_SPECIAL_ENTITY floor entity_instance_idx entity_blueprint_idx
$load:
- .DB low($floor), $03, $07, low($entity_idx)
+ .DB low($floor), $03, $07, low($entity_blueprint_idx)
.PADTO =$load+8
$spawn:
- .DB low($floor), $04, $07
+ .DB low($floor), $04, low($entity_instance_idx), $07
.PADTO =$spawn+8
.END
-.MACRODEF GEN_EVENT_LOAD_ENTITY floor loaded_entity_idx entity_idx
+.MACRODEF GEN_EVENT_LOAD_ENTITY floor loaded_entity_idx entity_blueprint_idx
$load:
- .DB low($floor), $03, low($loaded_entity_idx), low($entity_idx)
+ .DB low($floor), $03, low($loaded_entity_idx), low($entity_blueprint_idx)
.PADTO =$load+8
.END
-.MACRODEF GEN_EVENT_SPAWN_LOADED_ENTITY_XY floor loaded_entity_idx arg_x arg_y arg_d
+.MACRODEF GEN_EVENT_SPAWN_LOADED_ENTITY_XY floor entity_instance_idx 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)
+ .DB low($floor), $05, low($entity_instance_idx), low($loaded_entity_idx), low($arg_x), low($arg_y), low($arg_d)
+ .PADTO =$spawn+8
+.END
+
+.MACRODEF GEN_EVENT_ENTITY_SET_DIALOGUE floor entity_instance_idx =dialogue_ptr
+ $spawn:
+ .DB low($floor), $06, low($entity_instance_idx), bank(=dialogue_ptr), high(ptr(=dialogue_ptr)), low(ptr(=dialogue_ptr))
.PADTO =$spawn+8
.END
diff --git a/map/dungeons/campsite.gbasm b/map/dungeons/campsite.gbasm
index cef4abb..ccc40ae 100644
--- a/map/dungeons/campsite.gbasm
+++ b/map/dungeons/campsite.gbasm
@@ -18,7 +18,8 @@ Camp_Site:
.generation_events:
.GEN_EVENT_LOAD_ENTITY $01 $05 $08
- .GEN_EVENT_SPAWN_LOADED_ENTITY_XY $01 $05 $11 $10 $01
+ .GEN_EVENT_SPAWN_LOADED_ENTITY_XY $01 $01 $05 $11 $10 $01
+ .GEN_EVENT_ENTITY_SET_DIALOGUE $01 $01 =Placeholder_Dialogue_Script
.GEN_EVENT_REMOVE_STAIRS $01
.generation_events.end:
diff --git a/map/dungeons/morningforest.gbasm b/map/dungeons/morningforest.gbasm
index 1b80a18..63f5092 100644
--- a/map/dungeons/morningforest.gbasm
+++ b/map/dungeons/morningforest.gbasm
@@ -16,7 +16,8 @@ Morning_Forest:
.generation_events:
.GEN_EVENT_DIALOGUE $01 =Demo_quest_init
.GEN_EVENT_DIALOGUE $10 =Demo_quest_floor_reach
- .GEN_EVENT_SPECIAL_ENTITY $10 $06
+ .GEN_EVENT_SPECIAL_ENTITY $10 $0f $06
+ .GEN_EVENT_ENTITY_SET_DIALOGUE $10 $0f =Demo_quest_bunny
.GEN_EVENT_REMOVE_STAIRS $10
.generation_events.end:
diff --git a/map/generationevents.gbasm b/map/generationevents.gbasm
index 5fc35de..7d88f1d 100644
--- a/map/generationevents.gbasm
+++ b/map/generationevents.gbasm
@@ -29,7 +29,7 @@ Generation_Event_Execution:
RET
Generation_Event_Jump_Table:
- ; 00
+; 00
RET
NOP
NOP
@@ -55,17 +55,21 @@ Generation_Event_Jump_Table:
JP =.Entity_XY
NOP
+ ; 06
+ JP =.Set_Dialogue_Ptr
+ NOP
+
.Dialogue_Script:
- LD A, $enum_dungeon_dialogue_mode
- LD $mem_requested_mode, A
+ LD A, $enum_dungeon_dialogue_mode
+ LD $mem_requested_mode, A
- LD A, (HL+)
- LD $mem_dialogue_script_bank, A
- LD A, (HL+)
- LD ($mem_dialogue_script_program_counter), A
- LD A, (HL)
- LD ($mem_dialogue_script_program_counter+1), A
- JP =Dialogue_script_step
+ LD A, (HL+)
+ LD $mem_dialogue_script_bank, A
+ LD A, (HL+)
+ LD ($mem_dialogue_script_program_counter), A
+ LD A, (HL)
+ LD ($mem_dialogue_script_program_counter+1), A
+ JP =Dialogue_script_step
.Load_Entity:
LD A, (HL+)
@@ -78,31 +82,58 @@ Generation_Event_Jump_Table:
RET
.Entity_Random_Room:
+ LD A, (HL+)
+ LD E, A
+ SWAP E
+
LD A, $01
LD $tmp_var_3, A
LD D, (HL)
- CALL =FindFreeEntity
+ LD H, high($mem_entities_list)
+ LD L, E
LD A, D
JP =Initialize_Entity
.Entity_XY:
LD A, (HL+)
+ LD E, A
+ SWAP E
+
+ 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 H, high($mem_entities_list)
+ LD L, E
LD A, D
JP =Initialize_Entity
+ .Set_Dialogue_Ptr:
+ LD D, high($mem_entities_list)
+ LD A, (HL+)
+ LD E, A
+ SWAP E
+ LD A, $0b
+ OR E
+ LD E, A
+ LD A, (HL+)
+ LD (DE), A
+ INC DE
+ LD A, (HL+)
+ LD (DE), A
+ INC DE
+ LD A, (HL)
+ LD (DE), A
+ RET
+
.Remove_Stairs:
LD HL, $mem_object_list
LD (HL), $00
- RET
+ RET
diff --git a/map/objects.gbasm b/map/objects.gbasm
index 0bfc20f..1ff9d53 100644
--- a/map/objects.gbasm
+++ b/map/objects.gbasm
@@ -154,7 +154,7 @@ Check_other_object_collision: ; Object in HL (with only sprite x & y set), will
Spawn_stairs:
LD A, $60
- LD E, $01
+ LD E, $08
JP =Spawn_object_in_random_room_avoid_bunny
Spawn_carrot:
@@ -202,6 +202,10 @@ Object_Interaction_Jump_table:
JP =Fimsh_Attack_Box_Action
NOP
+ ; 08
+ JP =Open_Big_Menu
+ NOP
+
Stairs_Action:
LD A, $enum_dungeon_generation_mode
LD $mem_current_mode, A