diff options
author | Astatin <[email protected]> | 2025-09-05 15:29:27 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-09-05 15:29:27 +0200 |
commit | 03c359596bdacbf39cdc244d2f164d0ec94d5505 (patch) | |
tree | 7e4d8d8056b2560f550d68635caa2ae851c7b911 /map | |
parent | 16c308b2567d1dddb44ca928fe376b4a6219744f (diff) |
Diffstat (limited to 'map')
-rw-r--r-- | map/dungeons.gbasm | 23 | ||||
-rw-r--r-- | map/dungeons/campsite.gbasm | 6 | ||||
-rw-r--r-- | map/generationevents.gbasm | 63 |
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 |