diff --git a/include/game/stage/player.h b/include/game/stage/player.h index 9ca171593..5ae1ae4d6 100644 --- a/include/game/stage/player.h +++ b/include/game/stage/player.h @@ -26,7 +26,7 @@ void sub_80232D0(Player *); void sub_8023610(Player *); void Player_TouchGround(Player *p); void Player_80261D8(Player *p); -void sub_8027EF0(Player *p); +void Player_HandlePhysicsWithAirInput(Player *p); void sub_8028204(Player *p); void sub_80282EC(Player *p); void sub_80283C4(Player *p); diff --git a/src/game/player_callbacks.c b/src/game/player_callbacks.c index 7cff734da..24234a736 100644 --- a/src/game/player_callbacks.c +++ b/src/game/player_callbacks.c @@ -236,7 +236,7 @@ void Player_SonicAmy_WindupSkidAttack(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_SonicAmy_SkidAttack(Player *p) @@ -265,7 +265,7 @@ void Player_SonicAmy_SkidAttack(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (!(p->moveState & MOVESTATE_IN_AIR)) { sub_8029FA4(p); @@ -507,7 +507,7 @@ void Player_80123D0(Player *p) PLAYERFN_SET(Player_TouchGround); } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_SonicAmy_WindupStopNSlam(Player *p) @@ -543,7 +543,7 @@ void Player_SonicAmy_StopNSlam_AfterGroundCollision(Player *p) void Player_SonicAmy_StopNSlam_FallAfterCollision(Player *p) { - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (!(p->moveState & MOVESTATE_IN_AIR)) { p->transition = PLTRANS_TOUCH_GROUND; @@ -564,7 +564,7 @@ void Player_Sonic_HomingAttack(Player *p) p->moveState &= ~MOVESTATE_BOOST_EFFECT_ON; } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (!(p->moveState & MOVESTATE_IN_AIR)) { // Hit ground instead of targeted enemy @@ -719,7 +719,7 @@ void Player_Cream_ChaoAttack(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Cream_InitStepAttack(Player *p) @@ -778,7 +778,7 @@ void Player_Cream_StepAttack(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } // Mid-Air: Down-B @@ -790,7 +790,7 @@ void Player_Cream_ChaoRollingAttack(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (!(p->moveState & MOVESTATE_IN_AIR)) { p->transition = PLTRANS_TOUCH_GROUND; @@ -799,7 +799,7 @@ void Player_Cream_ChaoRollingAttack(Player *p) void Player_Cream_WindupMidAirChaoAttack(Player *p) { - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (!(p->moveState & MOVESTATE_IN_AIR)) { p->transition = PLTRANS_TOUCH_GROUND; @@ -1005,7 +1005,7 @@ void Player_Tails_TailSwipe(Player *p) PLAYERFN_SET(Player_TouchGround); } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } /* Character: Knuckles */ @@ -1103,7 +1103,7 @@ void Player_Knuckles_PunchLeft(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Knuckles_PunchRight(Player *p) @@ -1130,7 +1130,7 @@ void Player_Knuckles_PunchRight(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Knuckles_InitSpiralAttack(Player *p) @@ -1178,7 +1178,7 @@ void Player_Knuckles_SpiralAttack(Player *p) PLAYERFN_SET(Player_8013B6C); } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Knuckles_Glide_UpdateFrames(Player *p) @@ -1816,7 +1816,7 @@ void Player_8013B6C(Player *p) } } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Knuckles_Glide(Player *p) @@ -1840,7 +1840,7 @@ void Player_Knuckles_GlideSoftLanding(Player *p) p->transition = PLTRANS_TOUCH_GROUND; } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } void Player_Knuckles_GlideHardLanding(Player *p) @@ -1990,7 +1990,7 @@ void Player_Knuckles_DrillClaw(Player *p) void Player_8013E34(Player *p) { - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); p->speedGroundX = 0; p->speedAirX = 0; @@ -2090,5 +2090,5 @@ void Player_Amy_HammerAttack(Player *p) PLAYERFN_SET(Player_TouchGround); } - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); } diff --git a/src/game/stage/player.c b/src/game/stage/player.c index 9262bf9c7..9b6ac6d2c 100644 --- a/src/game/stage/player.c +++ b/src/game/stage/player.c @@ -68,7 +68,7 @@ void Player_8026BCC(Player *); s32 sub_8029BB8(Player *p, u8 *p1, s32 *out); -void Player_8025A0C(Player *p); +void Player_SpinAttack(Player *p); void Player_Idle(Player *); void Player_8025AB8(Player *); @@ -115,7 +115,7 @@ bool32 Player_TryCrouchOrSpinAttack(Player *); bool32 Player_TryInitSpindash(Player *); void Player_InitCrouch(Player *); void Player_InitIceSlide(Player *); -void Player_802A3B8(Player *); +void PlayerFn_Cmd_HandlePhysics(Player *); void Player_802A3C4(Player *); void Player_CameraShift(Player *); void Player_InitSpecialStageTransition(Player *); @@ -3385,7 +3385,7 @@ void CallPlayerTransition(Player *p) PLAYERFN_SET(Player_TouchGround); } break; case PLTRANS_PT2 - 1: { - PLAYERFN_SET(Player_8025A0C); + PLAYERFN_SET(Player_SpinAttack); } break; case PLTRANS_INIT_JUMP - 1: { p->moveState &= ~(MOVESTATE_400000 | MOVESTATE_IGNORE_INPUT); @@ -4194,7 +4194,7 @@ void Player_Crouch(Player *p) } } -void Player_8025A0C(Player *p) +void Player_SpinAttack(Player *p) { if (IS_BOSS_STAGE(gCurrentLevel)) { if ((p->moveState & MOVESTATE_IN_AIR)) { @@ -4547,7 +4547,7 @@ void Player_Spindash(Player *p) p->speedGroundX = speed; - gPlayer.callback = Player_8025A0C; + gPlayer.callback = Player_SpinAttack; m4aSongNumStart(SE_SPIN_DASH_RELEASE); } else { @@ -4957,7 +4957,7 @@ void Player_8026E24(Player *p) m4aSongNumStart(SE_SPIN); - PLAYERFN_SET_AND_CALL(Player_802A3B8, p); + PLAYERFN_SET_AND_CALL(PlayerFn_Cmd_HandlePhysics, p); } void Player_8026F10(Player *p) @@ -5461,7 +5461,8 @@ void Player_8027D3C(Player *p) } } -void sub_8027EF0(Player *p) +// Generic function for movement and collision, has aerial input, used in character aerial/landing states +void Player_HandlePhysicsWithAirInput(Player *p) { if (p->moveState & MOVESTATE_IN_AIR) { sub_8023610(p); @@ -5485,7 +5486,8 @@ void sub_8027EF0(Player *p) } } -void sub_802808C(Player *p) +// Generic function for movement and collision that doesn't allow player influence +void Player_HandlePhysics(Player *p) { if (p->moveState & MOVESTATE_IN_AIR) { sub_80232D0(p); @@ -6746,7 +6748,7 @@ bool32 Player_TryCrouchOrSpinAttack(Player *p) return TRUE; } else if (((u16)(p->speedGroundX + (Q(0.5) - 1)) > Q(1.0) - 2) && !(p->moveState & (MOVESTATE_1000000 | MOVESTATE_4 | MOVESTATE_IN_AIR))) { - PLAYERFN_SET(Player_8025A0C); + PLAYERFN_SET(Player_SpinAttack); m4aSongNumStart(SE_SPIN_ATTACK); return TRUE; } @@ -6799,7 +6801,7 @@ void Player_802A258(Player *p) { if (!(p->moveState & MOVESTATE_IN_AIR)) { if (p->moveState & MOVESTATE_4) - Player_8025A0C(p); + Player_SpinAttack(p); else Player_TouchGround(p); } else { @@ -6842,14 +6844,14 @@ void Player_InitDashRing(Player *p) void Player_InitIceSlide(Player *p) { Player_InitIceSlide_inline(p); } -void Player_802A3B8(Player *p) { sub_802808C(p); } +void PlayerFn_Cmd_HandlePhysics(Player *p) { Player_HandlePhysics(p); } void Player_802A3C4(Player *p) { - sub_8027EF0(p); + Player_HandlePhysicsWithAirInput(p); if (p->spriteInfoBody->s.frameFlags & SPRITE_FLAG_MASK_ANIM_OVER) - PLAYERFN_SET(Player_8025A0C); + PLAYERFN_SET(Player_SpinAttack); } void Player_CameraShift(Player *p) { Player_CameraShift_inline(p); }