diff --git a/constants/map_object_constants.asm b/constants/map_object_constants.asm index 55a3f358b..00ddb772a 100644 --- a/constants/map_object_constants.asm +++ b/constants/map_object_constants.asm @@ -70,6 +70,9 @@ EMOTE_OBJECT EQU 1 << EMOTE_OBJECT_F const OBJ_FLAGS2_2 ; 2 const OVERHEAD_F ; 3 const USE_OBP1_F ; 4 + const OBJ_FLAGS2_5 ; 5 + const OBJ_FLAGS2_6 ; 6 + const OBJ_FLAGS2_7 ; 7 LOW_PRIORITY EQU 1 << LOW_PRIORITY_F HIGH_PRIORITY EQU 1 << HIGH_PRIORITY_F diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index abdef53e9..1c8ff5192 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -94,6 +94,13 @@ REMOVE_BOX EQU 1 DAY_CARE_WITHDRAW EQU 2 DAY_CARE_DEPOSIT EQU 3 +; wPlayerStepFlags:: ; d150 + const_def 4 + const PLAYERSTEP_MIDAIR_F ; 4 + const PLAYERSTEP_CONTINUE_F ; 5 + const PLAYERSTEP_STOP_F ; 6 + const PLAYERSTEP_START_F ; 7 + ; wInitListType:: ; d263 INIT_ENEMYOT_LIST EQU 1 INIT_BAG_ITEM_LIST EQU 2 @@ -126,14 +133,27 @@ PLAYERSPRITESETUP_RESET_ACTION_F EQU 7 ; wPlayerGender:: ; d472 PLAYERGENDER_FEMALE_F EQU 0 +; wMapStatus:: ; d432 + const_def + const MAPSTATUS_START ; 0 + const MAPSTATUS_ENTER ; 1 + const MAPSTATUS_HANDLE ; 2 + const MAPSTATUS_DONE ; 3 + +; wMapEventStatus:: ; d433 + const_def + const MAPEVENTS_ON ; 0 + const MAPEVENTS_OFF ; 1 + ; wScriptFlags:: ; d434 SCRIPT_RUNNING EQU 2 ; wScriptMode:: ; d437 -SCRIPT_OFF EQU 0 -SCRIPT_READ EQU 1 -SCRIPT_WAIT_MOVEMENT EQU 2 -SCRIPT_WAIT EQU 3 + const_def + const SCRIPT_OFF + const SCRIPT_READ + const SCRIPT_WAIT_MOVEMENT + const SCRIPT_WAIT ; wSpawnAfterChampion:: ; d4b5 SPAWN_LANCE EQU 1 diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index e9fcc108c..ec81f1c27 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -4,19 +4,20 @@ INCLUDE "constants.asm" SECTION "Events", ROMX OverworldLoop:: - xor a + xor a ; MAPSTATUS_START ld [wMapStatus], a .loop ld a, [wMapStatus] ld hl, .jumps rst JumpTable ld a, [wMapStatus] - cp 3 ; done + cp MAPSTATUS_DONE jr nz, .loop .done ret .jumps +; entries correspond to MAPSTATUS_* constants dw StartMap dw EnterMap dw HandleMap @@ -130,7 +131,7 @@ EnterMap: xor a ; end map entry ldh [hMapEntryMethod], a - ld a, 2 ; HandleMap + ld a, MAPSTATUS_HANDLE ld [wMapStatus], a ret @@ -147,7 +148,7 @@ HandleMap: ; Not immediately entering a connected map will cause problems. ld a, [wMapStatus] - cp 2 ; HandleMap + cp MAPSTATUS_HANDLE ret nz call HandleMapObjects @@ -163,6 +164,7 @@ MapEvents: ret .jumps +; entries correspond to MAPEVENTS_* constants dw .events dw .no_events @@ -193,7 +195,7 @@ NextOverworldFrame: HandleMapTimeAndJoypad: ld a, [wMapEventStatus] - cp 1 ; no events + cp MAPEVENTS_OFF ret z call UpdateTime @@ -215,26 +217,26 @@ HandleMapBackground: CheckPlayerState: ld a, [wPlayerStepFlags] - bit 5, a ; in the middle of step + bit PLAYERSTEP_CONTINUE_F, a jr z, .events - bit 6, a ; stopping step + bit PLAYERSTEP_STOP_F, a jr z, .noevents - bit 4, a ; in midair + bit PLAYERSTEP_MIDAIR_F, a jr nz, .noevents call EnableEvents .events - ld a, 0 ; events + ld a, MAPEVENTS_ON ld [wMapEventStatus], a ret .noevents - ld a, 1 ; no events + ld a, MAPEVENTS_OFF ld [wMapEventStatus], a ret _CheckObjectEnteringVisibleRange: ld hl, wPlayerStepFlags - bit 6, [hl] + bit PLAYERSTEP_STOP_F, [hl] ret z farcall CheckObjectEnteringVisibleRange ret diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 02b9cbdda..26152625d 100644 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -36,7 +36,7 @@ Function437b: .CheckObjectStillVisible: ld hl, OBJECT_FLAGS2 add hl, bc - res 6, [hl] + res OBJ_FLAGS2_6, [hl] ld a, [wXCoord] ld e, a ld hl, OBJECT_NEXT_MAP_X @@ -62,7 +62,7 @@ Function437b: .ok ld hl, OBJECT_FLAGS2 add hl, bc - set 6, [hl] + set OBJ_FLAGS2_6, [hl] ld a, [wXCoord] ld e, a ld hl, OBJECT_INIT_X @@ -99,7 +99,7 @@ Function437b: .yes2 ld hl, OBJECT_FLAGS2 add hl, bc - set 6, [hl] + set OBJ_FLAGS2_6, [hl] and a ret @@ -111,7 +111,7 @@ Function437b: jr z, .zero ld hl, OBJECT_FLAGS2 add hl, bc - bit 5, [hl] + bit OBJ_FLAGS2_5, [hl] jr nz, .bit5 cp STEP_TYPE_SLEEP jr z, .one @@ -121,7 +121,7 @@ Function437b: call ObjectMovementReset ld hl, OBJECT_FLAGS2 add hl, bc - bit 5, [hl] + bit OBJ_FLAGS2_5, [hl] jr nz, .bit5 .one call MapObjectMovementPattern @@ -147,9 +147,9 @@ Function437b: jr nz, SetFacingStanding ld hl, OBJECT_FLAGS2 add hl, bc - bit 6, [hl] + bit OBJ_FLAGS2_6, [hl] jr nz, SetFacingStanding - bit 5, [hl] + bit OBJ_FLAGS2_5, [hl] jr nz, asm_4448 ld de, ObjectActionPairPointers ; use first column jr _HandleObjectAction @@ -399,7 +399,7 @@ UpdatePlayerStep: add e ld [wPlayerStepVectorY], a ld hl, wPlayerStepFlags - set 5, [hl] + set PLAYERSTEP_CONTINUE_F, [hl] ret Unreferenced_Function4759: @@ -657,8 +657,8 @@ MapObjectMovementPattern: jr z, .on_pit ld hl, OBJECT_FLAGS2 add hl, bc - bit 2, [hl] - res 2, [hl] + bit OBJ_FLAGS2_2, [hl] + res OBJ_FLAGS2_2, [hl] jr z, .ok ld hl, OBJECT_RANGE add hl, bc @@ -1124,7 +1124,7 @@ NPCJump: call GetNextTile ld hl, OBJECT_FLAGS2 add hl, bc - res 3, [hl] + res OVERHEAD_F, [hl] call IncrementObjectStructField1c ret @@ -1151,7 +1151,7 @@ PlayerJump: .initjump ld hl, wPlayerStepFlags - set 7, [hl] + set PLAYERSTEP_START_F, [hl] call IncrementObjectStructField1c .stepjump call UpdateJumpPosition @@ -1163,17 +1163,17 @@ PlayerJump: call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_FLAGS2 add hl, bc - res 3, [hl] + res OVERHEAD_F, [hl] ld hl, wPlayerStepFlags - set 6, [hl] - set 4, [hl] + set PLAYERSTEP_STOP_F, [hl] + set PLAYERSTEP_MIDAIR_F, [hl] call IncrementObjectStructField1c ret .initland call GetNextTile ld hl, wPlayerStepFlags - set 7, [hl] + set PLAYERSTEP_START_F, [hl] call IncrementObjectStructField1c .stepland call UpdateJumpPosition @@ -1183,7 +1183,7 @@ PlayerJump: dec [hl] ret nz ld hl, wPlayerStepFlags - set 6, [hl] + set PLAYERSTEP_STOP_F, [hl] call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_STEP_TYPE add hl, bc @@ -1229,7 +1229,7 @@ TeleportFrom: ld [hl], 16 ld hl, OBJECT_FLAGS2 add hl, bc - res 3, [hl] + res OVERHEAD_F, [hl] call IncrementObjectStructField1c .DoSpinRise: ld hl, OBJECT_ACTION @@ -1559,7 +1559,7 @@ PlayerStep: .init ld hl, wPlayerStepFlags - set 7, [hl] + set PLAYERSTEP_START_F, [hl] call IncrementObjectStructField1c .step call UpdatePlayerStep @@ -1568,7 +1568,7 @@ PlayerStep: dec [hl] ret nz ld hl, wPlayerStepFlags - set 6, [hl] + set PLAYERSTEP_STOP_F, [hl] call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -1646,7 +1646,7 @@ StepType0f: pop bc ld hl, OBJECT_FLAGS2 add hl, bc - res 2, [hl] + res OBJ_FLAGS2_2, [hl] call CopyNextCoordsTileToStandingCoordsTile ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -2408,7 +2408,7 @@ HandleNPCStep:: ld [wPlayerStepVectorX], a ld [wPlayerStepVectorY], a ld [wPlayerStepFlags], a - ld a, -1 + ld a, STANDING ld [wPlayerStepDirection], a ret @@ -2558,7 +2558,7 @@ SetFlagsForMovement_1:: pop bc ld hl, OBJECT_FLAGS2 add hl, bc - res 5, [hl] + res OBJ_FLAGS2_5, [hl] xor a ret @@ -2567,7 +2567,7 @@ Function586e: ret c ld hl, OBJECT_FLAGS2 add hl, bc - set 5, [hl] + set OBJ_FLAGS2_5, [hl] xor a ret @@ -2580,7 +2580,7 @@ Function587a: jr z, .next ld hl, OBJECT_FLAGS2 add hl, bc - set 5, [hl] + set OBJ_FLAGS2_5, [hl] .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -2610,7 +2610,7 @@ _SetFlagsForMovement_2:: call GetObjectStruct ld hl, OBJECT_FLAGS2 add hl, bc - res 5, [hl] + res OBJ_FLAGS2_5, [hl] ret Function58b9:: @@ -2623,7 +2623,7 @@ Function58b9:: jr z, .next ld hl, OBJECT_FLAGS2 add hl, bc - res 5, [hl] + res OBJ_FLAGS2_5, [hl] .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -2641,7 +2641,7 @@ Function58d8: ret c ld hl, OBJECT_FLAGS2 add hl, bc - res 5, [hl] + res OBJ_FLAGS2_5, [hl] ret Function58e3: @@ -2865,7 +2865,7 @@ InitSprites: ld hl, OBJECT_FLAGS2 add hl, bc ld e, [hl] - bit 7, e + bit OBJ_FLAGS2_7, e jr z, .skip2 or PRIORITY .skip2 diff --git a/engine/overworld/player_step.asm b/engine/overworld/player_step.asm index 797c4b12a..eb1e88cf4 100644 --- a/engine/overworld/player_step.asm +++ b/engine/overworld/player_step.asm @@ -2,11 +2,11 @@ _HandlePlayerStep:: ld a, [wPlayerStepFlags] and a ret z - bit 7, a ; starting step + bit PLAYERSTEP_START_F, a jr nz, .update_overworld_map - bit 6, a ; finishing step + bit PLAYERSTEP_STOP_F, a jr nz, .update_player_coords - bit 5, a ; ongoing step + bit PLAYERSTEP_CONTINUE_F, a jr nz, .finish ret diff --git a/engine/overworld/scripting.asm b/engine/overworld/scripting.asm index 40a43d270..f500d3c0e 100644 --- a/engine/overworld/scripting.asm +++ b/engine/overworld/scripting.asm @@ -1399,7 +1399,7 @@ Script_reloadmap: ld [wBattleScriptFlags], a ld a, MAPSETUP_RELOADMAP ldh [hMapEntryMethod], a - ld a, $1 + ld a, MAPSTATUS_ENTER call LoadMapStatus call StopScript ret @@ -2473,11 +2473,11 @@ Script_warp: ld [wXCoord], a call GetScriptByte ld [wYCoord], a - ld a, -1 + ld a, SPAWN_N_A ld [wDefaultSpawnpoint], a ld a, MAPSETUP_WARP ldh [hMapEntryMethod], a - ld a, 1 + ld a, MAPSTATUS_ENTER call LoadMapStatus call StopScript ret @@ -2486,11 +2486,11 @@ Script_warp: call GetScriptByte call GetScriptByte call GetScriptByte - ld a, -1 + ld a, SPAWN_N_A ld [wDefaultSpawnpoint], a ld a, MAPSETUP_BADWARP ldh [hMapEntryMethod], a - ld a, 1 + ld a, MAPSTATUS_ENTER call LoadMapStatus call StopScript ret @@ -2611,7 +2611,7 @@ Script_newloadmap: call GetScriptByte ldh [hMapEntryMethod], a - ld a, 1 + ld a, MAPSTATUS_ENTER call LoadMapStatus call StopScript ret @@ -2793,7 +2793,7 @@ Script_credits: farcall RedCredits ReturnFromCredits: call Script_endall - ld a, $3 + ld a, MAPSTATUS_DONE call LoadMapStatus call StopScript ret diff --git a/wram.asm b/wram.asm index 4631475c9..f374e1342 100644 --- a/wram.asm +++ b/wram.asm @@ -1966,7 +1966,9 @@ wTempMon:: party_struct wTempMon ; d10e wSpriteFlags:: db ; d13e -wHandlePlayerStep:: dw ; d13f +wHandlePlayerStep:: db ; d13f + + ds 1 wPartyMenuActionText:: db ; d141 @@ -1992,14 +1994,8 @@ wPlayerBGMapOffsetY:: db ; used in FollowNotExact; unit is pixels ; Player movement wPlayerStepVectorX:: db ; d14e wPlayerStepVectorY:: db ; d14f -wPlayerStepFlags:: db ; d150 -wPlayerStepDirection:: ; d151 -; bit 7: Start step -; bit 6: Stop step -; bit 5: Doing step -; bit 4: In midair -; bits 0-3: unused - db +wPlayerStepFlags:: db ; d150 +wPlayerStepDirection:: db ; d151 wBGMapAnchor:: dw ; d152 @@ -2278,10 +2274,7 @@ wBattleAction:: db ; d430 wd431:: db wMapStatus:: db ; d432 -wMapEventStatus:: ; d433 -; 0: do map events -; 1: do background events - db +wMapEventStatus:: db ; d433 wScriptFlags:: ; d434 ; bit 3: priority jump