From ac3de6d02c5beda704570d6ada4ad2195770f819 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Thu, 10 Feb 2022 00:20:22 +0800 Subject: [PATCH 1/7] Rename some movement actions and functions --- asm/macros/movement.inc | 16 +- data/maps/BirthIsland_Exterior/scripts.inc | 14 +- data/maps/CinnabarIsland/scripts.inc | 4 +- .../FourIsland_PokemonDayCare/scripts.inc | 4 +- data/maps/FuchsiaCity/map.json | 2 +- include/constants/event_object_movement.h | 50 +- include/event_object_movement.h | 22 +- include/field_player_avatar.h | 2 +- .../movement_action_func_tables.h | 42 +- .../object_events/movement_type_func_tables.h | 6 +- src/event_object_movement.c | 1131 ++++++++--------- src/field_effect.c | 2 +- src/field_player_avatar.c | 12 +- 13 files changed, 644 insertions(+), 663 deletions(-) diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index 9f11f4460..8e2ac8038 100644 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -14,10 +14,10 @@ create_movement face_up_fast create_movement face_left_fast create_movement face_right_fast - create_movement walk_slowest_down - create_movement walk_slowest_up - create_movement walk_slowest_left - create_movement walk_slowest_right + create_movement walk_slower_down + create_movement walk_slower_up + create_movement walk_slower_left + create_movement walk_slower_right create_movement walk_slow_down create_movement walk_slow_up create_movement walk_slow_left @@ -55,10 +55,10 @@ create_movement walk_in_place_fastest_up create_movement walk_in_place_fastest_left create_movement walk_in_place_fastest_right - create_movement face_down_slow - create_movement face_up_slow - create_movement face_left_slow - create_movement face_right_slow + create_movement ride_water_current_down + create_movement ride_water_current_up + create_movement ride_water_current_lefft + create_movement ride_water_current_right create_movement walk_fastest_down create_movement walk_fastest_up create_movement walk_fastest_left diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc index 81419e08a..452a32aa9 100644 --- a/data/maps/BirthIsland_Exterior/scripts.inc +++ b/data/maps/BirthIsland_Exterior/scripts.inc @@ -115,11 +115,11 @@ BirthIsland_Exterior_EventScript_RanFromDeoxys:: @ 8165348 end Movement_DeoxysApproach: @ 8165353 - walk_slowest_down - walk_slowest_down - walk_slowest_down - walk_slowest_down - walk_slowest_down - walk_slowest_down - walk_slowest_down + walk_slower_down + walk_slower_down + walk_slower_down + walk_slower_down + walk_slower_down + walk_slower_down + walk_slower_down step_end diff --git a/data/maps/CinnabarIsland/scripts.inc b/data/maps/CinnabarIsland/scripts.inc index 179c06a51..073fc6c94 100644 --- a/data/maps/CinnabarIsland/scripts.inc +++ b/data/maps/CinnabarIsland/scripts.inc @@ -251,8 +251,8 @@ CinnabarIsland_Movement_BoatArrive:: @ 8167195 walk_fast_left walk_fast_left walk_left - walk_slowest_left - walk_slowest_left + walk_slower_left + walk_slower_left step_end CinnabarIsland_Movement_BillBoardBoat:: @ 816719D diff --git a/data/maps/FourIsland_PokemonDayCare/scripts.inc b/data/maps/FourIsland_PokemonDayCare/scripts.inc index 9a2d609b9..0beeafb08 100644 --- a/data/maps/FourIsland_PokemonDayCare/scripts.inc +++ b/data/maps/FourIsland_PokemonDayCare/scripts.inc @@ -170,7 +170,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71 delay_16 delay_16 face_up - walk_slowest_up + walk_slower_up set_invisible delay_16 delay_16 @@ -179,7 +179,7 @@ FourIsland_PokemonDayCare_Movement_RetrieveMon:: @ 8171B71 delay_16 face_down set_visible - walk_slowest_down + walk_slower_down step_end @ Unused. Possibly a commented script, or a typo end added to the above Movement script diff --git a/data/maps/FuchsiaCity/map.json b/data/maps/FuchsiaCity/map.json index 7363a4b82..9a1f3f504 100644 --- a/data/maps/FuchsiaCity/map.json +++ b/data/maps/FuchsiaCity/map.json @@ -49,7 +49,7 @@ "x": 36, "y": 15, "elevation": 3, - "movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWEST", + "movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWER", "movement_range_x": 4, "movement_range_y": 1, "trainer_type": "TRAINER_TYPE_NONE", diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 62c5a2ef2..d7901481e 100644 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -82,7 +82,7 @@ #define MOVEMENT_TYPE_VS_SEEKER_4D 0x4D #define MOVEMENT_TYPE_VS_SEEKER_4E 0x4E #define MOVEMENT_TYPE_VS_SEEKER_4F 0x4F -#define MOVEMENT_TYPE_WANDER_AROUND_SLOWEST 0x50 +#define MOVEMENT_TYPE_WANDER_AROUND_SLOWER 0x50 #define MOVEMENT_TYPES_COUNT 0x51 #define MOVEMENT_ACTION_FACE_DOWN 0x0 @@ -93,10 +93,10 @@ #define MOVEMENT_ACTION_FACE_UP_FAST 0x5 #define MOVEMENT_ACTION_FACE_LEFT_FAST 0x6 #define MOVEMENT_ACTION_FACE_RIGHT_FAST 0x7 -#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x8 -#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9 -#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0xA -#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0xB +#define MOVEMENT_ACTION_WALK_SLOWER_DOWN 0x8 +#define MOVEMENT_ACTION_WALK_SLOWER_UP 0x9 +#define MOVEMENT_ACTION_WALK_SLOWER_LEFT 0xA +#define MOVEMENT_ACTION_WALK_SLOWER_RIGHT 0xB #define MOVEMENT_ACTION_WALK_SLOW_DOWN 0xC #define MOVEMENT_ACTION_WALK_SLOW_UP 0xD #define MOVEMENT_ACTION_WALK_SLOW_LEFT 0xE @@ -134,10 +134,10 @@ #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP 0x2E #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT 0x2F #define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT 0x30 -#define MOVEMENT_ACTION_FACE_DOWN_SLOW 0x31 -#define MOVEMENT_ACTION_FACE_UP_SLOW 0x32 -#define MOVEMENT_ACTION_FACE_LEFT_SLOW 0x33 -#define MOVEMENT_ACTION_FACE_RIGHT_SLOW 0x34 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN 0x31 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x32 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x33 +#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x34 #define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x35 #define MOVEMENT_ACTION_WALK_FASTEST_UP 0x36 #define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x37 @@ -235,20 +235,22 @@ #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP 0x91 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x92 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x93 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN 0x94 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP 0x95 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT 0x96 -#define MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT 0x97 -// 98-A3 are unknown +#define MOVEMENT_ACTION_SPIN_DOWN 0x94 +#define MOVEMENT_ACTION_SPIN_UP 0x95 +#define MOVEMENT_ACTION_SPIN_LEFT 0x96 +#define MOVEMENT_ACTION_SPIN_RIGHT 0x97 + #define MOVEMENT_ACTION_0x98 0x98 #define MOVEMENT_ACTION_0x99 0x99 #define MOVEMENT_ACTION_0x9A 0x9A -#define MOVEMENT_ACTION_0x9B 0x9B -#define MOVEMENT_ACTION_0x9C 0x9C -#define MOVEMENT_ACTION_0x9D 0x9D -#define MOVEMENT_ACTION_0x9E 0x9E -#define MOVEMENT_ACTION_0x9F 0x9F + +#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x9B +#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9C +#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0x9D +#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0x9E +#define MOVEMENT_ACTION_SHAKE_HEAD 0x9F + #define MOVEMENT_ACTION_0xA0 0xA0 #define MOVEMENT_ACTION_0xA1 0xA1 #define MOVEMENT_ACTION_0xA2 0xA2 @@ -256,12 +258,10 @@ #define MOVEMENT_ACTION_FLY_UP 0xA4 #define MOVEMENT_ACTION_FLY_DOWN 0xA5 - -// Duplicates of JUMP_SPECIAL? -#define MOVEMENT_ACTION_0xA6 0xA6 -#define MOVEMENT_ACTION_0xA7 0xA7 -#define MOVEMENT_ACTION_0xA8 0xA8 -#define MOVEMENT_ACTION_0xA9 0xA9 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN 0xA6 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP 0xA7 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT 0xA8 +#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT 0xA9 #define MOVEMENT_ACTION_STEP_END 0xFE diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 852af21df..46529bdfe 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -124,7 +124,7 @@ u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent); u8 GetWalkNormalMovementAction(u32); u8 GetWalkFastMovementAction(u32); u8 GetWalkFastestMovementAction(u32); -u8 GetWalkSlowestMovementAction(u32 direction); +u8 GetWalkSlowerMovementAction(u32 direction); u8 GetTrainerFacingDirectionMovementType(u8 direction); u8 GetFaceDirectionMovementAction(u32); u8 GetFaceDirectionFastMovementAction(u32); @@ -134,7 +134,7 @@ u8 GetSlideMovementAction(u32); u8 GetJumpInPlaceMovementAction(u32); u8 GetJumpMovementAction(u32); u8 GetJump2MovementAction(u32); -bool8 NpcTakeStep(struct Sprite *sprite); +bool8 UpdateWalkSlowerAnim(struct Sprite *sprite); void SetJumpSpriteData(struct Sprite *, u8, u8, u8); u8 DoJumpSpriteMovement(struct Sprite *); u8 DoJumpSpecialSpriteMovement(struct Sprite *); @@ -171,16 +171,16 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y); void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *); void SetMovementDelay(struct Sprite *, s16); bool8 WaitForMovementDelay(struct Sprite *); -void oamt_npc_ministep_reset(struct Sprite *, u8, u8); -bool8 obj_npc_ministep(struct Sprite *sprite); -void SetSpriteDataForNormalStep(struct Sprite *, u8); -void SetSpriteDataForNormalStep2(struct Sprite *, u8); +void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); +bool8 NpcTakeStep(struct Sprite *sprite); +void SetWalkSlowerSpriteData(struct Sprite *, u8); +void SetWalkSlowestSpriteData(struct Sprite *, u8); +bool8 UpdateWalkSlowestAnim(struct Sprite *sprite); +void SetWalkSlowSpriteData(struct Sprite *, u8); bool8 UpdateWalkSlowAnim(struct Sprite *sprite); -void SetSpriteDataForNormalStep3(struct Sprite *, u8); -bool8 sub_8068C18(struct Sprite *sprite); void DoShadowFieldEffect(struct ObjectEvent *); -void SetSpriteDataForNormalStep4(struct Sprite *, u8); -bool8 sub_8068CB4(struct Sprite *sprite); +void SetRunSlowSpriteData(struct Sprite *, u8); +bool8 UpdateRunSlowAnim(struct Sprite *sprite); void SetAndStartSpriteAnim(struct Sprite *, u8, u8); bool8 SpriteAnimEnded(struct Sprite *); u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent); @@ -212,7 +212,7 @@ u8 GetJumpInPlaceTurnAroundMovementAction(u32 direction); u8 GetAcroWheelieInPlaceDirectionMovementAction(u32 direction); u8 GetAcroPopWheelieMoveDirectionMovementAction(u32 direction); u8 GetAcroWheelieMoveDirectionMovementAction(u32 direction); -u8 sub_80641EC(u32 direction); +u8 GetJumpSpecialWithEffectMovementAction(u32 direction); u8 GetFishingBiteDirectionAnimNum(u8 direction); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); void ResetObjectEvents(void); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index c7d2d6012..7e051f0dd 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -56,7 +56,7 @@ void PlayerFaceDirection(u8 direction); void PlayerFaceDirectionFast(u8 direction); void PlayerTurnInPlace(u8 direction); void PlayerJumpLedge(u8 direction); -void sub_805C260(void); +void PlayerShakeHead(void); void player_step(u8 direction, u16 newKeys, u16 heldKeys); bool32 PlayerIsMovingOnRockStairs(u8 direction); void UpdatePlayerAvatarTransitionState(void); diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index b91cd8284..e55687c03 100644 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -471,10 +471,10 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite [MOVEMENT_ACTION_FACE_UP_FAST] = sMovementActionFuncs_x05, [MOVEMENT_ACTION_FACE_LEFT_FAST] = sMovementActionFuncs_x06, [MOVEMENT_ACTION_FACE_RIGHT_FAST] = sMovementActionFuncs_x07, - [MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x08, - [MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x09, - [MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x0A, - [MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x0B, + [MOVEMENT_ACTION_WALK_SLOWER_DOWN] = sMovementActionFuncs_x08, + [MOVEMENT_ACTION_WALK_SLOWER_UP] = sMovementActionFuncs_x09, + [MOVEMENT_ACTION_WALK_SLOWER_LEFT] = sMovementActionFuncs_x0A, + [MOVEMENT_ACTION_WALK_SLOWER_RIGHT] = sMovementActionFuncs_x0B, [MOVEMENT_ACTION_WALK_SLOW_DOWN] = sMovementActionFuncs_x0C, [MOVEMENT_ACTION_WALK_SLOW_UP] = sMovementActionFuncs_x0D, [MOVEMENT_ACTION_WALK_SLOW_LEFT] = sMovementActionFuncs_x0E, @@ -512,10 +512,10 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP] = sMovementActionFuncs_x2E, [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT] = sMovementActionFuncs_x2F, [MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT] = sMovementActionFuncs_x30, - [MOVEMENT_ACTION_FACE_DOWN_SLOW] = sMovementActionFuncs_x31, - [MOVEMENT_ACTION_FACE_UP_SLOW] = sMovementActionFuncs_x32, - [MOVEMENT_ACTION_FACE_LEFT_SLOW] = sMovementActionFuncs_x33, - [MOVEMENT_ACTION_FACE_RIGHT_SLOW] = sMovementActionFuncs_x34, + [MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN] = sMovementActionFuncs_x31, + [MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP] = sMovementActionFuncs_x32, + [MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT] = sMovementActionFuncs_x33, + [MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT] = sMovementActionFuncs_x34, [MOVEMENT_ACTION_WALK_FASTEST_DOWN] = sMovementActionFuncs_x35, [MOVEMENT_ACTION_WALK_FASTEST_UP] = sMovementActionFuncs_x36, [MOVEMENT_ACTION_WALK_FASTEST_LEFT] = sMovementActionFuncs_x37, @@ -611,28 +611,28 @@ bool8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_UP] = sMovementActionFuncs_x91, [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x92, [MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x93, - [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN] = sMovementActionFuncs_x94, - [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP] = sMovementActionFuncs_x95, - [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT] = sMovementActionFuncs_x96, - [MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT] = sMovementActionFuncs_x97, + [MOVEMENT_ACTION_SPIN_DOWN] = sMovementActionFuncs_x94, + [MOVEMENT_ACTION_SPIN_UP] = sMovementActionFuncs_x95, + [MOVEMENT_ACTION_SPIN_LEFT] = sMovementActionFuncs_x96, + [MOVEMENT_ACTION_SPIN_RIGHT] = sMovementActionFuncs_x97, [MOVEMENT_ACTION_0x98] = sMovementActionFuncs_x98, [MOVEMENT_ACTION_0x99] = sMovementActionFuncs_x99, [MOVEMENT_ACTION_0x9A] = sMovementActionFuncs_x9A, - [MOVEMENT_ACTION_0x9B] = sMovementActionFuncs_x9B, - [MOVEMENT_ACTION_0x9C] = sMovementActionFuncs_x9C, - [MOVEMENT_ACTION_0x9D] = sMovementActionFuncs_x9D, - [MOVEMENT_ACTION_0x9E] = sMovementActionFuncs_x9E, - [MOVEMENT_ACTION_0x9F] = sMovementActionFuncs_x9F, + [MOVEMENT_ACTION_WALK_SLOWEST_DOWN] = sMovementActionFuncs_x9B, + [MOVEMENT_ACTION_WALK_SLOWEST_UP] = sMovementActionFuncs_x9C, + [MOVEMENT_ACTION_WALK_SLOWEST_LEFT] = sMovementActionFuncs_x9D, + [MOVEMENT_ACTION_WALK_SLOWEST_RIGHT] = sMovementActionFuncs_x9E, + [MOVEMENT_ACTION_SHAKE_HEAD] = sMovementActionFuncs_x9F, [MOVEMENT_ACTION_0xA0] = sMovementActionFuncs_xA0, [MOVEMENT_ACTION_0xA1] = sMovementActionFuncs_xA1, [MOVEMENT_ACTION_0xA2] = sMovementActionFuncs_xA2, [MOVEMENT_ACTION_0xA3] = sMovementActionFuncs_xA3, [MOVEMENT_ACTION_FLY_UP] = sMovementActionFuncs_xA4, [MOVEMENT_ACTION_FLY_DOWN] = sMovementActionFuncs_xA5, - [MOVEMENT_ACTION_0xA6] = sMovementActionFuncs_xA6, - [MOVEMENT_ACTION_0xA7] = sMovementActionFuncs_xA7, - [MOVEMENT_ACTION_0xA8] = sMovementActionFuncs_xA8, - [MOVEMENT_ACTION_0xA9] = sMovementActionFuncs_xA9, + [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN] = sMovementActionFuncs_xA6, + [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP] = sMovementActionFuncs_xA7, + [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT] = sMovementActionFuncs_xA8, + [MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT] = sMovementActionFuncs_xA9, }; static bool8 (*const sMovementActionFuncs_x00[])(struct ObjectEvent *, struct Sprite *) = { diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index 572a9b390..627d1bc51 100644 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -4,7 +4,7 @@ static bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, st static bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static bool8 MovementType_WanderAround_Step5Slowest(struct ObjectEvent *objectEvent, struct Sprite *sprite); +static bool8 MovementType_WanderAround_Step5Slower(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite); static bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite); @@ -170,13 +170,13 @@ u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprit MovementType_WanderAround_Step6, }; -u8 (*const gMovementTypeFuncs_WanderAroundSlowest[])(struct ObjectEvent *, struct Sprite *) = { +u8 (*const gMovementTypeFuncs_WanderAroundSlower[])(struct ObjectEvent *, struct Sprite *) = { MovementType_WanderAround_Step0, MovementType_WanderAround_Step1, MovementType_WanderAround_Step2, MovementType_WanderAround_Step3, MovementType_WanderAround_Step4, - MovementType_WanderAround_Step5Slowest, + MovementType_WanderAround_Step5Slower, MovementType_WanderAround_Step6, }; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 52fb0c078..bd66b32a4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -21,7 +21,7 @@ static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); static u8 GetCollisionInDirection(struct ObjectEvent *, u8); -static u32 state_to_direction(u8, u32, u32); +static u32 GetCopyDirection(u8, u32, u32); static void TryEnableObjectEventAnim(struct ObjectEvent *, struct Sprite *); static void ObjectEventExecHeldMovementAction(struct ObjectEvent *, struct Sprite *); static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *, struct Sprite *); @@ -71,7 +71,7 @@ static void LoadObjectEventPalette(u16); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void ReloadMapObjectWithOffset(u8 objectEventId, s16 x, s16 y); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); -static void sub_805EFF4(struct ObjectEvent *); +static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 TryLoadObjectPalette(const struct SpritePalette *spritePalette); static u8 FindObjectEventPaletteIndexByTag(u16); static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8); @@ -148,7 +148,7 @@ static void MovementType_Invisible(struct Sprite *); static void MovementType_VsSeeker4D(struct Sprite *); static void MovementType_VsSeeker4E(struct Sprite *); static void MovementType_VsSeeker4F(struct Sprite *); -static void MovementType_WanderAroundSlowest(struct Sprite *); +static void MovementType_WanderAroundSlower(struct Sprite *); #define movement_type_def(setup, table) \ static u8 setup##_callback(struct ObjectEvent *, struct Sprite *); \ @@ -276,7 +276,7 @@ static void (*const sMovementTypeCallbacks[MOVEMENT_TYPES_COUNT])(struct Sprite [MOVEMENT_TYPE_VS_SEEKER_4D] = MovementType_VsSeeker4D, [MOVEMENT_TYPE_VS_SEEKER_4E] = MovementType_VsSeeker4E, [MOVEMENT_TYPE_VS_SEEKER_4F] = MovementType_VsSeeker4F, - [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = MovementType_WanderAroundSlowest, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWER] = MovementType_WanderAroundSlower, }; static const bool8 gRangedMovementTypes[MOVEMENT_TYPES_COUNT] = { @@ -360,7 +360,7 @@ static const bool8 gRangedMovementTypes[MOVEMENT_TYPES_COUNT] = { [MOVEMENT_TYPE_VS_SEEKER_4D] = FALSE, [MOVEMENT_TYPE_VS_SEEKER_4E] = FALSE, [MOVEMENT_TYPE_VS_SEEKER_4F] = FALSE, - [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = TRUE, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWER] = TRUE, }; static const u8 gInitialMovementTypeFacingDirections[MOVEMENT_TYPES_COUNT] = { @@ -444,7 +444,7 @@ static const u8 gInitialMovementTypeFacingDirections[MOVEMENT_TYPES_COUNT] = { [MOVEMENT_TYPE_VS_SEEKER_4D] = DIR_SOUTH, [MOVEMENT_TYPE_VS_SEEKER_4E] = DIR_SOUTH, [MOVEMENT_TYPE_VS_SEEKER_4F] = DIR_SOUTH, - [MOVEMENT_TYPE_WANDER_AROUND_SLOWEST] = DIR_SOUTH, + [MOVEMENT_TYPE_WANDER_AROUND_SLOWER] = DIR_SOUTH, }; #define OBJ_EVENT_PAL_TAG_PLAYER_RED 0x1100 @@ -935,15 +935,7 @@ static const u8 gFaceDirectionFastMovementActions[] = { [DIR_EAST] = MOVEMENT_ACTION_FACE_RIGHT_FAST, }; -static const u8 gUnknown_83A64F6[] = { - [DIR_NONE] = MOVEMENT_ACTION_0x9B, - [DIR_SOUTH] = MOVEMENT_ACTION_0x9B, - [DIR_NORTH] = MOVEMENT_ACTION_0x9C, - [DIR_WEST] = MOVEMENT_ACTION_0x9D, - [DIR_EAST] = MOVEMENT_ACTION_0x9E, -}; - -static const u8 gUnknown_83A64FB[] = { +static const u8 gWalkSlowestMovementActions[] = { [DIR_NONE] = MOVEMENT_ACTION_WALK_SLOWEST_DOWN, [DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOWEST_DOWN, [DIR_NORTH] = MOVEMENT_ACTION_WALK_SLOWEST_UP, @@ -951,6 +943,14 @@ static const u8 gUnknown_83A64FB[] = { [DIR_EAST] = MOVEMENT_ACTION_WALK_SLOWEST_RIGHT, }; +static const u8 gUnknown_83A64FB[] = { + [DIR_NONE] = MOVEMENT_ACTION_WALK_SLOWER_DOWN, + [DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOWER_DOWN, + [DIR_NORTH] = MOVEMENT_ACTION_WALK_SLOWER_UP, + [DIR_WEST] = MOVEMENT_ACTION_WALK_SLOWER_LEFT, + [DIR_EAST] = MOVEMENT_ACTION_WALK_SLOWER_RIGHT, +}; + static const u8 gUnknown_83A6500[] = { [DIR_NONE] = MOVEMENT_ACTION_WALK_SLOW_DOWN, [DIR_SOUTH] = MOVEMENT_ACTION_WALK_SLOW_DOWN, @@ -984,11 +984,11 @@ static const u8 gUnknown_83A650F[] = { }; static const u8 gUnknown_83A6514[] = { - [DIR_NONE] = MOVEMENT_ACTION_FACE_DOWN_SLOW, - [DIR_SOUTH] = MOVEMENT_ACTION_FACE_DOWN_SLOW, - [DIR_NORTH] = MOVEMENT_ACTION_FACE_UP_SLOW, - [DIR_WEST] = MOVEMENT_ACTION_FACE_LEFT_SLOW, - [DIR_EAST] = MOVEMENT_ACTION_FACE_RIGHT_SLOW, + [DIR_NONE] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, + [DIR_SOUTH] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_DOWN, + [DIR_NORTH] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP, + [DIR_WEST] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT, + [DIR_EAST] = MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT, }; static const u8 gUnknown_83A6519[] = { @@ -1024,11 +1024,11 @@ static const u8 gUnknown_83A6528[] = { }; static const u8 gUnknown_83A652D[] = { - [DIR_NONE] = MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, - [DIR_SOUTH] = MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_DOWN, - [DIR_NORTH] = MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_UP, - [DIR_WEST] = MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_LEFT, - [DIR_EAST] = MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT, + [DIR_NONE] = MOVEMENT_ACTION_SPIN_DOWN, + [DIR_SOUTH] = MOVEMENT_ACTION_SPIN_DOWN, + [DIR_NORTH] = MOVEMENT_ACTION_SPIN_UP, + [DIR_WEST] = MOVEMENT_ACTION_SPIN_LEFT, + [DIR_EAST] = MOVEMENT_ACTION_SPIN_RIGHT, }; static const u8 gUnknown_83A6532[] = { @@ -1072,11 +1072,11 @@ static const u8 gUnknown_83A6546[] = { }; static const u8 gUnknown_83A654B[] = { - [DIR_NONE] = MOVEMENT_ACTION_0xA6, - [DIR_SOUTH] = MOVEMENT_ACTION_0xA6, - [DIR_NORTH] = MOVEMENT_ACTION_0xA7, - [DIR_WEST] = MOVEMENT_ACTION_0xA8, - [DIR_EAST] = MOVEMENT_ACTION_0xA9, + [DIR_NONE] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN, + [DIR_SOUTH] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN, + [DIR_NORTH] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_UP, + [DIR_WEST] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_LEFT, + [DIR_EAST] = MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT, }; static const u8 gUnknown_83A6550[] = { @@ -1194,14 +1194,14 @@ static const u8 gOppositeDirections[] = { DIR_SOUTHWEST, }; -static const u8 gUnknown_83A6599[][4] = { +static const u8 sPlayerDirectionsForCopy[][4] = { {2, 1, 4, 3}, {1, 2, 3, 4}, {3, 4, 2, 1}, {4, 3, 1, 2} }; -static const u8 gUnknown_83A65A9[][4] = { +static const u8 sPlayerDirectionToCopyDirection[][4] = { {2, 1, 4, 3}, {1, 2, 3, 4}, {4, 3, 1, 2}, @@ -1973,12 +1973,12 @@ static void ReloadMapObjectWithOffset(u8 objectEventId, s16 x, s16 y) { StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection)); } - sub_805EFF4(objectEvent); + ResetObjectEventFldEffData(objectEvent); SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1); } } -static void sub_805EFF4(struct ObjectEvent *objectEvent) +static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent) { objectEvent->singleMovementActive = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; @@ -2285,7 +2285,7 @@ u8 sub_805F6D0(u8 var) return gReflectionEffectPaletteMap[var]; } -void unref_sub_805F6E0(struct ObjectEvent *objectEvent, s16 x, s16 y) +void Unused_IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) { objectEvent->previousCoords.x = objectEvent->currentCoords.x; objectEvent->previousCoords.y = objectEvent->currentCoords.y; @@ -2322,7 +2322,7 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; - sub_805EFF4(objectEvent); + ResetObjectEventFldEffData(objectEvent); if (objectEvent->trackedByCamera) CameraObjectReset1(); } @@ -2575,14 +2575,13 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId) return GetObjectEventFlagIdByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); } -u8 sub_805FC9C(u8 localId, u8 mapNum, u8 mapGroup) +u8 Unused_GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { u8 objectEventId; if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) - { return 0xFF; - } + return gObjectEvents[objectEventId].trainerType; } @@ -2591,23 +2590,22 @@ u16 GetObjectEventFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->trainerType; } -u8 sub_808F0BC(u8 objectEventId) +u8 Unused_GetObjectTrainerTypeByObjectEventId(u8 objectEventId) { return gObjectEvents[objectEventId].trainerType; } -u8 sub_805FD08(u8 localId, u8 mapNum, u8 mapGroup) +u8 Unused_GetObjectEventBerryTreeIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { u8 objectEventId; if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)) - { return 0xFF; - } + return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -u8 ObjectEventGetBerryTreeId(u8 objectEventId) +u8 Unused_GetObjectEventBerryTreeId(u8 objectEventId) { return gObjectEvents[objectEventId].trainerRange_berryTreeId; } @@ -2730,7 +2728,7 @@ u16 GetObjectPaletteTag(u8 palSlot) movement_type_empty_callback(MovementType_None) movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround) -movement_type_def(MovementType_WanderAroundSlowest, gMovementTypeFuncs_WanderAroundSlowest) +movement_type_def(MovementType_WanderAroundSlower, gMovementTypeFuncs_WanderAroundSlower) static bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { @@ -2790,9 +2788,9 @@ static bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, st return TRUE; } -static bool8 MovementType_WanderAround_Step5Slowest(struct ObjectEvent *objectEvent, struct Sprite *sprite) +static bool8 MovementType_WanderAround_Step5Slower(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowestMovementAction(objectEvent->movementDirection)); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowerMovementAction(objectEvent->movementDirection)); objectEvent->singleMovementActive = TRUE; sprite->data[1] = 6; return TRUE; @@ -4338,7 +4336,7 @@ static bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct static bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { - ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection))); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection))); objectEvent->singleMovementActive = TRUE; sprite->data[1] = 2; return TRUE; @@ -4351,7 +4349,7 @@ static bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, st s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) @@ -4370,7 +4368,7 @@ static bool8 CopyablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, st s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) @@ -4389,7 +4387,7 @@ static bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, st s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastestMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) @@ -4408,7 +4406,7 @@ static bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struc s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetSlideMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) @@ -4425,7 +4423,7 @@ static bool8 cph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sp u32 direction; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); objectEvent->singleMovementActive = TRUE; sprite->data[1] = 2; @@ -4439,7 +4437,7 @@ static bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, st s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpMovementAction(direction)); if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) @@ -4458,7 +4456,7 @@ static bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct s16 y; direction = playerDirection; - direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); x = objectEvent->currentCoords.x; y = objectEvent->currentCoords.y; MoveCoordsInDirection(direction, &x, &y, 2, 2); @@ -4741,7 +4739,7 @@ u8 GetAcroEndWheelieDirectionAnimNum(u8 direction) return gAcroEndWheelieDirectionAnimNums[direction]; } -u8 sub_80634C0(u8 direction) +u8 GetSpinDirectionAnimNum(u8 direction) { return gUnknown_83A6465[direction]; } @@ -4776,60 +4774,52 @@ u8 GetRunningDirectionAnimNum(u8 direction) return gRunningDirectionAnimNums[direction]; } -static const struct UnkStruct_083A3698 *sub_8063530(const union AnimCmd *const *anims) +static const struct UnkStruct_083A3698 *GetStepAnimTable(const union AnimCmd *const *anims) { - const struct UnkStruct_083A3698 *retval; + const struct UnkStruct_083A3698 *stepTable; + + for (stepTable = gUnknown_83A3698; stepTable->anims != NULL; stepTable++) + if (stepTable->anims == anims) + return stepTable; - for (retval = gUnknown_83A3698; retval->anims != NULL; retval++) - { - if (retval->anims == anims) - { - return retval; - } - } return NULL; } -void npc_apply_anim_looping(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) +void SetStepAnimHandleAlternation(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) { - const struct UnkStruct_083A3698 *unk83A3698; + const struct UnkStruct_083A3698 *stepTable; if (!objectEvent->inanimate) { sprite->animNum = animNum; - unk83A3698 = sub_8063530(sprite->anims); - if (unk83A3698 != NULL) + stepTable = GetStepAnimTable(sprite->anims); + if (stepTable != NULL) { - if (sprite->animCmdIndex == unk83A3698->animPos[0]) - { - sprite->animCmdIndex = unk83A3698->animPos[3]; - } - else if (sprite->animCmdIndex == unk83A3698->animPos[1]) - { - sprite->animCmdIndex = unk83A3698->animPos[2]; - } + if (sprite->animCmdIndex == stepTable->animPos[0]) + sprite->animCmdIndex = stepTable->animPos[3]; + else if (sprite->animCmdIndex == stepTable->animPos[1]) + sprite->animCmdIndex = stepTable->animPos[2]; } SeekSpriteAnim(sprite, sprite->animCmdIndex); } } -void obj_npc_animation_step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) +void SetStepAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum) { - const struct UnkStruct_083A3698 *unk83A3698; + const struct UnkStruct_083A3698 *stepTable; if (!objectEvent->inanimate) { u8 animPos; sprite->animNum = animNum; - unk83A3698 = sub_8063530(sprite->anims); - if (unk83A3698 != NULL) + stepTable = GetStepAnimTable(sprite->anims); + if (stepTable != NULL) { - animPos = unk83A3698->animPos[1]; - if (sprite->animCmdIndex <= unk83A3698->animPos[0]) - { - animPos = unk83A3698->animPos[0]; - } + animPos = stepTable->animPos[1]; + if (sprite->animCmdIndex <= stepTable->animPos[0]) + animPos = stepTable->animPos[0]; + SeekSpriteAnim(sprite, animPos); } } @@ -5216,18 +5206,16 @@ u8 name(u32 idx) \ dirn_to_anim(GetFaceDirectionMovementAction, gFaceDirectionMovementActions); dirn_to_anim(GetFaceDirectionFastMovementAction, gFaceDirectionFastMovementActions); -u8 sub_8063F10(u32 idx) +u8 GetWalkSlowestMovementAction(u32 idx) { - u8 direction; - - direction = idx; - + u8 direction = idx; if (direction > DIR_EAST) direction = DIR_NONE; - return gUnknown_83A64F6[direction]; + + return gWalkSlowestMovementActions[direction]; } -dirn_to_anim(GetWalkSlowestMovementAction, gUnknown_83A64FB); +dirn_to_anim(GetWalkSlowerMovementAction, gUnknown_83A64FB); dirn_to_anim(GetWalkSlowMovementAction, gUnknown_83A6500); dirn_to_anim(GetWalkNormalMovementAction, gUnknown_83A6505); dirn_to_anim(GetWalkFastMovementAction, gUnknown_83A650A); @@ -5243,7 +5231,7 @@ dirn_to_anim(GetJumpInPlaceMovementAction, gUnknown_83A6537); dirn_to_anim(GetJumpInPlaceTurnAroundMovementAction, gUnknown_83A653C); dirn_to_anim(GetJumpMovementAction, gUnknown_83A6541); dirn_to_anim(GetJumpSpecialMovementAction, gUnknown_83A6546); -dirn_to_anim(sub_80641EC, gUnknown_83A654B); +dirn_to_anim(GetJumpSpecialWithEffectMovementAction, gUnknown_83A654B); dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_83A6550); dirn_to_anim(GetWalkInPlaceNormalMovementAction, gUnknown_83A6555); dirn_to_anim(GetWalkInPlaceSlowMovementAction, gUnknown_83A655A); @@ -5276,25 +5264,22 @@ u8 GetOppositeDirection(u8 direction) return directions[direction - 1]; } -static u32 zffu_offset_calc(u8 a0, u8 a1) +static u32 GetPlayerDirectionForCopy(u8 initDir, u8 moveDir) { - return gUnknown_83A6599[a0 - 1][a1 - 1]; + return sPlayerDirectionsForCopy[initDir - 1][moveDir - 1]; } -static u32 state_to_direction(u8 a0, u32 a1, u32 a2) +static u32 GetCopyDirection(u8 copyInitDir, u32 playerInitDir, u32 playerMoveDir) { - u32 zffuOffset; - u8 a1_2; - u8 a2_2; + u32 dir; + u8 _playerInitDir = playerInitDir; + u8 _playerMoveDir = playerMoveDir; + if (_playerInitDir == DIR_NONE || _playerMoveDir == DIR_NONE + || _playerInitDir > DIR_EAST || _playerMoveDir > DIR_EAST) + return DIR_NONE; - a1_2 = a1; - a2_2 = a2; - if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST) - { - return 0; - } - zffuOffset = zffu_offset_calc(a1_2, a2); - return gUnknown_83A65A9[a0 - 1][zffuOffset - 1]; + dir = GetPlayerDirectionForCopy(_playerInitDir, playerMoveDir); + return sPlayerDirectionToCopyDirection[copyInitDir - 1][dir - 1]; } static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5341,7 +5326,7 @@ static void FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite { SetObjectEventDirection(objectEvent, direction); ShiftStillObjectEventCoords(objectEvent); - obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); sprite->animPaused = TRUE; sprite->data[2] = 1; } @@ -5370,7 +5355,7 @@ static bool8 MovementAction_FaceRight_Step0(struct ObjectEvent *objectEvent, str return TRUE; } -void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +void InitNpcForMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) { s16 x; s16 y; @@ -5380,62 +5365,28 @@ void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite, SetObjectEventDirection(objectEvent, direction); MoveCoords(direction, &x, &y); ShiftObjectEventCoords(objectEvent, x, y); - oamt_npc_ministep_reset(sprite, direction, speed); + SetSpriteDataForNormalStep(sprite, direction, speed); sprite->animPaused = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; sprite->data[2] = 1; } -void do_go_anim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +void InitMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) { u8 (*functions[NELEMS(gUnknown_83A6884)])(u8); memcpy(functions, gUnknown_83A6884, sizeof gUnknown_83A6884); - npc_apply_direction(objectEvent, sprite, direction, speed); - npc_apply_anim_looping(objectEvent, sprite, functions[speed](objectEvent->facingDirection)); + InitNpcForMovement(objectEvent, sprite, direction, speed); + SetStepAnimHandleAlternation(objectEvent, sprite, functions[speed](objectEvent->facingDirection)); } void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { - npc_apply_direction(objectEvent, sprite, direction, 1); - npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); + InitNpcForMovement(objectEvent, sprite, direction, 1); + SetStepAnimHandleAlternation(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); } -bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (obj_npc_ministep(sprite)) - { - ShiftStillObjectEventCoords(objectEvent); - objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; - return TRUE; - } - return FALSE; -} - -void InitNpcForWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) -{ - s16 x; - s16 y; - - x = objectEvent->currentCoords.x; - y = objectEvent->currentCoords.y; - SetObjectEventDirection(objectEvent, direction); - MoveCoords(direction, &x, &y); - ShiftObjectEventCoords(objectEvent, x, y); - SetSpriteDataForNormalStep(sprite, direction); - sprite->animPaused = FALSE; - objectEvent->triggerGroundEffectsOnMove = TRUE; - sprite->data[2] = 1; -} - -void InitWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) -{ - InitNpcForWalkSlow(objectEvent, sprite, direction); - npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); -} - -bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (NpcTakeStep(sprite)) { @@ -5447,7 +5398,7 @@ bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite) return FALSE; } -void InitNpcForWalkSlow2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void InitNpcForWalkSlower(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { s16 x; s16 y; @@ -5457,16 +5408,216 @@ void InitNpcForWalkSlow2(struct ObjectEvent *objectEvent, struct Sprite *sprite, SetObjectEventDirection(objectEvent, direction); MoveCoords(direction, &x, &y); ShiftObjectEventCoords(objectEvent, x, y); - SetSpriteDataForNormalStep2(sprite, direction); + SetWalkSlowerSpriteData(sprite, direction); sprite->animPaused = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; sprite->data[2] = 1; } -void InitWalkSlow2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void InitWalkSlower(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { - InitNpcForWalkSlow2(objectEvent, sprite, direction); - npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + InitNpcForWalkSlower(objectEvent, sprite, direction); + SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 UpdateWalkSlower(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowerAnim(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +void InitNpcForWalkSlowest(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + SetWalkSlowestSpriteData(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +void InitWalkSlowest(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + InitNpcForWalkSlowest(objectEvent, sprite, direction); + SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); +} + +bool8 UpdateWalkSlowest(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowestAnim(sprite)) + { + ShiftStillObjectEventCoords(objectEvent); + objectEvent->triggerGroundEffectsOnStop = TRUE; + sprite->animPaused = TRUE; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x9B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlowest(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x9B_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x9B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowest(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x9C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlowest(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x9C_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x9C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowest(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x9D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlowest(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x9D_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x9D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowest(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x9E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlowest(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_x9E_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x9E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlowest(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x08_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlower(objectEvent, sprite, DIR_SOUTH); + return MovementActionFunc_x08_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x08_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlower(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x09_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlower(objectEvent, sprite, DIR_NORTH); + return MovementActionFunc_x09_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x09_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlower(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x0A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlower(objectEvent, sprite, DIR_WEST); + return MovementActionFunc_x0A_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x0A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlower(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +static bool8 MovementActionFunc_x0B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + InitWalkSlower(objectEvent, sprite, DIR_EAST); + return MovementActionFunc_x0B_1(objectEvent, sprite); +} + +static bool8 MovementActionFunc_x0B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (UpdateWalkSlower(objectEvent, sprite)) + { + sprite->data[2] = 2; + return TRUE; + } + return FALSE; +} + +// InitNpcForWalkSlow, InitNpcForWalkSlower, InitNpcForWalkSlowest, and +// InitNpcForRunSlow are functionally equivalent +void InitNpcForWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + SetObjectEventDirection(objectEvent, direction); + MoveCoords(direction, &x, &y); + ShiftObjectEventCoords(objectEvent, x, y); + SetWalkSlowSpriteData(sprite, direction); + sprite->animPaused = FALSE; + objectEvent->triggerGroundEffectsOnMove = TRUE; + sprite->data[2] = 1; +} + +// InitWalkSlow, InitWalkSlower, InitWalkSlowest, and InitRunSlow are +// functionally equivalent +void InitWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +{ + InitNpcForWalkSlow(objectEvent, sprite, direction); + SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); } bool8 UpdateWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite) @@ -5481,177 +5632,15 @@ bool8 UpdateWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite) return FALSE; } -static bool8 MovementActionFunc_x9B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow2(objectEvent, sprite, DIR_SOUTH); - return MovementActionFunc_x9B_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x9B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (UpdateWalkSlow(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x9C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow2(objectEvent, sprite, DIR_NORTH); - return MovementActionFunc_x9C_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x9C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (UpdateWalkSlow(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x9D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow2(objectEvent, sprite, DIR_WEST); - return MovementActionFunc_x9D_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x9D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (UpdateWalkSlow(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x9E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow2(objectEvent, sprite, DIR_EAST); - return MovementActionFunc_x9E_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x9E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (UpdateWalkSlow(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x08_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow(objectEvent, sprite, DIR_SOUTH); - return MovementActionFunc_x08_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x08_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (an_walk_any_2(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x09_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow(objectEvent, sprite, DIR_NORTH); - return MovementActionFunc_x09_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x09_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (an_walk_any_2(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x0A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow(objectEvent, sprite, DIR_WEST); - return MovementActionFunc_x0A_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x0A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (an_walk_any_2(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -static bool8 MovementActionFunc_x0B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - InitWalkSlow(objectEvent, sprite, DIR_EAST); - return MovementActionFunc_x0B_1(objectEvent, sprite); -} - -static bool8 MovementActionFunc_x0B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (an_walk_any_2(objectEvent, sprite)) - { - sprite->data[2] = 2; - return TRUE; - } - return FALSE; -} - -void sub_8064B68(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) -{ - s16 x; - s16 y; - - x = objectEvent->currentCoords.x; - y = objectEvent->currentCoords.y; - SetObjectEventDirection(objectEvent, direction); - MoveCoords(direction, &x, &y); - ShiftObjectEventCoords(objectEvent, x, y); - SetSpriteDataForNormalStep3(sprite, direction); - sprite->animPaused = FALSE; - objectEvent->triggerGroundEffectsOnMove = TRUE; - sprite->data[2] = 1; -} - -void sub_8064BD8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) -{ - sub_8064B68(objectEvent, sprite, direction); - npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); -} - -bool8 sub_8064C04(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - if (sub_8068C18(sprite)) - { - ShiftStillObjectEventCoords(objectEvent); - objectEvent->triggerGroundEffectsOnStop = TRUE; - sprite->animPaused = TRUE; - return TRUE; - } - return FALSE; -} - static bool8 MovementActionFunc_x0D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8064BD8(objectEvent, sprite, DIR_NORTH); + InitWalkSlow(objectEvent, sprite, DIR_NORTH); return MovementActionFunc_x0D_1(objectEvent, sprite); } static bool8 MovementActionFunc_x0D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8064C04(objectEvent, sprite)) + if (UpdateWalkSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5661,13 +5650,13 @@ static bool8 MovementActionFunc_x0D_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x0C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8064BD8(objectEvent, sprite, DIR_SOUTH); + InitWalkSlow(objectEvent, sprite, DIR_SOUTH); return MovementActionFunc_x0C_1(objectEvent, sprite); } static bool8 MovementActionFunc_x0C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8064C04(objectEvent, sprite)) + if (UpdateWalkSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5677,13 +5666,13 @@ static bool8 MovementActionFunc_x0C_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x0E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8064BD8(objectEvent, sprite, DIR_WEST); + InitWalkSlow(objectEvent, sprite, DIR_WEST); return MovementActionFunc_x0E_1(objectEvent, sprite); } static bool8 MovementActionFunc_x0E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8064C04(objectEvent, sprite)) + if (UpdateWalkSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5693,13 +5682,13 @@ static bool8 MovementActionFunc_x0E_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x0F_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8064BD8(objectEvent, sprite, DIR_EAST); + InitWalkSlow(objectEvent, sprite, DIR_EAST); return MovementActionFunc_x0F_1(objectEvent, sprite); } static bool8 MovementActionFunc_x0F_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8064C04(objectEvent, sprite)) + if (UpdateWalkSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5709,13 +5698,13 @@ static bool8 MovementActionFunc_x0F_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_SOUTH, 0); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 0); return MovementAction_WalkNormalDown_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5725,13 +5714,13 @@ static bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent static bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_NORTH, 0); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, 0); return MovementAction_WalkNormalUp_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5741,13 +5730,13 @@ static bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_WEST, 0); + InitMovementNormal(objectEvent, sprite, DIR_WEST, 0); return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5757,13 +5746,13 @@ static bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent static bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_EAST, 0); + InitMovementNormal(objectEvent, sprite, DIR_EAST, 0); return MovementAction_WalkNormalRight_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5771,7 +5760,7 @@ static bool8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *objectEven return FALSE; } -void sub_8064E3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a5) +void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a5) { s16 displacements[NELEMS(gUnknown_83A6958)]; s16 x; @@ -5790,14 +5779,14 @@ void sub_8064E3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire objectEvent->disableCoveringGroundEffects = 1; } -void maybe_shadow_1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) +void InitJumpRegular(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) { - sub_8064E3C(objectEvent, sprite, direction, speed, a4); - npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + InitJump(objectEvent, sprite, direction, speed, a4); + SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); DoShadowFieldEffect(objectEvent); } -u8 sub_8064F3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *)) +u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *)) { s16 displacements[NELEMS(gUnknown_83A695E)]; s16 x; @@ -5825,43 +5814,41 @@ u8 sub_8064F3C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callba return result; } -u8 sub_8065000(struct ObjectEvent *objectEvent, struct Sprite *sprite) +u8 DoJumpAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - return sub_8064F3C(objectEvent, sprite, DoJumpSpriteMovement); + return UpdateJumpAnim(objectEvent, sprite, DoJumpSpriteMovement); } -u8 sub_8065014(struct ObjectEvent *objectEvent, struct Sprite *sprite) +u8 DoJumpSpecialAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - return sub_8064F3C(objectEvent, sprite, DoJumpSpecialSpriteMovement); + return UpdateJumpAnim(objectEvent, sprite, DoJumpSpecialSpriteMovement); } -bool8 sub_8065028(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 DoJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065000(objectEvent, sprite) == 0xFF) - { + if (DoJumpAnimStep(objectEvent, sprite) == 0xFF) return TRUE; - } + return FALSE; } -bool8 sub_8065040(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 DoJumpSpecialAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065014(objectEvent, sprite) == 0xFF) - { + if (DoJumpSpecialAnimStep(objectEvent, sprite) == 0xFF) return TRUE; - } + return FALSE; } -bool8 sub_8065058(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - switch (sub_8065000(objectEvent, sprite)) + switch (DoJumpAnimStep(objectEvent, sprite)) { case 0xFF: return TRUE; case 1: SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection)); - obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); + SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); default: return FALSE; } @@ -5869,13 +5856,13 @@ bool8 sub_8065058(struct ObjectEvent *objectEvent, struct Sprite *sprite) static bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 2, 0); + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 2, 0); return MovementAction_Jump2Down_Step1(objectEvent, sprite); } static bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -5886,13 +5873,13 @@ static bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 2, 0); + InitJumpRegular(objectEvent, sprite, DIR_NORTH, 2, 0); return MovementAction_Jump2Up_Step1(objectEvent, sprite); } static bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -5903,13 +5890,13 @@ static bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struc static bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_WEST, 2, 0); + InitJumpRegular(objectEvent, sprite, DIR_WEST, 2, 0); return MovementAction_Jump2Left_Step1(objectEvent, sprite); } static bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -5920,13 +5907,13 @@ static bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_EAST, 2, 0); + InitJumpRegular(objectEvent, sprite, DIR_EAST, 2, 0); return MovementAction_Jump2Right_Step1(objectEvent, sprite); } static bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -5935,7 +5922,7 @@ static bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, st return FALSE; } -void sub_8065208(struct Sprite *sprite, u16 duration) +void InitMovementDelay(struct Sprite *sprite, u16 duration) { sprite->data[2] = 1; sprite->data[3] = duration; @@ -5953,43 +5940,43 @@ static bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct static bool8 MovementAction_Delay1_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065208(sprite, 1); + InitMovementDelay(sprite, 1); return MovementAction_Delay_Step1(objectEvent, sprite); } static bool8 MovementAction_Delay2_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065208(sprite, 2); + InitMovementDelay(sprite, 2); return MovementAction_Delay_Step1(objectEvent, sprite); } static bool8 MovementAction_Delay4_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065208(sprite, 4); + InitMovementDelay(sprite, 4); return MovementAction_Delay_Step1(objectEvent, sprite); } static bool8 MovementAction_Delay8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065208(sprite, 8); + InitMovementDelay(sprite, 8); return MovementAction_Delay_Step1(objectEvent, sprite); } static bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065208(sprite, 16); + InitMovementDelay(sprite, 16); return MovementAction_Delay_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_SOUTH, 1); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 1); return MovementAction_WalkFastDown_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -5999,13 +5986,13 @@ static bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_NORTH, 1); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, 1); return MovementAction_WalkFastUp_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6015,13 +6002,13 @@ static bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, st static bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_WEST, 1); + InitMovementNormal(objectEvent, sprite, DIR_WEST, 1); return MovementAction_WalkFastLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6031,13 +6018,13 @@ static bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_EAST, 1); + InitMovementNormal(objectEvent, sprite, DIR_EAST, 1); return MovementAction_WalkFastRight_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6047,7 +6034,7 @@ static bool8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *objectEvent, bool8 sub_80653CC(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (obj_npc_ministep(sprite)) + if (NpcTakeStep(sprite)) { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; @@ -6061,7 +6048,7 @@ u8 MovementActionFunc_xA0_0(struct ObjectEvent *objectEvent, struct Sprite *spri if(objectEvent->facingDirection != DIR_SOUTH) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); - npc_apply_direction(objectEvent, sprite, DIR_SOUTH, 1); + InitNpcForMovement(objectEvent, sprite, DIR_SOUTH, 1); return MovementActionFunc_xA0_1(objectEvent, sprite); } @@ -6081,7 +6068,7 @@ u8 MovementActionFunc_xA1_0(struct ObjectEvent *objectEvent, struct Sprite *spri if(objectEvent->facingDirection != DIR_NORTH) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH)); - npc_apply_direction(objectEvent, sprite, DIR_NORTH, 1); + InitNpcForMovement(objectEvent, sprite, DIR_NORTH, 1); return MovementActionFunc_xA1_1(objectEvent, sprite); } @@ -6101,7 +6088,7 @@ u8 MovementActionFunc_xA2_0(struct ObjectEvent *objectEvent, struct Sprite *spri if(objectEvent->facingDirection != DIR_WEST) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST)); - npc_apply_direction(objectEvent, sprite, DIR_WEST, 1); + InitNpcForMovement(objectEvent, sprite, DIR_WEST, 1); return MovementActionFunc_xA2_1(objectEvent, sprite); } @@ -6121,7 +6108,7 @@ u8 MovementActionFunc_xA3_0(struct ObjectEvent *objectEvent, struct Sprite *spri if(objectEvent->facingDirection != DIR_EAST) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST)); - npc_apply_direction(objectEvent, sprite, DIR_EAST, 1); + InitNpcForMovement(objectEvent, sprite, DIR_EAST, 1); return MovementActionFunc_xA3_1(objectEvent, sprite); } @@ -6184,10 +6171,10 @@ u8 MovementActionFunc_x07_0(struct ObjectEvent *objectEvent, struct Sprite *spri return TRUE; } -void sub_80656C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration) +void InitMoveInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration) { SetObjectEventDirection(objectEvent, direction); - npc_apply_anim_looping(objectEvent, sprite, animNum); + SetStepAnimHandleAlternation(objectEvent, sprite, animNum); sprite->animPaused = FALSE; sprite->data[2] = 1; sprite->data[3] = duration; @@ -6207,117 +6194,116 @@ static bool8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *objectEvent, s static bool8 MovementAction_WalkInPlaceSlow_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { if (sprite->data[3] & 1) - { sprite->animDelayCounter++; - } + return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32); return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); + InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32); + InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32); return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32); + InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32); return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16); + InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16); + InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16); + InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8); + InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8); + InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8); + InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4); + InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4); + InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4); + InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_SOUTH, 2); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 2); return MovementAction_RideWaterCurrentDown_Step1(objectEvent, sprite); } static bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6327,13 +6313,13 @@ static bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objec static bool8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_NORTH, 2); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, 2); return MovementAction_RideWaterCurrentUp_Step1(objectEvent, sprite); } static bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6343,13 +6329,13 @@ static bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectE static bool8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_WEST, 2); + InitMovementNormal(objectEvent, sprite, DIR_WEST, 2); return MovementAction_RideWaterCurrentLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6359,13 +6345,13 @@ static bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objec static bool8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_EAST, 2); + InitMovementNormal(objectEvent, sprite, DIR_EAST, 2); return MovementAction_RideWaterCurrentRight_Step1(objectEvent, sprite); } static bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6375,13 +6361,13 @@ static bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *obje static bool8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_SOUTH, 3); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 3); return MovementAction_WalkFastestDown_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6391,13 +6377,13 @@ static bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_NORTH, 3); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, 3); return MovementAction_WalkFastestUp_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6407,13 +6393,13 @@ static bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_WEST, 3); + InitMovementNormal(objectEvent, sprite, DIR_WEST, 3); return MovementAction_WalkFastestLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6423,13 +6409,13 @@ static bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_EAST, 3); + InitMovementNormal(objectEvent, sprite, DIR_EAST, 3); return MovementAction_WalkFastestRight_Step1(objectEvent, sprite); } static bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6439,13 +6425,13 @@ static bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEve static bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_SOUTH, 4); + InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 4); return MovementAction_SlideDown_Step1(objectEvent, sprite); } static bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6455,13 +6441,13 @@ static bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_NORTH, 4); + InitMovementNormal(objectEvent, sprite, DIR_NORTH, 4); return MovementAction_SlideUp_Step1(objectEvent, sprite); } static bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6471,13 +6457,13 @@ static bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struc static bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_WEST, 4); + InitMovementNormal(objectEvent, sprite, DIR_WEST, 4); return MovementAction_SlideLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6487,13 +6473,13 @@ static bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - do_go_anim(objectEvent, sprite, DIR_EAST, 4); + InitMovementNormal(objectEvent, sprite, DIR_EAST, 4); return MovementAction_SlideRight_Step1(objectEvent, sprite); } static bool8 MovementAction_SlideRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6509,7 +6495,7 @@ static bool8 MovementAction_PlayerRunDown_Step0(struct ObjectEvent *objectEvent, static bool8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6525,7 +6511,7 @@ static bool8 MovementAction_PlayerRunUp_Step0(struct ObjectEvent *objectEvent, s static bool8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6541,7 +6527,7 @@ static bool8 MovementAction_PlayerRunLeft_Step0(struct ObjectEvent *objectEvent, static bool8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6557,7 +6543,7 @@ static bool8 MovementAction_PlayerRunRight_Step0(struct ObjectEvent *objectEvent static bool8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6565,7 +6551,7 @@ static bool8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *objectEvent return FALSE; } -void InitNpcForWalkSlow3(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void InitNpcForRunSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { s16 x; s16 y; @@ -6575,21 +6561,21 @@ void InitNpcForWalkSlow3(struct ObjectEvent *objectEvent, struct Sprite *sprite, SetObjectEventDirection(objectEvent, direction); MoveCoords(direction, &x, &y); ShiftObjectEventCoords(objectEvent, x, y); - SetSpriteDataForNormalStep4(sprite, direction); + SetRunSlowSpriteData(sprite, direction); sprite->animPaused = FALSE; objectEvent->triggerGroundEffectsOnMove = TRUE; sprite->data[2] = 1; } -void sub_8065F60(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void InitRunSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { - InitNpcForWalkSlow3(objectEvent, sprite, direction); - npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); + InitNpcForRunSlow(objectEvent, sprite, direction); + SetStepAnimHandleAlternation(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection)); } -bool8 sub_8065F8C(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 UpdateRunSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8068CB4(sprite)) + if (UpdateRunSlowAnim(sprite)) { ShiftStillObjectEventCoords(objectEvent); objectEvent->triggerGroundEffectsOnStop = TRUE; @@ -6601,13 +6587,13 @@ bool8 sub_8065F8C(struct ObjectEvent *objectEvent, struct Sprite *sprite) static bool8 MovementActionFunc_x41_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065F60(objectEvent, sprite, DIR_SOUTH); + InitRunSlow(objectEvent, sprite, DIR_SOUTH); return MovementActionFunc_x41_1(objectEvent, sprite); } static bool8 MovementActionFunc_x41_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065F8C(objectEvent, sprite)) + if (UpdateRunSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6617,13 +6603,13 @@ static bool8 MovementActionFunc_x41_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x42_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065F60(objectEvent, sprite, DIR_NORTH); + InitRunSlow(objectEvent, sprite, DIR_NORTH); return MovementActionFunc_x42_1(objectEvent, sprite); } static bool8 MovementActionFunc_x42_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065F8C(objectEvent, sprite)) + if (UpdateRunSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6633,13 +6619,13 @@ static bool8 MovementActionFunc_x42_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x43_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065F60(objectEvent, sprite, DIR_WEST); + InitRunSlow(objectEvent, sprite, DIR_WEST); return MovementActionFunc_x43_1(objectEvent, sprite); } static bool8 MovementActionFunc_x43_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065F8C(objectEvent, sprite)) + if (UpdateRunSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6649,13 +6635,13 @@ static bool8 MovementActionFunc_x43_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x44_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8065F60(objectEvent, sprite, DIR_SOUTH); + InitRunSlow(objectEvent, sprite, DIR_SOUTH); return MovementActionFunc_x44_1(objectEvent, sprite); } static bool8 MovementActionFunc_x44_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065F8C(objectEvent, sprite)) + if (UpdateRunSlow(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6686,21 +6672,21 @@ static bool8 MovementAction_WaitSpriteAnim(struct ObjectEvent *objectEvent, stru return FALSE; } -void sub_8066128(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void InitJumpSpecial(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { - sub_8064E3C(objectEvent, sprite, direction, 1, 0); + InitJump(objectEvent, sprite, direction, 1, 0); StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction)); } static bool8 MovementAction_JumpSpecialDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_SOUTH); + InitJumpSpecial(objectEvent, sprite, DIR_SOUTH); return MovementAction_JumpSpecialDown_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; objectEvent->landingJump = FALSE; @@ -6711,13 +6697,13 @@ static bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_JumpSpecialUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_NORTH); + InitJumpSpecial(objectEvent, sprite, DIR_NORTH); return MovementAction_JumpSpecialUp_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; objectEvent->landingJump = FALSE; @@ -6728,13 +6714,13 @@ static bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_JumpSpecialLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_WEST); + InitJumpSpecial(objectEvent, sprite, DIR_WEST); return MovementAction_JumpSpecialLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; objectEvent->landingJump = FALSE; @@ -6745,13 +6731,13 @@ static bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_JumpSpecialRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_EAST); + InitJumpSpecial(objectEvent, sprite, DIR_EAST); return MovementAction_JumpSpecialRight_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; objectEvent->landingJump = FALSE; @@ -6762,13 +6748,13 @@ static bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEve static bool8 MovementActionFunc_xA6_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_SOUTH); + InitJumpSpecial(objectEvent, sprite, DIR_SOUTH); return MovementActionFunc_xA6_1(objectEvent, sprite); } static bool8 MovementActionFunc_xA6_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6778,13 +6764,13 @@ static bool8 MovementActionFunc_xA6_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_xA7_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_NORTH); + InitJumpSpecial(objectEvent, sprite, DIR_NORTH); return MovementActionFunc_xA7_1(objectEvent, sprite); } static bool8 MovementActionFunc_xA7_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6794,13 +6780,13 @@ static bool8 MovementActionFunc_xA7_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_xA8_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_WEST); + InitJumpSpecial(objectEvent, sprite, DIR_WEST); return MovementActionFunc_xA8_1(objectEvent, sprite); } static bool8 MovementActionFunc_xA8_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6810,13 +6796,13 @@ static bool8 MovementActionFunc_xA8_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_xA9_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066128(objectEvent, sprite, DIR_EAST); + InitJumpSpecial(objectEvent, sprite, DIR_EAST); return MovementActionFunc_xA9_1(objectEvent, sprite); } static bool8 MovementActionFunc_xA9_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065040(objectEvent, sprite)) + if (DoJumpSpecialAnim(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -6864,13 +6850,13 @@ static bool8 MovementAction_UnlockFacingDirection_Step0(struct ObjectEvent *obje static bool8 MovementAction_JumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 1, 2); + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 1, 2); return MovementAction_JumpDown_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6881,13 +6867,13 @@ static bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, stru static bool8 MovementAction_JumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 1, 2); + InitJumpRegular(objectEvent, sprite, DIR_NORTH, 1, 2); return MovementAction_JumpUp_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6898,13 +6884,13 @@ static bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct static bool8 MovementAction_JumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_WEST, 1, 2); + InitJumpRegular(objectEvent, sprite, DIR_WEST, 1, 2); return MovementAction_JumpLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6915,13 +6901,13 @@ static bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, stru static bool8 MovementAction_JumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_EAST, 1, 2); + InitJumpRegular(objectEvent, sprite, DIR_EAST, 1, 2); return MovementAction_JumpRight_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6932,13 +6918,13 @@ static bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, str static bool8 MovementAction_JumpInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 0); + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, 0); return MovementAction_JumpInPlaceDown_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6949,13 +6935,13 @@ static bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_JumpInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 0); + InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, 0); return MovementAction_JumpInPlaceUp_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6966,13 +6952,13 @@ static bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, static bool8 MovementAction_JumpInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 0); + InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, 0); return MovementAction_JumpInPlaceLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -6983,13 +6969,13 @@ static bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEven static bool8 MovementAction_JumpInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 0); + InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, 0); return MovementAction_JumpInPlaceRight_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7000,13 +6986,13 @@ static bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEve static bool8 MovementAction_JumpInPlaceDownUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 2); + InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, 2); return MovementAction_JumpInPlaceDownUp_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065058(objectEvent, sprite)) + if (DoJumpInPlaceAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7017,13 +7003,13 @@ static bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEv static bool8 MovementAction_JumpInPlaceUpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 2); + InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, 2); return MovementAction_JumpInPlaceUpDown_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065058(objectEvent, sprite)) + if (DoJumpInPlaceAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7034,13 +7020,13 @@ static bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEv static bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 2); + InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, 2); return MovementAction_JumpInPlaceLeftRight_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065058(objectEvent, sprite)) + if (DoJumpInPlaceAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7051,13 +7037,13 @@ static bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objec static bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 2); + InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, 2); return MovementAction_JumpInPlaceRightLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065058(objectEvent, sprite)) + if (DoJumpInPlaceAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7276,7 +7262,7 @@ static bool8 MovementAction_ClearAffineAnim_Step0(struct ObjectEvent *objectEven static bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_SOUTH); + InitWalkSlower(objectEvent, sprite, DIR_SOUTH); sprite->affineAnimPaused = FALSE; StartSpriteAffineAnimIfDifferent(sprite, 0); return MovementAction_WalkDownStartAffine_Step1(objectEvent, sprite); @@ -7284,7 +7270,7 @@ static bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *object static bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (an_walk_any_2(objectEvent, sprite)) + if (UpdateWalkSlower(objectEvent, sprite)) { sprite->affineAnimPaused = TRUE; sprite->data[2] = 2; @@ -7295,7 +7281,7 @@ static bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *object static bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - InitWalkSlow(objectEvent, sprite, DIR_SOUTH); + InitWalkSlower(objectEvent, sprite, DIR_SOUTH); sprite->affineAnimPaused = FALSE; ChangeSpriteAffineAnimIfDifferent(sprite, 1); return MovementAction_WalkDownAffine_Step1(objectEvent, sprite); @@ -7303,7 +7289,7 @@ static bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent static bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (an_walk_any_2(objectEvent, sprite)) + if (UpdateWalkSlower(objectEvent, sprite)) { sprite->affineAnimPaused = TRUE; sprite->data[2] = 2; @@ -7312,36 +7298,36 @@ static bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent return FALSE; } -void sub_8066C70(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) +void AcroWheelieFaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction) { SetObjectEventDirection(objectEvent, direction); ShiftStillObjectEventCoords(objectEvent); - obj_npc_animation_step(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction)); + SetStepAnim(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction)); sprite->animPaused = TRUE; sprite->data[2] = 1; } static bool8 MovementActionFunc_x70_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066C70(objectEvent, sprite, DIR_SOUTH); + AcroWheelieFaceDirection(objectEvent, sprite, DIR_SOUTH); return TRUE; } static bool8 MovementActionFunc_x71_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066C70(objectEvent, sprite, DIR_NORTH); + AcroWheelieFaceDirection(objectEvent, sprite, DIR_NORTH); return TRUE; } static bool8 MovementActionFunc_x72_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066C70(objectEvent, sprite, DIR_WEST); + AcroWheelieFaceDirection(objectEvent, sprite, DIR_WEST); return TRUE; } static bool8 MovementActionFunc_x73_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066C70(objectEvent, sprite, DIR_EAST); + AcroWheelieFaceDirection(objectEvent, sprite, DIR_EAST); return TRUE; } @@ -7417,22 +7403,22 @@ static bool8 MovementAction_UnusedAcroActionRight_Step0(struct ObjectEvent *obje return FALSE; } -void sub_8066EA0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) +void InitAcroWheelieJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4) { - sub_8064E3C(objectEvent, sprite, direction, speed, a4); + InitJump(objectEvent, sprite, direction, speed, a4); StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction)); DoShadowFieldEffect(objectEvent); } static bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 0, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 0, 1); return MovementAction_AcroWheelieHopFaceDown_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7443,13 +7429,13 @@ static bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *obj static bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_NORTH, 0, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 0, 1); return MovementAction_AcroWheelieHopFaceUp_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7460,13 +7446,13 @@ static bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objec static bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_WEST, 0, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 0, 1); return MovementAction_AcroWheelieHopFaceLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7477,13 +7463,13 @@ static bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *obj static bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_EAST, 0, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 0, 1); return MovementAction_AcroWheelieHopFaceRight_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7494,13 +7480,13 @@ static bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *ob static bool8 MovementAction_AcroWheelieHopDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 1, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 1, 1); return MovementAction_AcroWheelieHopDown_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7511,13 +7497,13 @@ static bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectE static bool8 MovementAction_AcroWheelieHopUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_NORTH, 1, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 1, 1); return MovementAction_AcroWheelieHopUp_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7528,13 +7514,13 @@ static bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEve static bool8 MovementAction_AcroWheelieHopLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_WEST, 1, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 1, 1); return MovementAction_AcroWheelieHopLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7545,13 +7531,13 @@ static bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectE static bool8 MovementAction_AcroWheelieHopRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_EAST, 1, 1); + InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 1, 1); return MovementAction_AcroWheelieHopRight_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7562,13 +7548,13 @@ static bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *object static bool8 MovementAction_AcroWheelieJumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_SOUTH, 2, 0); + InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 2, 0); return MovementAction_AcroWheelieJumpDown_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7579,13 +7565,13 @@ static bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *object static bool8 MovementAction_AcroWheelieJumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_NORTH, 2, 0); + InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 2, 0); return MovementAction_AcroWheelieJumpUp_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7596,13 +7582,13 @@ static bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEv static bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_WEST, 2, 0); + InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 2, 0); return MovementAction_AcroWheelieJumpLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7613,13 +7599,13 @@ static bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *object static bool8 MovementAction_AcroWheelieJumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_8066EA0(objectEvent, sprite, DIR_EAST, 2, 0); + InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 2, 0); return MovementAction_AcroWheelieJumpRight_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (sub_8065028(objectEvent, sprite)) + if (DoJumpAnim(objectEvent, sprite)) { objectEvent->hasShadow = FALSE; sprite->data[2] = 2; @@ -7630,44 +7616,44 @@ static bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objec static bool8 MovementActionFunc_x88_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8); + InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementActionFunc_x89_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8); + InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementActionFunc_x8A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8); + InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } static bool8 MovementActionFunc_x8B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80656C4(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8); + InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8); return MovementAction_WalkInPlace_Step1(objectEvent, sprite); } -void sub_80673E4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +void InitAcroPopWheelie(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) { - npc_apply_direction(objectEvent, sprite, direction, speed); + InitNpcForMovement(objectEvent, sprite, direction, speed); StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(objectEvent->facingDirection)); SeekSpriteAnim(sprite, 0); } static bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80673E4(objectEvent, sprite, DIR_SOUTH, 1); + InitAcroPopWheelie(objectEvent, sprite, DIR_SOUTH, 1); return MovementAction_AcroPopWheelieMoveDown_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7677,13 +7663,13 @@ static bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *obj static bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80673E4(objectEvent, sprite, DIR_NORTH, 1); + InitAcroPopWheelie(objectEvent, sprite, DIR_NORTH, 1); return MovementAction_AcroPopWheelieMoveUp_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7693,13 +7679,13 @@ static bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objec static bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80673E4(objectEvent, sprite, DIR_WEST, 1); + InitAcroPopWheelie(objectEvent, sprite, DIR_WEST, 1); return MovementAction_AcroPopWheelieMoveLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7709,13 +7695,13 @@ static bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *obj static bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_80673E4(objectEvent, sprite, DIR_EAST, 1); + InitAcroPopWheelie(objectEvent, sprite, DIR_EAST, 1); return MovementAction_AcroPopWheelieMoveRight_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7723,21 +7709,21 @@ static bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *ob return FALSE; } -void sub_806751C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +void InitAcroWheelieMove(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) { - npc_apply_direction(objectEvent, sprite, direction, speed); - npc_apply_anim_looping(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection)); + InitNpcForMovement(objectEvent, sprite, direction, speed); + SetStepAnimHandleAlternation(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection)); } static bool8 MovementAction_AcroWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806751C(objectEvent, sprite, DIR_SOUTH, 1); + InitAcroWheelieMove(objectEvent, sprite, DIR_SOUTH, 1); return MovementAction_AcroWheelieMoveDown_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7747,13 +7733,13 @@ static bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *object static bool8 MovementAction_AcroWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806751C(objectEvent, sprite, DIR_NORTH, 1); + InitAcroWheelieMove(objectEvent, sprite, DIR_NORTH, 1); return MovementAction_AcroWheelieMoveUp_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7763,13 +7749,13 @@ static bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEv static bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806751C(objectEvent, sprite, DIR_WEST, 1); + InitAcroWheelieMove(objectEvent, sprite, DIR_WEST, 1); return MovementAction_AcroWheelieMoveLeft_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7779,13 +7765,13 @@ static bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *object static bool8 MovementAction_AcroWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806751C(objectEvent, sprite, DIR_EAST, 1); + InitAcroWheelieMove(objectEvent, sprite, DIR_EAST, 1); return MovementAction_AcroWheelieMoveRight_Step1(objectEvent, sprite); } static bool8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7793,22 +7779,22 @@ static bool8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *objec return FALSE; } -void sub_806764C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) +void InitSpin(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed) { - npc_apply_direction(objectEvent, sprite, direction, speed); - npc_apply_anim_looping(objectEvent, sprite, sub_80634C0(objectEvent->facingDirection)); + InitNpcForMovement(objectEvent, sprite, direction, speed); + SetStepAnimHandleAlternation(objectEvent, sprite, GetSpinDirectionAnimNum(objectEvent->facingDirection)); SeekSpriteAnim(sprite, 0); } static bool8 MovementActionFunc_x94_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806764C(objectEvent, sprite, DIR_SOUTH, 1); + InitSpin(objectEvent, sprite, DIR_SOUTH, 1); return MovementActionFunc_x94_1(objectEvent, sprite); } static bool8 MovementActionFunc_x94_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7818,13 +7804,13 @@ static bool8 MovementActionFunc_x94_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x95_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806764C(objectEvent, sprite, DIR_NORTH, 1); + InitSpin(objectEvent, sprite, DIR_NORTH, 1); return MovementActionFunc_x95_1(objectEvent, sprite); } static bool8 MovementActionFunc_x95_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7834,13 +7820,13 @@ static bool8 MovementActionFunc_x95_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x96_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806764C(objectEvent, sprite, DIR_WEST, 1); + InitSpin(objectEvent, sprite, DIR_WEST, 1); return MovementActionFunc_x96_1(objectEvent, sprite); } static bool8 MovementActionFunc_x96_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -7850,13 +7836,13 @@ static bool8 MovementActionFunc_x96_1(struct ObjectEvent *objectEvent, struct Sp static bool8 MovementActionFunc_x97_0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - sub_806764C(objectEvent, sprite, DIR_EAST, 1); + InitSpin(objectEvent, sprite, DIR_EAST, 1); return MovementActionFunc_x97_1(objectEvent, sprite); } static bool8 MovementActionFunc_x97_1(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite)) + if (UpdateMovementNormal(objectEvent, sprite)) { sprite->data[2] = 2; return TRUE; @@ -8915,7 +8901,7 @@ static void oct_little_steps(struct Sprite * sprite, u8 direction) sprite->y += 8 * (u16)sDirectionToVectors[direction].y; } -void oamt_npc_ministep_reset(struct Sprite * sprite, u8 direction, u8 speed) +void SetSpriteDataForNormalStep(struct Sprite * sprite, u8 direction, u8 speed) { sprite->tDirection = direction; sprite->tSpeed = speed; @@ -8991,7 +8977,7 @@ static const s16 sSpriteStepCountsBySpeed[] = { NELEMS(sSpeed4) }; -bool8 obj_npc_ministep(struct Sprite *sprite) +bool8 NpcTakeStep(struct Sprite *sprite) { if (sprite->tStepNo >= sSpriteStepCountsBySpeed[sprite->tSpeed]) return FALSE; @@ -9006,23 +8992,18 @@ bool8 obj_npc_ministep(struct Sprite *sprite) return TRUE; } -#undef tStepNo #undef tSpeed -#undef tDirection -#define tDirection data[3] #define tDelay data[4] -#define tStepNo data[5] -void SetSpriteDataForNormalStep(struct Sprite *sprite, u8 direction) +void SetWalkSlowerSpriteData(struct Sprite *sprite, u8 direction) { sprite->tDirection = direction; sprite->tDelay = 0; sprite->tStepNo = 0; } -// used by an_walk_any_2 -bool8 NpcTakeStep(struct Sprite *sprite) +bool8 UpdateWalkSlowerAnim(struct Sprite *sprite) { if (!(sprite->tDelay & 1)) { @@ -9038,14 +9019,16 @@ bool8 NpcTakeStep(struct Sprite *sprite) return FALSE; } -void SetSpriteDataForNormalStep3(struct Sprite *sprite, u8 direction) +// SetWalkSlowSpriteData, SetWalkSlowerSpriteData, SetWalkSlowestSpriteData, +// and SetRunSlowSpriteData are functionally equivalent +void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction) { sprite->tDirection = direction; sprite->tDelay = 0; sprite->tStepNo = 0; } -bool8 sub_8068C18(struct Sprite *sprite) +bool8 UpdateWalkSlowAnim(struct Sprite *sprite) { if (++sprite->tDelay < 3) { @@ -9061,14 +9044,14 @@ bool8 sub_8068C18(struct Sprite *sprite) return FALSE; } -void SetSpriteDataForNormalStep2(struct Sprite *sprite, u8 direction) +void SetWalkSlowestSpriteData(struct Sprite *sprite, u8 direction) { sprite->tDirection = direction; sprite->tDelay = 0; sprite->tStepNo = 0; } -bool8 UpdateWalkSlowAnim(struct Sprite *sprite) +bool8 UpdateWalkSlowestAnim(struct Sprite *sprite) { if (++sprite->tDelay > 9) { @@ -9083,14 +9066,14 @@ bool8 UpdateWalkSlowAnim(struct Sprite *sprite) return FALSE; } -void SetSpriteDataForNormalStep4(struct Sprite *sprite, u8 direction) +void SetRunSlowSpriteData(struct Sprite *sprite, u8 direction) { sprite->tDirection = direction; sprite->tDelay = 0; sprite->tStepNo = 0; } -bool8 sub_8068CB4(struct Sprite *sprite) +bool8 UpdateRunSlowAnim(struct Sprite *sprite) { if ((++sprite->tDelay) & 1) { @@ -9111,9 +9094,7 @@ bool8 sub_8068CB4(struct Sprite *sprite) #undef tStepNo #undef tDelay -#undef tDirection -#define tDirection data[3] #define tJumpSpeed data[4] #define tJumpHeight data[5] #define tStepNo data[6] diff --git a/src/field_effect.c b/src/field_effect.c index 1c6c0f632..b44218dd5 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1600,7 +1600,7 @@ static bool8 waterfall_2_wait_anim_finish_probably(struct Task * task, struct Ob static bool8 waterfall_3_move_player_probably(struct Task * task, struct ObjectEvent * playerObj) { - ObjectEventSetHeldMovement(playerObj, GetWalkSlowestMovementAction(DIR_NORTH)); + ObjectEventSetHeldMovement(playerObj, GetWalkSlowerMovementAction(DIR_NORTH)); task->data[0]++; return FALSE; } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 16426cdc4..b242796d4 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -831,7 +831,7 @@ static void QL_TryRecordNPCStepWithDuration32(struct ObjectEvent * objectEvent, void PlayerGoSlowest(u8 direction) { - PlayerSetAnimId(GetWalkSlowestMovementAction(direction), 2); + PlayerSetAnimId(GetWalkSlowerMovementAction(direction), 2); } void PlayerGoSlow(u8 direction) @@ -908,9 +908,9 @@ void PlayerJumpLedge(u8 direction) PlayerSetAnimId(GetJump2MovementAction(direction), 8); } -void sub_805C260(void) +void PlayerShakeHead(void) { - PlayerSetAnimId(MOVEMENT_ACTION_0x9F, 0); + PlayerSetAnimId(MOVEMENT_ACTION_SHAKE_HEAD, 0); } void HandleEnforcedLookDirectionOnPlayerStopMoving(void) @@ -1428,7 +1428,7 @@ static bool8 DoBoulderDust(struct Task *task, struct ObjectEvent *playerObject, ObjectEventClearHeldMovementIfFinished(playerObject); ObjectEventClearHeldMovementIfFinished(strengthObject); QL_TryRecordPlayerStepWithDuration0(playerObject, GetWalkInPlaceNormalMovementAction((u8)task->data[2])); - QL_TryRecordNPCStepWithDuration32(strengthObject, GetWalkSlowestMovementAction((u8)task->data[2])); + QL_TryRecordNPCStepWithDuration32(strengthObject, GetWalkSlowerMovementAction((u8)task->data[2])); gFieldEffectArguments[0] = strengthObject->currentCoords.x; gFieldEffectArguments[1] = strengthObject->currentCoords.y; gFieldEffectArguments[2] = strengthObject->previousElevation; @@ -1560,7 +1560,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec { if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { - QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowestMovementAction(GetOppositeDirection(task->data[1]))); + QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowerMovementAction(GetOppositeDirection(task->data[1]))); ScriptContext2_Disable(); gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin)); @@ -1617,7 +1617,7 @@ static void Task_StopSurfingInit(u8 taskId) return; } SetSurfBlob_BobState(playerObjEvent->fieldEffectSpriteId, 2); - QL_TryRecordPlayerStepWithDuration0(playerObjEvent, sub_80641EC((u8)gTasks[taskId].data[0])); + QL_TryRecordPlayerStepWithDuration0(playerObjEvent, GetJumpSpecialWithEffectMovementAction((u8)gTasks[taskId].data[0])); gTasks[taskId].func = Task_WaitStopSurfing; } From 7de67831e90daa5f03c4cb78d60f8edfd2763127 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Thu, 10 Feb 2022 01:48:28 +0800 Subject: [PATCH 2/7] Add macros for renamed movement actions --- asm/macros/movement.inc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index 8e2ac8038..b6c151730 100644 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -113,12 +113,24 @@ create_movement rock_smash_break create_movement cut_tree - enum_start 0x91 - create_movement step_91 - create_movement step_92 + enum_start 0x94 + create_movement spin_down + create_movement spin_up + create_movement spin_left + create_movement spin_right - enum_start 0x96 - create_movement step_96 + enum_start 0x9b + create_movement walk_slowest_down + create_movement walk_slowest_up + create_movement walk_slowest_left + create_movement walk_slowest_right + create_movement shake_head + + enum_start 0xa6 + create_movement jump_special_with_effect_down + create_movement jump_special_with_effect_up + create_movement jump_special_with_effect_left + create_movement jump_special_with_effect_right enum_start 0xfe create_movement step_end From 0f3e26f9a406caafbad02d39b15137efe5fb3ecd Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Thu, 10 Feb 2022 01:53:48 +0800 Subject: [PATCH 3/7] Fix formatting and style --- include/constants/event_object_movement.h | 36 ++++++++++------------- src/event_object_movement.c | 18 ++++++++---- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index d7901481e..87625860b 100644 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -236,26 +236,22 @@ #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_LEFT 0x92 #define MOVEMENT_ACTION_ACRO_WHEELIE_MOVE_RIGHT 0x93 -#define MOVEMENT_ACTION_SPIN_DOWN 0x94 -#define MOVEMENT_ACTION_SPIN_UP 0x95 -#define MOVEMENT_ACTION_SPIN_LEFT 0x96 -#define MOVEMENT_ACTION_SPIN_RIGHT 0x97 - -#define MOVEMENT_ACTION_0x98 0x98 -#define MOVEMENT_ACTION_0x99 0x99 -#define MOVEMENT_ACTION_0x9A 0x9A - -#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x9B -#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9C -#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0x9D -#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0x9E -#define MOVEMENT_ACTION_SHAKE_HEAD 0x9F - -#define MOVEMENT_ACTION_0xA0 0xA0 -#define MOVEMENT_ACTION_0xA1 0xA1 -#define MOVEMENT_ACTION_0xA2 0xA2 -#define MOVEMENT_ACTION_0xA3 0xA3 - +#define MOVEMENT_ACTION_SPIN_DOWN 0x94 +#define MOVEMENT_ACTION_SPIN_UP 0x95 +#define MOVEMENT_ACTION_SPIN_LEFT 0x96 +#define MOVEMENT_ACTION_SPIN_RIGHT 0x97 +#define MOVEMENT_ACTION_0x98 0x98 +#define MOVEMENT_ACTION_0x99 0x99 +#define MOVEMENT_ACTION_0x9A 0x9A +#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN 0x9B +#define MOVEMENT_ACTION_WALK_SLOWEST_UP 0x9C +#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT 0x9D +#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT 0x9E +#define MOVEMENT_ACTION_SHAKE_HEAD 0x9F +#define MOVEMENT_ACTION_0xA0 0xA0 +#define MOVEMENT_ACTION_0xA1 0xA1 +#define MOVEMENT_ACTION_0xA2 0xA2 +#define MOVEMENT_ACTION_0xA3 0xA3 #define MOVEMENT_ACTION_FLY_UP 0xA4 #define MOVEMENT_ACTION_FLY_DOWN 0xA5 #define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_DOWN 0xA6 diff --git a/src/event_object_movement.c b/src/event_object_movement.c index bd66b32a4..d2cff5e53 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2197,7 +2197,8 @@ static void LoadObjectEventPalette(u16 paletteTag) } } -void Unused_LoadObjectEventPaletteSet(u16 *paletteTags) +// Unused +void LoadObjectEventPaletteSet(u16 *paletteTags) { u8 i; @@ -2285,7 +2286,8 @@ u8 sub_805F6D0(u8 var) return gReflectionEffectPaletteMap[var]; } -void Unused_IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) +// Unused +void IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) { objectEvent->previousCoords.x = objectEvent->currentCoords.x; objectEvent->previousCoords.y = objectEvent->currentCoords.y; @@ -2575,7 +2577,8 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId) return GetObjectEventFlagIdByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); } -u8 Unused_GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +// Unused +u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { u8 objectEventId; @@ -2590,12 +2593,14 @@ u16 GetObjectEventFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->trainerType; } -u8 Unused_GetObjectTrainerTypeByObjectEventId(u8 objectEventId) +// Unused +u8 GetObjectTrainerTypeByObjectEventId(u8 objectEventId) { return gObjectEvents[objectEventId].trainerType; } -u8 Unused_GetObjectEventBerryTreeIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +// Unused +u8 GetObjectEventBerryTreeIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { u8 objectEventId; @@ -2605,7 +2610,8 @@ u8 Unused_GetObjectEventBerryTreeIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 map return gObjectEvents[objectEventId].trainerRange_berryTreeId; } -u8 Unused_GetObjectEventBerryTreeId(u8 objectEventId) +// Unused +u8 GetObjectEventBerryTreeId(u8 objectEventId) { return gObjectEvents[objectEventId].trainerRange_berryTreeId; } From 27c3f7204a38270c0243041fea0a870ac2799cb2 Mon Sep 17 00:00:00 2001 From: Deokishisu <6993375+Deokishisu@users.noreply.github.com> Date: Fri, 11 Feb 2022 06:19:16 -0500 Subject: [PATCH 4/7] Fix Magic Number in sub_8064544 in event_object_movement.c `sub_8064544()` has something to do with handling boulder puzzles and used a magic number instead of `OBJ_EVENT_GFX_PUSHABLE_BOULDER` while checking the object's `graphicsId`. This has been fixed. --- src/event_object_movement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index d2cff5e53..e1558f9f6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5301,7 +5301,7 @@ static void sub_8064544(struct ObjectEvent *objectEvent, struct Sprite *sprite) if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite)) { objectEvent->heldMovementFinished = TRUE; - if (objectEvent->graphicsId == 0x61) + if (objectEvent->graphicsId == OBJ_EVENT_GFX_PUSHABLE_BOULDER) HandleBoulderFallThroughHole(objectEvent); } } From 2598b285bb7383475c264c6bec391c676708bc8e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 11 Feb 2022 13:18:31 -0500 Subject: [PATCH 5/7] Add missing trainer type constant usage --- data/maps/SeafoamIslands_1F/map.json | 4 ++-- data/maps/SeafoamIslands_B1F/map.json | 4 ++-- data/maps/SeafoamIslands_B2F/map.json | 4 ++-- data/maps/SeafoamIslands_B3F/map.json | 4 ++-- data/maps/VictoryRoad_3F/map.json | 2 +- include/event_object_movement.h | 2 +- src/event_object_movement.c | 13 ++++++------- src/field_control_avatar.c | 2 +- src/field_player_avatar.c | 3 ++- src/trainer_see.c | 14 ++++++-------- src/vs_seeker.c | 15 ++++++--------- 11 files changed, 31 insertions(+), 36 deletions(-) diff --git a/data/maps/SeafoamIslands_1F/map.json b/data/maps/SeafoamIslands_1F/map.json index b85000671..8956609fb 100644 --- a/data/maps/SeafoamIslands_1F/map.json +++ b/data/maps/SeafoamIslands_1F/map.json @@ -23,7 +23,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "66", + "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1" @@ -36,7 +36,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "67", + "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_2" diff --git a/data/maps/SeafoamIslands_B1F/map.json b/data/maps/SeafoamIslands_B1F/map.json index 014da39a1..8e3cb2bb5 100644 --- a/data/maps/SeafoamIslands_B1F/map.json +++ b/data/maps/SeafoamIslands_B1F/map.json @@ -23,7 +23,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "68", + "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1" @@ -36,7 +36,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "69", + "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2" diff --git a/data/maps/SeafoamIslands_B2F/map.json b/data/maps/SeafoamIslands_B2F/map.json index 5d770655f..e2b21a02f 100644 --- a/data/maps/SeafoamIslands_B2F/map.json +++ b/data/maps/SeafoamIslands_B2F/map.json @@ -23,7 +23,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "70", + "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1" @@ -36,7 +36,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "71", + "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2" diff --git a/data/maps/SeafoamIslands_B3F/map.json b/data/maps/SeafoamIslands_B3F/map.json index 21f25cfba..07eec3472 100644 --- a/data/maps/SeafoamIslands_B3F/map.json +++ b/data/maps/SeafoamIslands_B3F/map.json @@ -49,7 +49,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "77", + "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_2", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5" @@ -88,7 +88,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "76", + "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_3" diff --git a/data/maps/VictoryRoad_3F/map.json b/data/maps/VictoryRoad_3F/map.json index c53d1d2cc..6f21bdd56 100644 --- a/data/maps/VictoryRoad_3F/map.json +++ b/data/maps/VictoryRoad_3F/map.json @@ -114,7 +114,7 @@ "movement_type": "MOVEMENT_TYPE_FACE_DOWN", "movement_range_x": 0, "movement_range_y": 0, - "trainer_type": "88", + "trainer_type": "FLAG_HIDE_VICTORY_ROAD_2F_BOULDER", "trainer_sight_or_berry_tree_id": "0", "script": "EventScript_StrengthBoulder", "flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER" diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 46529bdfe..c53cb7d67 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -64,7 +64,7 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *); u8 GetObjectEventIdByXY(s16, s16); void SetObjectEventDirection(struct ObjectEvent *, u8); void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); -u16 GetObjectEventFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); +u16 GetBoulderRevealFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); void LoadPlayerObjectReflectionPalette(u16, u8); void LoadSpecialObjectReflectionPalette(u16, u8); void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index e1558f9f6..5897e7dc6 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -17,6 +17,7 @@ #include "trig.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" +#include "constants/trainer_types.h" static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16); static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *); @@ -1682,7 +1683,7 @@ int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 objectEventTemplate.movementType = movementBehavior; objectEventTemplate.movementRangeX = 0; objectEventTemplate.movementRangeY = 0; - objectEventTemplate.trainerType = 0; + objectEventTemplate.trainerType = TRAINER_TYPE_NONE; objectEventTemplate.trainerRange_berryTreeId = 0; return SpawnSpecialObjectEvent(&objectEventTemplate); } @@ -2588,8 +2589,10 @@ u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) return gObjectEvents[objectEventId].trainerType; } -u16 GetObjectEventFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +u16 GetBoulderRevealFlagByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { + // Pushable boulder object events store the flag to reveal the boulder + // on the floor below in their trainer type field. return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->trainerType; } @@ -2824,13 +2827,9 @@ bool8 ObjectEventIsTrainerAndCloseToPlayer(struct ObjectEvent *objectEvent) s16 maxY; if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) - { return FALSE; - } - if (objectEvent->trainerType != 1 && objectEvent->trainerType != 3) - { + if (objectEvent->trainerType != TRAINER_TYPE_NORMAL && objectEvent->trainerType != TRAINER_TYPE_BURIED) return FALSE; - } PlayerGetDestCoords(&playerX, &playerY); objX = objectEvent->currentCoords.x; objY = objectEvent->currentCoords.y; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index ca5453d7d..8cab2d12b 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -1069,7 +1069,7 @@ void HandleBoulderFallThroughHole(struct ObjectEvent * object) { PlaySE(SE_FALL); RemoveObjectEventByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); - FlagClear(GetObjectEventFlagByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)); + FlagClear(GetBoulderRevealFlagByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)); } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index b242796d4..bafe7fd22 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -25,6 +25,7 @@ #include "constants/songs.h" #include "constants/metatile_behaviors.h" #include "constants/moves.h" +#include "constants/trainer_types.h" static EWRAM_DATA struct ObjectEvent * sPlayerObjectPtr = NULL; static EWRAM_DATA u8 sTeleportSavedFacingDirection = DIR_NONE; @@ -1295,7 +1296,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) playerObjEventTemplate.movementType = MOVEMENT_TYPE_PLAYER; playerObjEventTemplate.movementRangeX = 0; playerObjEventTemplate.movementRangeY = 0; - playerObjEventTemplate.trainerType = 0; + playerObjEventTemplate.trainerType = TRAINER_TYPE_NONE; playerObjEventTemplate.trainerRange_berryTreeId = 0; playerObjEventTemplate.script = NULL; playerObjEventTemplate.flagId = 0; diff --git a/src/trainer_see.c b/src/trainer_see.c index 904b8725c..d1c97e9af 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -10,6 +10,7 @@ #include "constants/battle_setup.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" +#include "constants/trainer_types.h" typedef u8 (*TrainerApproachFunc)(struct ObjectEvent *, s16, s16, s16); typedef bool8 (*TrainerSeeFunc)(u8, struct Task *, struct ObjectEvent *); @@ -93,12 +94,9 @@ bool8 CheckForTrainersWantingBattle(void) for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { if (gObjectEvents[i].active - && ( - gObjectEvents[i].trainerType == 1 - || gObjectEvents[i].trainerType == 3 - ) - && CheckTrainer(i) - ) + && (gObjectEvents[i].trainerType == TRAINER_TYPE_NORMAL + || gObjectEvents[i].trainerType == TRAINER_TYPE_BURIED) + && CheckTrainer(i)) return TRUE; } return FALSE; @@ -129,12 +127,12 @@ static u8 GetTrainerApproachDistance(struct ObjectEvent *trainerObj) u8 approachDistance; PlayerGetDestCoords(&x, &y); - if (trainerObj->trainerType == 1) // can only see in one direction + if (trainerObj->trainerType == TRAINER_TYPE_NORMAL) // can only see in one direction { approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->facingDirection - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->facingDirection); } - else // can see in all directions + else // TRAINER_TYPE_SEE_ALL_DIRECTIONS, TRAINER_TYPE_BURIED { for (i = 0; i < 4; i++) { diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 295976dd8..1fd93b82b 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -638,14 +638,11 @@ void VsSeekerResetObjectMovementAfterChargeComplete(void) for (i = 0; i < gMapHeader.events->objectEventCount; i++) { - if (( - templates[i].trainerType == TRAINER_TYPE_NORMAL - || templates[i].trainerType == TRAINER_TYPE_BURIED - ) && ( - templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4D - || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4E - || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4F - )) + if ((templates[i].trainerType == TRAINER_TYPE_NORMAL + || templates[i].trainerType == TRAINER_TYPE_BURIED) + && (templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4D + || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4E + || templates[i].movementType == MOVEMENT_TYPE_VS_SEEKER_4F)) { movementType = GetRandomFaceDirectionMovementType(); TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId); @@ -808,7 +805,7 @@ static void GatherNearbyTrainerInfo(void) for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->objectEventCount; objectEventIdx++) { - if (templates[objectEventIdx].trainerType == 1 || templates[objectEventIdx].trainerType == 3) + if (templates[objectEventIdx].trainerType == TRAINER_TYPE_NORMAL || templates[objectEventIdx].trainerType == TRAINER_TYPE_BURIED) { sVsSeeker->trainerInfo[vsSeekerObjectIdx].script = templates[objectEventIdx].script; sVsSeeker->trainerInfo[vsSeekerObjectIdx].trainerIdx = GetTrainerFlagFromScript(templates[objectEventIdx].script); From 24f18af338cd8608719e6b7b87424286331c6bba Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 11 Feb 2022 14:43:38 -0500 Subject: [PATCH 6/7] Add missing map constant usage --- src/battle_setup.c | 8 +++++++- src/event_object_movement.c | 9 ++++++--- src/menu_helpers.c | 4 +++- src/overworld.c | 9 ++++++--- src/script.c | 9 +++++---- src/wild_encounter.c | 2 +- src/wild_pokemon_area.c | 3 ++- 7 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/battle_setup.c b/src/battle_setup.c index 49e2d9e01..6b87edd69 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -211,7 +211,13 @@ static void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means de static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum) { if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F) - && ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6) + && (mapNum == MAP_NUM(POKEMON_TOWER_1F) + || mapNum == MAP_NUM(POKEMON_TOWER_2F) + || mapNum == MAP_NUM(POKEMON_TOWER_3F) + || mapNum == MAP_NUM(POKEMON_TOWER_4F) + || mapNum == MAP_NUM(POKEMON_TOWER_5F) + || mapNum == MAP_NUM(POKEMON_TOWER_6F) + || mapNum == MAP_NUM(POKEMON_TOWER_7F)) && !(CheckBagHasItem(ITEM_SILPH_SCOPE, 1))) return TRUE; else diff --git a/src/event_object_movement.c b/src/event_object_movement.c index e1558f9f6..ce3f045ca 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -15,6 +15,7 @@ #include "script.h" #include "trainer_see.h" #include "trig.h" +#include "constants/maps.h" #include "constants/event_object_movement.h" #include "constants/event_objects.h" @@ -1214,8 +1215,8 @@ static void ClearObjectEvent(struct ObjectEvent *objectEvent) { *objectEvent = (struct ObjectEvent){}; objectEvent->localId = 0xFF; - objectEvent->mapNum = 0xFF; - objectEvent->mapGroup = 0xFF; + objectEvent->mapNum = MAP_NUM(UNDEFINED); + objectEvent->mapGroup = MAP_GROUP(UNDEFINED); objectEvent->movementActionId = 0xFF; } @@ -8038,7 +8039,9 @@ static void CalcWhetherObjectIsOffscreen(struct ObjectEvent *objectEvent, struct x2 = graphicsInfo->width + (s16)x; y2 = graphicsInfo->height + (s16)y; - if (gSaveBlock1Ptr->location.mapGroup == 1 && gSaveBlock1Ptr->location.mapNum == 4 && objectEvent->localId == 1) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SSANNE_EXTERIOR) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SSANNE_EXTERIOR) + && objectEvent->localId == 1) { var = -32; } diff --git a/src/menu_helpers.c b/src/menu_helpers.c index a64a4a0cd..11d26f204 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -10,6 +10,7 @@ #include "field_specials.h" #include "constants/songs.h" #include "constants/items.h" +#include "constants/maps.h" static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = NULL; static EWRAM_DATA TaskFunc gUnknown_20399CC = NULL; @@ -94,7 +95,8 @@ bool8 itemid_link_can_give_berry(u16 itemId) { if (itemId != ITEM_ENIGMA_BERRY) return TRUE; - else if (!gSaveBlock1Ptr->location.mapGroup && gSaveBlock1Ptr->location.mapNum == 1) + else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRADE_CENTER) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRADE_CENTER)) return FALSE; else if (InUnionRoom() != TRUE) return TRUE; diff --git a/src/overworld.c b/src/overworld.c index cb5507b4c..fc54745a9 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -520,9 +520,9 @@ static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId static bool32 IsDummyWarp(struct WarpData *warp) { - if (warp->mapGroup != -1) + if (warp->mapGroup != (s8)MAP_GROUP(UNDEFINED)) return FALSE; - else if (warp->mapNum != -1) + else if (warp->mapNum != (s8)MAP_NUM(UNDEFINED)) return FALSE; else if (warp->warpId != -1) return FALSE; @@ -895,7 +895,10 @@ bool8 sub_8055B38(u16 metatileBehavior) { if (MetatileBehavior_IsSurfable(metatileBehavior) != TRUE) return FALSE; - if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F))) + if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B3F) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B3F)) + || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEAFOAM_ISLANDS_B4F) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEAFOAM_ISLANDS_B4F))) return TRUE; return FALSE; } diff --git a/src/script.c b/src/script.c index c45c6744c..23973be9c 100644 --- a/src/script.c +++ b/src/script.c @@ -2,6 +2,7 @@ #include "script.h" #include "event_data.h" #include "quest_log.h" +#include "constants/maps.h" #define RAM_SCRIPT_MAGIC 51 #define SCRIPT_STACK_SIZE 20 @@ -511,9 +512,9 @@ bool32 ValidateRamScript(void) struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data; if (scriptData->magic != RAM_SCRIPT_MAGIC) return FALSE; - if (scriptData->mapGroup != 0xFF) + if (scriptData->mapGroup != MAP_GROUP(UNDEFINED)) return FALSE; - if (scriptData->mapNum != 0xFF) + if (scriptData->mapNum != MAP_NUM(UNDEFINED)) return FALSE; if (scriptData->objectId != 0xFF) return FALSE; @@ -529,9 +530,9 @@ u8 *sub_8069E48(void) return NULL; if (scriptData->magic != RAM_SCRIPT_MAGIC) return NULL; - if (scriptData->mapGroup != 0xFF) + if (scriptData->mapGroup != MAP_GROUP(UNDEFINED)) return NULL; - if (scriptData->mapNum != 0xFF) + if (scriptData->mapNum != MAP_NUM(UNDEFINED)) return NULL; if (scriptData->objectId != 0xFF) return NULL; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index d848d0ce5..b513ad47e 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -182,7 +182,7 @@ static u16 GetCurrentMapWildMonHeaderId(void) for (i = 0; ; i++) { const struct WildPokemonHeader * wildHeader = &gWildMonHeaders[i]; - if (wildHeader->mapGroup == 0xFF) + if (wildHeader->mapGroup == MAP_GROUP(UNDEFINED)) break; if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && diff --git a/src/wild_pokemon_area.c b/src/wild_pokemon_area.c index 0cb4a10b1..c93ae36b6 100644 --- a/src/wild_pokemon_area.c +++ b/src/wild_pokemon_area.c @@ -6,6 +6,7 @@ #include "overworld.h" #include "pokedex_area_markers.h" #include "constants/region_map_sections.h" +#include "constants/maps.h" struct SeviiDexArea { @@ -181,7 +182,7 @@ s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites) alteringCaveNum = VarGet(VAR_ALTERING_CAVE_WILD_SET); if (alteringCaveNum > 8) alteringCaveNum = 0; - for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++) + for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED); i++) { mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]); if (mapSecId == MAPSEC_ALTERING_CAVE) From 59695b82210cb2c95c10b52efc1a88e18c67dea9 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 11 Feb 2022 15:05:15 -0500 Subject: [PATCH 7/7] Sync roamer --- include/constants/pokemon.h | 8 +- src/roamer.c | 194 ++++++++++++++++++++---------------- 2 files changed, 117 insertions(+), 85 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 737eed4d4..43a6231ca 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -209,8 +209,14 @@ #define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8 #define FRIENDSHIP_EVENT_FAINT_LARGE 9 -#define PARTY_SIZE 6 +#define MAX_PER_STAT_IVS 31 +#define MAX_IV_MASK 31 +#define USE_RANDOM_IVS (MAX_PER_STAT_IVS + 1) +#define MAX_PER_STAT_EVS 255 #define MAX_TOTAL_EVS 510 +#define EV_ITEM_RAISE_LIMIT 100 + +#define PARTY_SIZE 6 #define UNOWN_FORM_COUNT 28 #define BOX_NAME_LENGTH 8 diff --git a/src/roamer.c b/src/roamer.c index 6367e9d43..f1f9a0743 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -5,53 +5,74 @@ #include "constants/maps.h" #include "constants/region_map_sections.h" -EWRAM_DATA u8 sLocationHistory[3][2] = {}; -EWRAM_DATA u8 sRoamerLocation[2] = {}; - -#define saveRoamer (*(&gSaveBlock1Ptr->roamer)) +// Despite having a variable to track it, the roamer is +// hard-coded to only ever be in map group 3 +#define ROAMER_MAP_GROUP 3 enum { - MAP_GRP = 0, // map group - MAP_NUM = 1, // map number + MAP_GRP, // map group + MAP_NUM, // map number }; -const u8 sRoamerLocations[][7] = { - {MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE3), MAP_NUM(ROUTE2), MAP_NUM(ROUTE4), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE4), MAP_NUM(ROUTE3), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24), 0xff, 0xff}, +#define ROAMER (&gSaveBlock1Ptr->roamer) +EWRAM_DATA u8 sLocationHistory[3][2] = {}; +EWRAM_DATA u8 sRoamerLocation[2] = {}; + +#define ___ MAP_NUM(UNDEFINED) // For empty spots in the location table + +// Note: There are two potential softlocks that can occur with this table if its maps are +// changed in particular ways. They can be avoided by ensuring the following: +// - There must be at least 2 location sets that start with a different map, +// i.e. every location set cannot start with the same map. This is because of +// the while loop in RoamerMoveToOtherLocationSet. +// - Each location set must have at least 3 unique maps. This is because of +// the while loop in RoamerMove. In this loop the first map in the set is +// ignored, and an additional map is ignored if the roamer was there recently. +// - Additionally, while not a softlock, it's worth noting that if for any +// map in the location table there is not a location set that starts with +// that map then the roamer will be significantly less likely to move away +// from that map when it lands there. +static const u8 sRoamerLocations[][7] = { + {MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE22), ___, ___, ___}, + {MAP_NUM(ROUTE2), MAP_NUM(ROUTE1), MAP_NUM(ROUTE3), MAP_NUM(ROUTE22), ___, ___, ___}, + {MAP_NUM(ROUTE3), MAP_NUM(ROUTE2), MAP_NUM(ROUTE4), ___, ___, ___, ___}, + {MAP_NUM(ROUTE4), MAP_NUM(ROUTE3), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24), ___, ___}, {MAP_NUM(ROUTE5), MAP_NUM(ROUTE4), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE24)}, - {MAP_NUM(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), 0xff, 0xff}, - {MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), 0xff, 0xff}, - {MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), 0xff}, - {MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), 0xff, 0xff}, - {MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), 0xff, 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff}, - {MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), 0xff, 0xff, 0xff, 0xff}, - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + {MAP_NUM(ROUTE6), MAP_NUM(ROUTE5), MAP_NUM(ROUTE7), MAP_NUM(ROUTE8), MAP_NUM(ROUTE11), ___, ___}, + {MAP_NUM(ROUTE7), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE8), MAP_NUM(ROUTE16), ___, ___}, + {MAP_NUM(ROUTE8), MAP_NUM(ROUTE5), MAP_NUM(ROUTE6), MAP_NUM(ROUTE7), MAP_NUM(ROUTE10), MAP_NUM(ROUTE12), ___}, + {MAP_NUM(ROUTE9), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE10), MAP_NUM(ROUTE24), ___, ___}, + {MAP_NUM(ROUTE10), MAP_NUM(ROUTE8), MAP_NUM(ROUTE9), MAP_NUM(ROUTE12), ___, ___, ___}, + {MAP_NUM(ROUTE11), MAP_NUM(ROUTE6), MAP_NUM(ROUTE12), ___, ___, ___, ___}, + {MAP_NUM(ROUTE12), MAP_NUM(ROUTE10), MAP_NUM(ROUTE11), MAP_NUM(ROUTE13), ___, ___, ___}, + {MAP_NUM(ROUTE13), MAP_NUM(ROUTE12), MAP_NUM(ROUTE14), ___, ___, ___, ___}, + {MAP_NUM(ROUTE14), MAP_NUM(ROUTE13), MAP_NUM(ROUTE15), ___, ___, ___, ___}, + {MAP_NUM(ROUTE15), MAP_NUM(ROUTE14), MAP_NUM(ROUTE18), MAP_NUM(ROUTE19), ___, ___, ___}, + {MAP_NUM(ROUTE16), MAP_NUM(ROUTE7), MAP_NUM(ROUTE17), ___, ___, ___, ___}, + {MAP_NUM(ROUTE17), MAP_NUM(ROUTE16), MAP_NUM(ROUTE18), ___, ___, ___, ___}, + {MAP_NUM(ROUTE18), MAP_NUM(ROUTE15), MAP_NUM(ROUTE17), MAP_NUM(ROUTE19), ___, ___, ___}, + {MAP_NUM(ROUTE19), MAP_NUM(ROUTE15), MAP_NUM(ROUTE18), MAP_NUM(ROUTE20), ___, ___, ___}, + {MAP_NUM(ROUTE20), MAP_NUM(ROUTE19), MAP_NUM(ROUTE21_NORTH), ___, ___, ___, ___}, + {MAP_NUM(ROUTE21_NORTH), MAP_NUM(ROUTE1), MAP_NUM(ROUTE20), ___, ___, ___, ___}, + {MAP_NUM(ROUTE22), MAP_NUM(ROUTE1), MAP_NUM(ROUTE2), MAP_NUM(ROUTE23), ___, ___, ___}, + {MAP_NUM(ROUTE23), MAP_NUM(ROUTE22), MAP_NUM(ROUTE2), ___, ___, ___, ___}, + {MAP_NUM(ROUTE24), MAP_NUM(ROUTE4), MAP_NUM(ROUTE5), MAP_NUM(ROUTE9), ___, ___, ___}, + {MAP_NUM(ROUTE25), MAP_NUM(ROUTE24), MAP_NUM(ROUTE9), ___, ___, ___, ___}, + {___, ___, ___, ___, ___, ___, ___} }; +#undef ___ +#define NUM_LOCATION_SETS (ARRAY_COUNT(sRoamerLocations) - 1) +#define NUM_LOCATIONS_PER_SET (ARRAY_COUNT(sRoamerLocations[0])) + void ClearRoamerData(void) { u32 i; - gSaveBlock1Ptr->roamer = (struct Roamer){}; + *ROAMER = (struct Roamer){}; sRoamerLocation[MAP_GRP] = 0; sRoamerLocation[MAP_NUM] = 0; - for (i = 0; i < 3; i++) + for (i = 0; i < ARRAY_COUNT(sLocationHistory); i++) { sLocationHistory[i][MAP_GRP] = 0; sLocationHistory[i][MAP_NUM] = 0; @@ -77,24 +98,23 @@ void ClearRoamerData(void) void CreateInitialRoamerMon(void) { - struct Pokemon * tmpMon = &gEnemyParty[0]; - u16 roamerMon; - - CreateMon(tmpMon, (roamerMon = GetRoamerSpecies()), 50, 0x20, 0, 0, 0, 0); - saveRoamer.species = roamerMon; - saveRoamer.level = 50; - saveRoamer.status = 0; - saveRoamer.active = TRUE; - saveRoamer.ivs = GetMonData(tmpMon, MON_DATA_IVS); - saveRoamer.personality = GetMonData(tmpMon, MON_DATA_PERSONALITY); - saveRoamer.hp = GetMonData(tmpMon, MON_DATA_MAX_HP); - saveRoamer.cool = GetMonData(tmpMon, MON_DATA_COOL); - saveRoamer.beauty = GetMonData(tmpMon, MON_DATA_BEAUTY); - saveRoamer.cute = GetMonData(tmpMon, MON_DATA_CUTE); - saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART); - saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH); - sRoamerLocation[MAP_GRP] = 3; - sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0]; + struct Pokemon * mon = &gEnemyParty[0]; + u16 species = GetRoamerSpecies(); + CreateMon(mon, species, 50, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + ROAMER->species = species; + ROAMER->level = 50; + ROAMER->status = 0; + ROAMER->active = TRUE; + ROAMER->ivs = GetMonData(mon, MON_DATA_IVS); + ROAMER->personality = GetMonData(mon, MON_DATA_PERSONALITY); + ROAMER->hp = GetMonData(mon, MON_DATA_MAX_HP); + ROAMER->cool = GetMonData(mon, MON_DATA_COOL); + ROAMER->beauty = GetMonData(mon, MON_DATA_BEAUTY); + ROAMER->cute = GetMonData(mon, MON_DATA_CUTE); + ROAMER->smart = GetMonData(mon, MON_DATA_SMART); + ROAMER->tough = GetMonData(mon, MON_DATA_TOUGH); + sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP; + sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % NUM_LOCATION_SETS][0]; } void InitRoamer(void) @@ -107,8 +127,10 @@ void UpdateLocationHistoryForRoamer(void) { sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP]; sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM]; + sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP]; sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM]; + sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; } @@ -116,16 +138,17 @@ void UpdateLocationHistoryForRoamer(void) void RoamerMoveToOtherLocationSet(void) { u8 mapNum = 0; - struct Roamer *roamer = &saveRoamer; - if (!roamer->active) + if (!ROAMER->active) return; - sRoamerLocation[MAP_GRP] = 3; + sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP; + // Choose a location set that starts with a map + // different from the roamer's current map while (1) { - mapNum = sRoamerLocations[Random() % (NELEMS(sRoamerLocations) - 1)][0]; + mapNum = sRoamerLocations[Random() % NUM_LOCATION_SETS][0]; if (sRoamerLocation[MAP_NUM] != mapNum) { sRoamerLocation[MAP_NUM] = mapNum; @@ -145,20 +168,23 @@ void RoamerMove(void) } else { - struct Roamer *roamer = &saveRoamer; - - if (!roamer->active) + if (!ROAMER->active) return; - while (locSet < (NELEMS(sRoamerLocations) - 1)) + while (locSet < NUM_LOCATION_SETS) { + // Find the location set that starts with the roamer's current map if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) { u8 mapNum; while (1) { - mapNum = sRoamerLocations[locSet][(Random() % 6) + 1]; - if (!(sLocationHistory[2][MAP_GRP] == 3 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF) + // Choose a new map (excluding the first) within this set + // Also exclude a map if the roamer was there 2 moves ago + mapNum = sRoamerLocations[locSet][(Random() % (NUM_LOCATIONS_PER_SET - 1)) + 1]; + if (!(sLocationHistory[2][MAP_GRP] == ROAMER_MAP_GROUP + && sLocationHistory[2][MAP_NUM] == mapNum) + && mapNum != MAP_NUM(UNDEFINED)) break; } sRoamerLocation[MAP_NUM] = mapNum; @@ -171,9 +197,7 @@ void RoamerMove(void) bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) { - struct Roamer *roamer = &saveRoamer; - - if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM]) + if (ROAMER->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM]) return TRUE; else return FALSE; @@ -181,20 +205,24 @@ bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) void CreateRoamerMonInstance(void) { - struct Pokemon *mon; - struct Roamer *roamer; - - mon = &gEnemyParty[0]; + u32 status; + struct Pokemon *mon = &gEnemyParty[0]; ZeroEnemyPartyMons(); - roamer = &saveRoamer; - CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality); - SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status); - SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp); - SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool); - SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty); - SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute); - SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart); - SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough); + CreateMonWithIVsPersonality(mon, ROAMER->species, ROAMER->level, ROAMER->ivs, ROAMER->personality); +// The roamer's status field is u8, but SetMonData expects status to be u32, so will set the roamer's status +// using the status field and the following 3 bytes (cool, beauty, and cute). +#ifdef BUGFIX + status = ROAMER->status; + SetMonData(mon, MON_DATA_STATUS, &status); +#else + SetMonData(mon, MON_DATA_STATUS, &ROAMER->status); +#endif + SetMonData(mon, MON_DATA_HP, &ROAMER->hp); + SetMonData(mon, MON_DATA_COOL, &ROAMER->cool); + SetMonData(mon, MON_DATA_BEAUTY, &ROAMER->beauty); + SetMonData(mon, MON_DATA_CUTE, &ROAMER->cute); + SetMonData(mon, MON_DATA_SMART, &ROAMER->smart); + SetMonData(mon, MON_DATA_TOUGH, &ROAMER->tough); } bool8 TryStartRoamerEncounter(void) @@ -211,16 +239,15 @@ bool8 TryStartRoamerEncounter(void) } void UpdateRoamerHPStatus(struct Pokemon *mon) { - saveRoamer.hp = GetMonData(mon, MON_DATA_HP); - saveRoamer.status = GetMonData(mon, MON_DATA_STATUS); + ROAMER->hp = GetMonData(mon, MON_DATA_HP); + ROAMER->status = GetMonData(mon, MON_DATA_STATUS); RoamerMoveToOtherLocationSet(); } void SetRoamerInactive(void) { - struct Roamer *roamer = &saveRoamer; - roamer->active = FALSE; + ROAMER->active = FALSE; } void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) @@ -231,8 +258,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) u16 GetRoamerLocationMapSectionId(void) { - struct Roamer *roamer = &saveRoamer; - if (!saveRoamer.active) + if (!ROAMER->active) return MAPSEC_NONE; return Overworld_GetMapHeaderByGroupAndId(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId; }