From 6d7550f14a5043bc509ecadcd8e758c9c088c1f6 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Fri, 4 Apr 2025 15:37:16 -0400 Subject: [PATCH] player_whide 100%, player_ship fixes --- include/d/actor/d_a_player_main.h | 2 +- src/d/actor/d_a_player_dproc.inc | 5 +- src/d/actor/d_a_player_ship.inc | 451 +++++++++++++------------- src/d/actor/d_a_player_sword.inc | 2 +- src/d/actor/d_a_player_whide.inc | 506 +++++++++++++++--------------- 5 files changed, 473 insertions(+), 493 deletions(-) diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index e65af1d79..e135cbdb4 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -1364,7 +1364,7 @@ public: BOOL procClimbMoveSide_init(int); BOOL procClimbMoveSide(); void setBlendWHideMoveAnime(f32); - int getWHideModePolygon(cXyz*, cXyz*, cXyz*, int); + cM3dGPla* getWHideModePolygon(cXyz*, cXyz*, cXyz*, int); void getWHideBasePos(cXyz*); void getWHideNextPos(cXyz*, cXyz*); BOOL checkWHideBackWall(cXyz*); diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 2243bbd71..e8fcaf8ac 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -293,7 +293,6 @@ BOOL daPy_lk_c::dProcDamage() { /* 8012DF24-8012E054 .text dProcHoldup_init__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcHoldup_init() { - s32 uVar1; daPy_ANM dVar3; short sVar2; f32 dVar6; @@ -303,8 +302,8 @@ BOOL daPy_lk_c::dProcHoldup_init() { if (mCurProc == daPyProc_DEMO_HOLDUP_e) { return false; } - // TODO: figure out what's going on here. - uVar1 = mModeFlg >> 4 & ModeFlg_00000001; + + BOOL uVar1 = checkModeFlg(ModeFlg_WHIDE) ? TRUE : FALSE; commonProcInit(daPyProc_DEMO_HOLDUP_e); if (uVar1) { if (checkNoResetFlg0(daPyFlg0_UNK10000)) { diff --git a/src/d/actor/d_a_player_ship.inc b/src/d/actor/d_a_player_ship.inc index 03149fb52..b5e70fe99 100644 --- a/src/d/actor/d_a_player_ship.inc +++ b/src/d/actor/d_a_player_ship.inc @@ -30,20 +30,14 @@ BOOL daPy_lk_c::shipSpecialDemoStart() { /* 8013F8AC-8013F984 .text checkJumpRideShip__9daPy_lk_cFv */ BOOL daPy_lk_c::checkJumpRideShip() { - /* Nonmatching - regalloc related - to cXyz. */ - daShip_c* iVar1; - cXyz local_38; - cXyz local_2c; - - if (((mCyl.ChkCoHit()) && (mCyl.GetCoHitAc())) && (fopAcM_GetName(iVar1) == PROC_SHIP)) { - mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, &local_38); - cXyz local_2c(iVar1->old.pos - local_38); - if (local_2c.y > 5.0f) { - local_38.x = local_2c.x; - local_38.y = 0.0f; - local_38.z = local_2c.z; - if (local_2c.abs2() < 10000.0f) { + if (mCyl.ChkCoHit()) { + fopAc_ac_c* hit_ac = mCyl.GetCoHitAc(); + if (hit_ac != NULL && fopAcM_GetName(hit_ac) == PROC_SHIP) { + daShip_c* ship = (daShip_c*)hit_ac; + cXyz sp20; + mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, &sp20); + sp20 = old.pos - sp20; + if (sp20.y > 5.0f && sp20.abs2XZ() < 10000.0f) { return procShipJumpRide_init(); } } @@ -117,7 +111,6 @@ void daPy_lk_c::setShipRidePosUseItem() { /* 80140018-801403E0 .text setShipRidePos__9daPy_lk_cFi */ void daPy_lk_c::setShipRidePos(int param_0) { - /* Nonmatching - branching, cXyz */ daShip_c* iVar1 = dComIfGp_getShipActor(); if (iVar1 != 0) { if (iVar1->mStateFlag & 0x4000) { @@ -142,7 +135,7 @@ void daPy_lk_c::setShipRidePos(int param_0) { } if (mCurProc == ANM_WARPOUT) { mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset3, ¤t.pos); - } else if ((mCurProc == ANM_SETBOOTS) && (m34D8 != 0)) { + } else if (mCurProc == ANM_SETBOOTS && m34D8 != 0) { mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset2, ¤t.pos); } else { mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, ¤t.pos); @@ -151,8 +144,9 @@ void daPy_lk_c::setShipRidePos(int param_0) { mBodyAngle.y = 0; } else { cXyz local_38; - dKyw_get_AllWind_vec(¤t.pos, &local_38, &local_38.y); - f32 fVar2 = (30.0f * local_38.x + iVar1->speedF) / 30.0f; + f32 sp08; + dKyw_get_AllWind_vec(¤t.pos, &local_38, &sp08); + f32 fVar2 = (30.0f * sp08 + iVar1->speedF) / 30.0f; if (fVar2 > 1.0f) { fVar2 = 1.0f; } @@ -173,14 +167,15 @@ void daPy_lk_c::setShipRidePos(int param_0) { setSingleMoveAnime(ANM_SHIP_JUMP2, 1.0f, 3.0f, -1, 3.0f); } if (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_SHIP_JUMP2) { - if (!(mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { - } else if ((iVar1->mStateFlag & 1) != 0) { - setSingleMoveAnime(ANM_SHIP_JUMP1, 1.0f, 0.0f, -1, 20.0f); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if ((iVar1->mStateFlag & 1) != 0) { + setSingleMoveAnime(ANM_SHIP_JUMP1, 1.0f, 0.0f, -1, 20.0f); + } else { + setSingleMoveAnime(ANM_VOYAGE1, 1.0f, 0.0f, -1, 5.0f); + } } else { - setSingleMoveAnime(ANM_VOYAGE1, 1.0f, 0.0f, -1, 5.0f); + mFrameCtrlUpper[UPPER_MOVE2_e].setRate(0.0f); } - } else { - mFrameCtrlUpper[UPPER_MOVE2_e].setRate(0.0f); } s16 sVar4; if (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_VOYAGE1) { @@ -208,42 +203,44 @@ void daPy_lk_c::setShipAttentionAnmSpeed(f32 param_0) { /* 80140480-801405F0 .text setShipAttnetionBodyAngle__9daPy_lk_cFv */ void daPy_lk_c::setShipAttnetionBodyAngle() { - /* Nonmatching - floats, math */ - int iVar1; - s16 sVar2; - setBodyAngleXReadyAnime(); - sVar2 = 0; + + s16 r30 = 0; if (mpAttnActorLockOn != NULL) { setShapeAngleToAtnActor(); } else { if (mStickDistance > 0.05f) { - iVar1 = getDirectionFromAngle(m34DC); + int iVar1 = getDirectionFromAngle(m34DC); if (iVar1 == 2) { - sVar2 = (s16)(int)(512.0f * mStickDistance); - if (m34DA > sVar2) { - m34DA = m34DA + (short)(int)(64.0f * mStickDistance); - if (sVar2 > m34DA) { - m34DA = sVar2; - } else { - sVar2 = m34DA; + s16 r5 = 512.0f * mStickDistance; + if (r5 > m34DA) { + s16 r0 = 64.0f * mStickDistance; + m34DA += r0; + if (m34DA > r5) { + m34DA = r5; } + r30 = m34DA; + } else { + r30 = r5; } } else if (iVar1 == 3) { - sVar2 = (s16)(int)(-512.0f * mStickDistance); - if (sVar2 < m34DA) { - m34DA = m34DA - (short)(int)(64.0f * mStickDistance); - if (m34DA < sVar2) { - m34DA = sVar2; - } else { - sVar2 = m34DA; + s16 r5 = -512.0f * mStickDistance; + if (r5 < m34DA) { + s16 r0 = 64.0f * mStickDistance; + m34DA -= r0; + if (m34DA < r5) { + m34DA = r5; } + r30 = m34DA; + } else { + r30 = r5; } } } - cLib_addCalcAngleS(&m34DA, sVar2, 3, 0x40, 0x10); + cLib_addCalcAngleS(&m34DA, r30, 3, 0x40, 0x10); shape_angle.y = shape_angle.y + m34DA; } + current.angle.y = shape_angle.y; } @@ -280,7 +277,6 @@ void daPy_lk_c::initShipCraneAnime() { /* 80140D80-80140EF0 .text procShipReady_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipReady_init() { - /* Nonmatching - regalloc */ commonProcInit(daPyProc_SHIP_READY_e); deleteEquipItem(TRUE); daShip_c* iVar1 = dComIfGp_getShipActor(); @@ -294,7 +290,7 @@ BOOL daPy_lk_c::procShipReady_init() { gravity = 0.0f; mVelocity = 0.0f; s16 sVar3 = fopAcM_searchActorAngleY((fopAc_ac_c*)iVar1, this); - if ((sVar3 - iVar1->shape_angle.y) > 0) { + if ((s16)(sVar3 - iVar1->shape_angle.y) > 0) { mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, ¤t.pos); shape_angle.y = iVar1->shape_angle.y + -0x4000; m34D4 = shape_angle.y; @@ -320,21 +316,17 @@ BOOL daPy_lk_c::procShipReady_init() { /* 80140EF0-8014105C .text procShipReady__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipReady() { - /* Nonmatching - floats, branching, - regalloc */ - daShip_c* iVar1 = dComIfGp_getShipActor(); + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); - if (iVar1 == 0) { - checkNextMode(0); - } else if (m3570 == 0) { + if (ship == 0) { + return checkNextMode(0); + } + + if (m3570 == 0) { if (m34D0 == 0) { - mDoMtx_multVec( - iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, &dComIfGp_getShipActor()->current.pos - ); + mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, ¤t.pos); } else { - mDoMtx_multVec( - iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_redge, &dComIfGp_getShipActor()->current.pos - ); + mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_redge, ¤t.pos); } if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { m3570 = 1; @@ -342,17 +334,18 @@ BOOL daPy_lk_c::procShipReady() { setSingleMoveAnime(ANM_WALK, daPy_HIO_move_c0::m.field_0x40, 0.0f, -1, 5.0f); m34C2 = 10; offModeFlg(ModeFlg_HANG | ModeFlg_00000400); - iVar1->m034D = 4; - m35A0 = iVar1->current.pos.y; + ship->m034D = 4; + m35A0 = ship->current.pos.y; } } else { - current.pos.y = current.pos.y + (iVar1->current.pos.y - m35A0); - cLib_chaseF(¤t.pos.y, (iVar1->current.pos.y + l_ship_offset.y), 2.0f); - m35A0 = iVar1->current.pos.y; - if (!(fopAcM_seenActorAngleY(this, (fopAc_ac_c*)iVar1) < 0x4000)) { + current.pos.y = current.pos.y + (ship->current.pos.y - m35A0); + cLib_chaseF(¤t.pos.y, (ship->current.pos.y + l_ship_offset.y), 2.0f); + m35A0 = ship->current.pos.y; + if (!(fopAcM_seenActorAngleY(this, (fopAc_ac_c*)ship) < 0x4000)) { procShipPaddle_init(); } } + return true; } @@ -360,23 +353,23 @@ BOOL daPy_lk_c::procShipReady() { BOOL daPy_lk_c::procShipJumpRide_init() { daShip_c* iVar1 = dComIfGp_getShipActor(); - if ((iVar1 == 0) || ((iVar1->attention_info.flags & fopAc_Attn_ACTION_SHIP_e) == 0)) { + if (iVar1 == 0 || ((iVar1->attention_info.flags & fopAc_Attn_ACTION_SHIP_e) == 0)) { return false; - } else { - commonProcInit(daPyProc_SHIP_JUMP_RIDE_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - speed.y = 0.0f; - mVelocity = 0.0f; - iVar1->m034D = 2; - iVar1->mStateFlag = iVar1->mStateFlag | 0x2000; - setSingleMoveAnime(ANM_SLIPICE, 1.0f, 0.0f, -1, 5.0f); - setShipRidePos(0); - offNoResetFlg0(daPyFlg0_SHIP_DROP); - dComIfGp_setPlayerStatus1(0, daPyStts1_UNK80_e); - seStartOnlyReverb(JA_SE_LK_FT_JUMP_SHIP); - return true; } + + commonProcInit(daPyProc_SHIP_JUMP_RIDE_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + speed.y = 0.0f; + mVelocity = 0.0f; + iVar1->m034D = 2; + iVar1->mStateFlag = iVar1->mStateFlag | 0x2000; + setSingleMoveAnime(ANM_SLIPICE, 1.0f, 0.0f, -1, 5.0f); + setShipRidePos(0); + offNoResetFlg0(daPyFlg0_SHIP_DROP); + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK80_e); + seStartOnlyReverb(JA_SE_LK_FT_JUMP_SHIP); + return true; } /* 80141140-80141180 .text procShipJumpRide__9daPy_lk_cFv */ @@ -391,23 +384,22 @@ BOOL daPy_lk_c::procShipJumpRide() { /* 80141180-8014123C .text procShipSteer_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipSteer_init() { - /* Nonmatching */ offNoResetFlg0(daPyFlg0_UNK1); daShip_c* iVar1 = dComIfGp_getShipActor(); if (mCurProc == daPyProc_SHIP_STEER_e) { iVar1->m034D = 1; return false; - } else { - commonProcInit(daPyProc_SHIP_STEER_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - mVelocity = 0.0f; - speed.y = 0.0f; - iVar1->m034D = 1; - initShipBaseAnime(); - setShipRidePos(1); - dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); } + + commonProcInit(daPyProc_SHIP_STEER_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + mVelocity = 0.0f; + speed.y = 0.0f; + iVar1->m034D = 1; + initShipBaseAnime(); + setShipRidePos(1); + dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); return true; } @@ -415,40 +407,39 @@ BOOL daPy_lk_c::procShipSteer_init() { BOOL daPy_lk_c::procShipSteer() { if (changeShipEndProc()) { return true; - } else { - setShipRidePos(1); } + + setShipRidePos(1); return true; } /* 80141288-801413A4 .text procShipPaddle_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipPaddle_init() { - /* Nonmatching - floats */ offNoResetFlg0(daPyFlg0_UNK800000); if (mCurProc == daPyProc_SHIP_PADDLE_e) { return false; - } else { - daShip_c* iVar1 = dComIfGp_getShipActor(); - BOOL bVar1; - if ((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && (!checkShipNotNormalMode())) { - bVar1 = true; - } else { - bVar1 = false; - } - commonProcInit(daPyProc_SHIP_PADDLE_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - speed.y = 0.0f; - mVelocity = 0.0f; - iVar1->m034D = 2; - initShipBaseAnime(); - if (!bVar1) { - setOldRootQuaternion(0, shape_angle.y - iVar1->shape_angle.y, 0); - } - setShipRidePos(1); - dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); - m34D0 = (s16)(int)(300.0f + cM_rndF(150.0f)); } + + daShip_c* iVar1 = dComIfGp_getShipActor(); + BOOL bVar1; + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && !checkShipNotNormalMode()) { + bVar1 = true; + } else { + bVar1 = false; + } + commonProcInit(daPyProc_SHIP_PADDLE_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + speed.y = 0.0f; + mVelocity = 0.0f; + iVar1->m034D = 2; + initShipBaseAnime(); + if (!bVar1) { + setOldRootQuaternion(0, shape_angle.y - iVar1->shape_angle.y, 0); + } + setShipRidePos(1); + dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); + m34D0 = (s16)(int)(300.0f + cM_rndF(150.0f)); return true; } @@ -490,21 +481,21 @@ BOOL daPy_lk_c::procShipBoomerang_init() { daShip_c* iVar1 = dComIfGp_getShipActor(); if (mCurProc == daPyProc_SHIP_BOOMERANG_e) { return false; - } else { - commonProcInit(daPyProc_SHIP_BOOMERANG_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - iVar1->m034D = 2; - mEquipItem = dItem_BOOMERANG_e; - setSingleMoveAnime(ANM_ATNRS, 0.0f, 0.0f, -1, 5.0f); - setActAnimeUpper(LKANM_BCK_BOOMWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f); - setTextureAnime(0, 0); - makeItemType(); - dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e | daPyStts0_BOOMERANG_AIM_e); - setShipRidePos(0); - m34D4 = iVar1->shape_angle.y; - m34DA = 0; } + + commonProcInit(daPyProc_SHIP_BOOMERANG_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + iVar1->m034D = 2; + mEquipItem = dItem_BOOMERANG_e; + setSingleMoveAnime(ANM_ATNRS, 0.0f, 0.0f, -1, 5.0f); + setActAnimeUpper(LKANM_BCK_BOOMWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f); + setTextureAnime(0, 0); + makeItemType(); + dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e | daPyStts0_BOOMERANG_AIM_e); + setShipRidePos(0); + m34D4 = iVar1->shape_angle.y; + m34DA = 0; return true; } @@ -515,30 +506,30 @@ BOOL daPy_lk_c::procShipBoomerang() { /* 80141BB0-80141CF8 .text procShipHookshot_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipHookshot_init() { - /* Nonmatching - regalloc */ - daShip_c* iVar1 = dComIfGp_getShipActor(); + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); if (mCurProc == daPyProc_SHIP_HOOKSHOT_e) { return false; - } else { - commonProcInit(daPyProc_SHIP_HOOKSHOT_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - iVar1->m034D = 2; - mEquipItem = dItem_HOOKSHOT_e; - m355C = 10; - setSingleMoveAnime(ANM_ATNLS, 0.0f, 0.0f, -1, 5.0f); - setActAnimeUpper(LKANM_BCK_HOOKSHOTWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f); - setTextureAnime(0, 0); - makeItemType(); - dComIfGp_setPlayerStatus0(0, daPyStts0_HOOKSHOT_AIM_e | daPyStts0_SHIP_RIDE_e); - setShipRidePos(0); - m34D4 = iVar1->shape_angle.y; - if (mpAttention->Lockon()) { - m3570 = 1; - } else { - m3570 = 0; - } } + + commonProcInit(daPyProc_SHIP_HOOKSHOT_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + ship->m034D = 2; + mEquipItem = dItem_HOOKSHOT_e; + m355C = 10; + setSingleMoveAnime(ANM_ATNLS, 0.0f, 0.0f, -1, 5.0f); + setActAnimeUpper(LKANM_BCK_HOOKSHOTWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f); + setTextureAnime(0, 0); + makeItemType(); + dComIfGp_setPlayerStatus0(0, daPyStts0_HOOKSHOT_AIM_e | daPyStts0_SHIP_RIDE_e); + setShipRidePos(0); + m34D4 = ship->shape_angle.y; + if (mpAttention->Lockon()) { + m3570 = 1; + } else { + m3570 = 0; + } + return true; } @@ -549,33 +540,33 @@ BOOL daPy_lk_c::procShipHookshot() { /* 80141F2C-80142084 .text procShipBow_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procShipBow_init() { - /* Nonmatching - regalloc */ - daShip_c* iVar1 = dComIfGp_getShipActor(); + daShip_c* ship = (daShip_c*)dComIfGp_getShipActor(); if (mCurProc == daPyProc_SHIP_BOW_e) { return false; - } else { - commonProcInit(daPyProc_SHIP_BOW_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - iVar1->m034D = 2; - if (mDemo.getDemoMode() == 0x44) { - mEquipItem = dItem_BOW_e; - } else { - mEquipItem = dComIfGp_getSelectItem(mReadyItemBtn); - } - setSingleMoveAnime(ANM_ATNRS, 0.0f, 0.0f, -1, 5.0f); - setBowModel(); - setBowReadyAnime(); - dComIfGp_setPlayerStatus0(0, daPyStts0_BOW_AIM_e | daPyStts0_SHIP_RIDE_e); - setShipRidePos(0); - m34D4 = iVar1->shape_angle.y; - m34DA = 0; - if ((mpAttention->Lockon()) && (mDemo.getDemoMode() != 0x44)) { - m3570 = 1; - } else { - m3570 = 0; - } } + + commonProcInit(daPyProc_SHIP_BOW_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + ship->m034D = 2; + if (mDemo.getDemoMode() == 0x44) { + mEquipItem = dItem_BOW_e; + } else { + mEquipItem = dComIfGp_getSelectItem(mReadyItemBtn); + } + setSingleMoveAnime(ANM_ATNRS, 0.0f, 0.0f, -1, 5.0f); + setBowModel(); + setBowReadyAnime(); + dComIfGp_setPlayerStatus0(0, daPyStts0_BOW_AIM_e | daPyStts0_SHIP_RIDE_e); + setShipRidePos(0); + m34D4 = ship->shape_angle.y; + m34DA = 0; + if (mpAttention->Lockon() && mDemo.getDemoMode() != 0x44) { + m3570 = 1; + } else { + m3570 = 0; + } + return true; } @@ -588,18 +579,18 @@ BOOL daPy_lk_c::procShipBow() { BOOL daPy_lk_c::procShipCannon_init() { if (mCurProc == daPyProc_SHIP_CANNON_e) { return false; - } else { - daShip_c* iVar1 = dComIfGp_getShipActor(); - commonProcInit(daPyProc_SHIP_CANNON_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - mVelocity = 0.0f; - iVar1->m034D = 9; - initShipBaseAnime(); - setShipRidePos(1); - dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); - dComIfGp_setPlayerStatus1(0, daPyStts1_UNK4_e); } + + daShip_c* iVar1 = dComIfGp_getShipActor(); + commonProcInit(daPyProc_SHIP_CANNON_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + mVelocity = 0.0f; + iVar1->m034D = 9; + initShipBaseAnime(); + setShipRidePos(1); + dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK4_e); return true; } @@ -607,13 +598,13 @@ BOOL daPy_lk_c::procShipCannon_init() { BOOL daPy_lk_c::procShipCannon() { if (changeShipEndProc()) { return true; - } else { - g_dComIfG_gameInfo.play.field_0x492d = 0x2c; - if ((dComIfGp_getDoStatus() == 0) && (dComIfGp_getShipActor()->speedF >= 3.0f)) { - dComIfGp_setDoStatus(19); - } - setShipRidePos(1); } + + g_dComIfG_gameInfo.play.field_0x492d = 0x2c; + if (dComIfGp_getDoStatus() == 0 && dComIfGp_getShipActor()->speedF >= 3.0f) { + dComIfGp_setDoStatus(19); + } + setShipRidePos(1); return true; } @@ -621,24 +612,24 @@ BOOL daPy_lk_c::procShipCannon() { BOOL daPy_lk_c::procShipCrane_init() { if (mCurProc == daPyProc_SHIP_CRANE_e) { return false; - } else { - daShip_c* iVar1 = dComIfGp_getShipActor(); - commonProcInit(daPyProc_SHIP_CRANE_e); - deleteEquipItem(TRUE); - gravity = 0.0f; - mVelocity = 0.0f; - iVar1->m034D = 10; - if ((s16)iVar1->mCurrentRopeSegmentIndex != 0) { - initShipCraneAnime(); - } else { - initShipBaseAnime(); - } - setShipRidePos(1); - dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); - dComIfGp_setPlayerStatus1(0, daPyStts1_UNK2_e); - m34D4 = 0; - return true; } + + daShip_c* iVar1 = dComIfGp_getShipActor(); + commonProcInit(daPyProc_SHIP_CRANE_e); + deleteEquipItem(TRUE); + gravity = 0.0f; + mVelocity = 0.0f; + iVar1->m034D = 10; + if ((s16)iVar1->mCurrentRopeSegmentIndex != 0) { + initShipCraneAnime(); + } else { + initShipBaseAnime(); + } + setShipRidePos(1); + dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e); + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK2_e); + m34D4 = 0; + return true; } /* 80142458-80142920 .text procShipCrane__9daPy_lk_cFv */ @@ -650,23 +641,23 @@ BOOL daPy_lk_c::procShipCrane() { BOOL daPy_lk_c::procShipGetOff_init() { if (mCurProc == daPyProc_SHIP_GET_OFF_e) { return false; - } else { - daShip_c* iVar1 = dComIfGp_getShipActor(); - commonProcInit(daPyProc_SHIP_GET_OFF_e); - deleteEquipItem(TRUE); - setSingleMoveAnime(ANM_DASH, daPy_HIO_move_c0::m.field_0x40, 0.0f, -1, 5.0f); - mVelocity = 8.0f; - gravity = 0.0f; - shape_angle.y = iVar1->shape_angle.y + -0x4000; - current.angle.y = shape_angle.y; - m3570 = 0; - m370C.x = current.pos.x + cM_ssin(shape_angle.y) * l_ship_ledge.x; - m370C.y = iVar1->current.pos.y + l_ship_ledge.y; - m370C.z = current.pos.z + cM_scos(shape_angle.y) * l_ship_ledge.x; - iVar1->m034D = 5; - mBodyAngle.y = 0; - m35A0 = iVar1->current.pos.y; } + + daShip_c* iVar1 = dComIfGp_getShipActor(); + commonProcInit(daPyProc_SHIP_GET_OFF_e); + deleteEquipItem(TRUE); + setSingleMoveAnime(ANM_DASH, daPy_HIO_move_c0::m.field_0x40, 0.0f, -1, 5.0f); + mVelocity = 8.0f; + gravity = 0.0f; + shape_angle.y = iVar1->shape_angle.y + -0x4000; + current.angle.y = shape_angle.y; + m3570 = 0; + m370C.x = current.pos.x + cM_ssin(shape_angle.y) * l_ship_ledge.x; + m370C.y = iVar1->current.pos.y + l_ship_ledge.y; + m370C.z = current.pos.z + cM_scos(shape_angle.y) * l_ship_ledge.x; + iVar1->m034D = 5; + mBodyAngle.y = 0; + m35A0 = iVar1->current.pos.y; return true; } @@ -691,11 +682,11 @@ BOOL daPy_lk_c::procShipRestart_init() { BOOL daPy_lk_c::procShipRestart() { if (dComIfGp_getShipActor() == NULL) { return checkNextMode(0); - } else { - if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { - procShipPaddle_init(); - } - setShipRidePos(1); - return true; } + + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + procShipPaddle_init(); + } + setShipRidePos(1); + return true; } diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index fbce82540..464df5b31 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -903,7 +903,7 @@ BOOL daPy_lk_c::procCutEB() { current.angle.y = shape_angle.y; setSpecialBattle(TRUE); if (doTrigger() && dComIfGp_getDoStatus() == 26) { - changeSpecialBattle(); + return changeSpecialBattle(); } if (frameCtrl.checkPass(daPy_HIO_cutEB_c0::m.field_0x24)) { diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index a0a9e5a43..5ec4f3f72 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -22,7 +22,6 @@ void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) { float fVar5; float fVar6; float fVar7; - float fVar8; s16 sVar1; daPy_ANM dVar5; daPy_ANM dVar6; @@ -73,107 +72,104 @@ void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) { } /* 801371E0-80137608 .text getWHideModePolygon__9daPy_lk_cFP4cXyzP4cXyzP4cXyzi */ -int daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) { - /* Nonmatching - floats, branching, regalloc */ - int iVar4; - float dVar11; - float dVar10; - float dVar9; - +cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) { if (param_0 != NULL) { mLinkLinChk.Set(param_0, param_1, this); if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { - return false; + return NULL; } } - cM3dGPla* pfVar2 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - s16 uVar3 = cM_atan2s(pfVar2->GetNP()->x, pfVar2->GetNP()->z); - if (std::fabsf(pfVar2->GetNP()->y) > 0.05f) { - return false; - } else if (iVar4 = dComIfG_Bgsp()->GetSpecialCode(mLinkLinChk), iVar4 == 3) { - return false; + + dBgS* bgs = dComIfG_Bgsp(); // Maybe fakematch? Fixes regalloc + + cM3dGPla* triPla = bgs->GetTriPla(mLinkLinChk); + s16 uVar3 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); + if (std::fabsf(triPla->GetNP()->y) > 0.05f) { + return NULL; + } + int iVar4 = bgs->GetSpecialCode(mLinkLinChk); + if (iVar4 == 3) { + return NULL; + } + + *param_2 = mLinkLinChk.GetCross(); + cXyz local_3c; + local_3c.x = param_2->x + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50; + local_3c.y = param_2->y; + local_3c.z = param_2->z + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50; + mGndChk.SetPos(&local_3c); + float f31 = bgs->GroundCross(&mGndChk); + if (C_BG_MIN_HEIGHT != f31 && (!(bgs->GetTriPla(mGndChk)->GetNP()->y >= 0.5f))) { + return NULL; + } + + if (param_3 == 4) { + f31 = 49.9f; } else { - param_2->x = mLinkLinChk.GetCrossP()->x; - param_2->y = mLinkLinChk.GetCrossP()->y; - param_2->z = mLinkLinChk.GetCrossP()->z; - cXyz local_3c; - local_3c.x = param_2->x + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50; - local_3c.y = param_2->y; - local_3c.z = param_2->z + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50; - mGndChk.SetPos(&local_3c); - float dVar8 = dComIfG_Bgsp()->GroundCross(&mGndChk); - float fVar1; - if ((C_BG_MIN_HEIGHT != dVar8) && (!(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y >= 0.5f))) { - return false; - } else { - if (param_3 == 4) { - fVar1 = 49.9f; - } else { - fVar1 = 99.8f; - } - dVar8 = fVar1; - s16 sVar7 = uVar3; - cXyz local_48; - cM3dGPla* pfVar5; - if (param_3 != 3) { - dVar10 = param_2->z; - dVar9 = pfVar2->GetNP()->x; - dVar11 = dVar10 - (dVar8 * dVar9); - local_3c.set( - param_2->x + (dVar9 * 1.25f) + (dVar8 * dVar10), param_2->y, (dVar11 + (pfVar2->GetNP()->z * 1.25f)) - ); - local_48.set(local_3c.x - (2.5f * dVar9) - (2.5f * dVar10), local_3c.y, local_3c.z); - mLinkLinChk.Set(&local_3c, &local_48, this); - if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { - return false; - } - pfVar5 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z); - if (sVar7 != (s16)iVar4) { - return false; - } - } - if (param_3 != 2) { - dVar10 = param_2->z; - dVar9 = pfVar2->GetNP()->x; - dVar11 = dVar10 + (dVar8 * dVar9); - local_3c.set( - param_2->x - (dVar9 * 1.25f) + (dVar8 * dVar10), param_2->y, (dVar11 + (pfVar2->GetNP()->z * 1.25f)) - ); - local_48.set(local_3c.x - (2.5f * dVar9) - (2.5f * dVar10), local_3c.y, local_3c.z); - mLinkLinChk.Set(&local_3c, &local_48, this); - if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { - return false; - } - pfVar5 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z); - if (sVar7 != (s16)iVar4) { - return false; - } - } - if (param_3 != 4) { - if (param_3 == 2) { - sVar7 = sVar7 - shape_angle.y; - param_2->x += daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->z; - param_2->z -= daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->x; - } else { - sVar7 = sVar7 - shape_angle.y; - param_2->x -= daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->z; - param_2->z += daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->x; - } - } - if (sVar7 > 0x2aaa) { - return false; - } else if (abs((int)(s16)((sVar7 + -0x8000) - (current.angle.y))) > 0x1555) { - return false; - } + f31 = 99.8f; + } + s16 sVar7 = uVar3; + cXyz local_48; + if (param_3 != 3) { + local_3c.set( + param_2->x + (f31 * triPla->GetNP()->z) + (triPla->GetNP()->x * 1.25f), + param_2->y, + param_2->z - (f31 * triPla->GetNP()->x) + (triPla->GetNP()->z * 1.25f) + ); + local_48.set(local_3c.x - (2.5f * triPla->GetNP()->x), local_3c.y, local_3c.z - (2.5f * triPla->GetNP()->z)); + mLinkLinChk.Set(&local_3c, &local_48, this); + if (!bgs->LineCross(&mLinkLinChk)) { + return NULL; + } + cM3dGPla* pfVar5; + pfVar5 = bgs->GetTriPla(mLinkLinChk); + iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z); + if (sVar7 != (s16)iVar4) { + return NULL; } } + + if (param_3 != 2) { + local_3c.set( + param_2->x - (f31 * triPla->GetNP()->z) + (triPla->GetNP()->x * 1.25f), + param_2->y, + param_2->z + (f31 * triPla->GetNP()->x) + (triPla->GetNP()->z * 1.25f) + ); + local_48.set(local_3c.x - (2.5f * triPla->GetNP()->x), local_3c.y, local_3c.z - (2.5f * triPla->GetNP()->z)); + mLinkLinChk.Set(&local_3c, &local_48, this); + if (!bgs->LineCross(&mLinkLinChk)) { + return NULL; + } + cM3dGPla* pfVar5; + pfVar5 = bgs->GetTriPla(mLinkLinChk); + iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z); + if (sVar7 != (s16)iVar4) { + return NULL; + } + } + + if (param_3 != 4) { + if (param_3 == 2) { + sVar7 = sVar7 - shape_angle.y; + param_2->x += daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->z; + param_2->z -= daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->x; + } else { + sVar7 = shape_angle.y - sVar7; + param_2->x -= daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->z; + param_2->z += daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->x; + } + if (sVar7 > 0x2aaa) { + return NULL; + } + } else if (abs((s16)((sVar7 + -0x8000) - (current.angle.y))) > 0x1555) { + return NULL; + } + + return triPla; } /* 80137608-80137640 .text getWHideBasePos__9daPy_lk_cFP4cXyz */ void daPy_lk_c::getWHideBasePos(cXyz* param_0) { - /* Nonmatching - floats */ f32 fVar3; if (checkNoResetFlg0(daPyFlg0_UNK10000)) { @@ -197,37 +193,31 @@ void daPy_lk_c::getWHideNextPos(cXyz* param_0, cXyz* param_1) { BOOL daPy_lk_c::checkWHideBackWall(cXyz* param_0) { if (param_0 == NULL) { return true; - } else { - cXyz local_18; - local_18.set( - param_0->x - 25.0f * cM_ssin(shape_angle.y), param_0->y, param_0->z - 25.0f * cM_scos(shape_angle.y) - ); - mLinkLinChk.Set(param_0, &local_18, (fopAc_ac_c*)this); - if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { - return true; - } - return false; } + + cXyz local_18; + local_18.set(param_0->x - 25.0f * cM_ssin(shape_angle.y), param_0->y, param_0->z - 25.0f * cM_scos(shape_angle.y)); + mLinkLinChk.Set(param_0, &local_18, (fopAc_ac_c*)this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + return true; + } + + return false; } /* 80137754-80137828 .text checkWHideFrontFloor__9daPy_lk_cFP4cXyz */ BOOL daPy_lk_c::checkWHideFrontFloor(cXyz* param_0) { - float dVar5; - float dVar6; - cXyz local_10; - - local_10.set(param_0->x + 40.0f * cM_ssin(shape_angle.y), param_0->y, param_0->z + 40.0f * cM_scos(shape_angle.y)); + cXyz local_10(param_0->x + 40.0f * cM_ssin(shape_angle.y), param_0->y, param_0->z + 40.0f * cM_scos(shape_angle.y)); mGndChk.SetPos(&local_10); - dVar6 = dComIfG_Bgsp()->GroundCross(&mGndChk); - if ((checkNoResetFlg0(daPyFlg0_UNK80000000)) && (dVar5 = current.pos.y, dVar5 > dVar6)) { - dVar6 = dVar5; + f32 ground_y = dComIfG_Bgsp()->GroundCross(&mGndChk); + if (checkNoResetFlg0(daPyFlg0_UNK80000000) && current.pos.y > ground_y) { + ground_y = current.pos.y; } - return std::fabsf(dVar6 - current.pos.y) < 5.0f; + return std::fabsf(ground_y - current.pos.y) < 5.0f; } /* 80137828-80137914 .text checkWHideModeChange__9daPy_lk_cFP4cXyz */ BOOL daPy_lk_c::checkWHideModeChange(cXyz* param_0) { - /* Nonmatching - floats */ if (!checkNoResetFlg0(daPyFlg0_UNK10000)) { if (!checkWHideFrontFloor(param_0)) { dComIfGp_setRStatus(0); @@ -237,11 +227,11 @@ BOOL daPy_lk_c::checkWHideModeChange(cXyz* param_0) { } else { cXyz local_18; local_18.set(param_0->x, current.pos.y + 125.0f, param_0->z); - if (((!spActionButton()) && (!mAcch.ChkRoofHit())) && (checkWHideBackWall(&local_18))) { + if (!spActionButton() && !mAcch.ChkRoofHit() && checkWHideBackWall(&local_18)) { return -1; } } - if ((checkModeFlg(ModeFlg_00000001)) && (mCurProc != daPyProc_WHIDE_PEEP_e)) { + if (checkModeFlg(ModeFlg_00000001) && mCurProc != daPyProc_WHIDE_PEEP_e) { setTextureAnime(mAnmDataTable[ANM_WALL].mTexAnmIdx, 0); } return false; @@ -249,9 +239,9 @@ BOOL daPy_lk_c::checkWHideModeChange(cXyz* param_0) { /* 80137914-80137A00 .text changeWHideEndProc__9daPy_lk_cFP4cXyz */ int daPy_lk_c::changeWHideEndProc(cXyz* param_0) { - /* Nonmatching - floats */ dComIfGp_setDoStatus(16); dComIfGp_setRStatus(15); + if (((!doButton() && (!checkNoResetFlg0(daPyFlg0_UNK10000) || !mAcch.ChkRoofHit())) || (m_anm_heap_upper[UPPER_MOVE2_e].mIdx != LKANM_BCK_REST && swordTrigger())) || !checkWHideBackWall(param_0)) @@ -260,17 +250,19 @@ int daPy_lk_c::changeWHideEndProc(cXyz* param_0) { current.angle.y = shape_angle.y; return checkNextMode(0); } + if (checkNoResetFlg0(daPyFlg0_UNK10000) && mAcch.ChkRoofHit()) { onModeFlg(ModeFlg_04000000); } else { offModeFlg(ModeFlg_04000000); } + return false; } /* 80137A00-80137BD8 .text procWHideReady_init__9daPy_lk_cFP8cM3dGPlaP4cXyz */ BOOL daPy_lk_c::procWHideReady_init(cM3dGPla* param_0, cXyz* param_1) { - s32 uVar1 = mModeFlg >> 4 & 1; + BOOL uVar1 = checkModeFlg(ModeFlg_WHIDE) ? TRUE : FALSE; offNoResetFlg0(daPyFlg0_UNK10000); commonProcInit(daPyProc_WHIDE_READY_e); mVelocity = 0.0f; @@ -298,7 +290,7 @@ BOOL daPy_lk_c::procWHideReady_init(cM3dGPla* param_0, cXyz* param_1) { setAnimeUnequip(); m3570 = 0; } - if ((uVar1) != 0) { + if (uVar1 != 0) { dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e); } return true; @@ -308,21 +300,19 @@ BOOL daPy_lk_c::procWHideReady_init(cM3dGPla* param_0, cXyz* param_1) { BOOL daPy_lk_c::procWHideReady() { if (changeWHideEndProc(NULL)) { return true; - } else { - if (m3570 == 0) { - if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { - setSingleMoveAnime(ANM_WALL, 0.0f, daPy_HIO_wall_c0::m.field_0x24, -1, daPy_HIO_wall_c0::m.field_0x34); - m3570 = 1; - } - return true; - } else { - cLib_addCalc(¤t.pos.x, m370C.x, 0.25f, 10.0f, 4.0f); - cLib_addCalc(¤t.pos.z, m370C.z, 0.25f, 10.0f, 4.0f); - if (!cLib_addCalcAngleS(&shape_angle.y, m34D4, 2, 0x2000, 0x800)) { - daPy_matAnm_c::offMabaFlg(); - procWHideWait_init(); - } + } + if (m3570 == 0) { + if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { + setSingleMoveAnime(ANM_WALL, 0.0f, daPy_HIO_wall_c0::m.field_0x24, -1, daPy_HIO_wall_c0::m.field_0x34); + m3570 = 1; } + return true; + } + cLib_addCalc(¤t.pos.x, m370C.x, 0.25f, 10.0f, 4.0f); + cLib_addCalc(¤t.pos.z, m370C.z, 0.25f, 10.0f, 4.0f); + if (!cLib_addCalcAngleS(&shape_angle.y, m34D4, 2, 0x2000, 0x800)) { + daPy_matAnm_c::offMabaFlg(); + procWHideWait_init(); } return true; } @@ -360,7 +350,6 @@ BOOL daPy_lk_c::procWHideWait_init() { /* 80137DF0-80138074 .text procWHideWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procWHideWait() { - /* Nonmatching - floats, branching */ cXyz cStack_24; cXyz cStack_3c; cXyz cStack_48; @@ -369,7 +358,10 @@ BOOL daPy_lk_c::procWHideWait() { getWHideBasePos(&cStack_3c); if (changeWHideEndProc(&cStack_3c)) { return true; - } else if (iVar1 = checkWHideModeChange(&cStack_3c), iVar1 == 1) { + } + + iVar1 = checkWHideModeChange(&cStack_3c); + if (iVar1 == 1) { setSingleMoveAnime( ANM_WALLDW, daPy_HIO_wall_c0::m.field_0x10, @@ -392,12 +384,12 @@ BOOL daPy_lk_c::procWHideWait() { offNoResetFlg0(daPyFlg0_UNK10000); mAcchCir[2].SetWallH(125.0f); } - cM3dGPla* triPla; - if (((mStickDistance > 0.05f) && (C_BG_MIN_HEIGHT != mAcch.GetGroundH())) && - (triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd), triPla->GetNP()->y >= 0.5f)) + + if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() && + dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) { iVar1 = getDirectionFromCurrentAngle(); - if (iVar1 == 3 || (iVar1 == 2)) { + if (iVar1 == 3 || iVar1 == 2) { if (iVar1 == 3) { current.angle.y = shape_angle.y + -0x4000; m34B8 = 3; @@ -408,20 +400,21 @@ BOOL daPy_lk_c::procWHideWait() { getWHideNextPos(&cStack_3c, &cStack_48); iVar1 = checkWHideBackWall(&cStack_48); - if ((iVar1 != 0) && (!checkNoResetFlg0(daPyFlg0_UNK10000) || (checkWHideFrontFloor(&cStack_48)))) { - procWHideMove_init(); - } else if (iVar1 == 0) { + if (iVar1 != 0 && (!checkNoResetFlg0(daPyFlg0_UNK10000) || checkWHideFrontFloor(&cStack_48))) { + return procWHideMove_init(); + } + if (iVar1 == 0) { cStack_48 += (cStack_48 - cStack_3c) * 0.25f; mLinkLinChk.Set(&cStack_3c, &cStack_48, this); if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { - procWHidePeep_init(); + return procWHidePeep_init(); } } } - } else { - current.angle.y = shape_angle.y; - return true; } + + current.angle.y = shape_angle.y; + return true; } /* 80138074-801380F0 .text procWHideMove_init__9daPy_lk_cFv */ @@ -441,93 +434,87 @@ BOOL daPy_lk_c::procWHideMove_init() { BOOL daPy_lk_c::procWHideMove() { if (changeSlideProc()) { return true; - } else { - cXyz acStack_24; - getWHideBasePos(&acStack_24); - s16 uVar1 = current.angle.y; - if (changeWHideEndProc(&acStack_24)) { - if ((!doButton()) && (mStickDistance > 0.05f)) { - uint uVar3 = (uint)uVar1; - current.pos.x += 50.0f * cM_ssin(uVar3); - current.pos.z += 50.0f * cM_scos(uVar3); - } - return true; - } else { - cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); - s16 sVar8 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); - f32 fVar2; - if (checkWHideModeChange(&acStack_24)) { - fVar2 = 0.0f; - } else { - if ((mStickDistance > 0.05f) && (C_BG_MIN_HEIGHT != mAcch.GetGroundH()) && - (triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd), triPla->GetNP()->y >= 0.5f)) - { - int iVar6 = getDirectionFromCurrentAngle(); - if (iVar6 == 1) { - current.angle.y -= -0x8000; - mVelocity *= 0.5f; - if (m34B8 == 2) { - m34B8 = 3; - } else { - m34B8 = 2; - } - setBlendWHideMoveAnime(2.0f); - } - if ((iVar6 == 0) || (iVar6 == 1)) { - fVar2 = daPy_HIO_move_c0::m.field_0x14; - fVar2 *= mStickDistance; - } else { - fVar2 = 0.0f; - } - } else { - fVar2 = 0.0f; - } - } - cXyz cStack_30; - setNormalSpeedF(fVar2, 0.5f, 2.0f, 0.25f); - getWHideNextPos(&acStack_24, &cStack_30); - if ((checkNoResetFlg0(daPyFlg0_UNK10000)) && (!checkWHideFrontFloor(&cStack_30))) { - mVelocity = 0.0f; - procWHideWait_init(); - } else { - cXyz cStack_3c; - triPla = (cM3dGPla*)getWHideModePolygon(&acStack_24, &cStack_30, &cStack_3c, m34B8); - if (triPla != NULL) { - procWHideReady_init(triPla, &cStack_3c); - } else { - if (std::fabsf(mVelocity) <= 0.001f) { - procWHideWait_init(); - } else { - if (((C_BG_MIN_HEIGHT == mAcch.GetGroundH()) || - (!(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f))) || - (!checkWHideBackWall(&cStack_30))) - { - mVelocity = 0.0f; - procWHideWait_init(); - } else { - cXyz cStack_48; - if ((sVar8 != shape_angle.y) && - (triPla = (cM3dGPla*)getWHideModePolygon(NULL, NULL, &cStack_48, m34B8), triPla != 0)) - { - if ((s16)(current.angle.y - shape_angle.y) > 0) { - current.angle.y = sVar8 + 0x4000; - } else { - current.angle.y = sVar8 - 0x4000; - } - shape_angle.y = sVar8; - current.pos.x += 8.0f * cM_ssin(current.angle.y); - current.pos.z += 8.0f * cM_scos(current.angle.y); - } - current.pos.x -= 0.8f * daPy_HIO_wall_c0::m.field_0x50 * cM_ssin(shape_angle.y); - current.pos.z -= 0.8f * daPy_HIO_wall_c0::m.field_0x50 * cM_scos(shape_angle.y); - setBlendWHideMoveAnime(-1.0f); - return true; - } - } - } - } - } } + + cXyz acStack_24; + getWHideBasePos(&acStack_24); + s16 uVar1 = current.angle.y; + if (changeWHideEndProc(&acStack_24)) { + if (!doButton() && mStickDistance > 0.05f) { + uint uVar3 = (uint)uVar1; + current.pos.x += 50.0f * cM_ssin(uVar3); + current.pos.z += 50.0f * cM_scos(uVar3); + } + return true; + } + + cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + s16 sVar8 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); + f32 fVar2; + if (checkWHideModeChange(&acStack_24)) { + fVar2 = 0.0f; + } else if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() && + dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) + { + int iVar6 = getDirectionFromCurrentAngle(); + if (iVar6 == 1) { + current.angle.y -= -0x8000; + mVelocity *= 0.5f; + if (m34B8 == 2) { + m34B8 = 3; + } else { + m34B8 = 2; + } + setBlendWHideMoveAnime(2.0f); + } + if (iVar6 == 0 || iVar6 == 1) { + fVar2 = daPy_HIO_move_c0::m.field_0x14; + fVar2 *= mStickDistance; + } else { + fVar2 = 0.0f; + } + } else { + fVar2 = 0.0f; + } + + cXyz cStack_30; + setNormalSpeedF(fVar2, 0.5f, 2.0f, 0.25f); + getWHideNextPos(&acStack_24, &cStack_30); + if (checkNoResetFlg0(daPyFlg0_UNK10000) && !checkWHideFrontFloor(&cStack_30)) { + mVelocity = 0.0f; + return procWHideWait_init(); + } + + cXyz cStack_3c; + triPla = getWHideModePolygon(&acStack_24, &cStack_30, &cStack_3c, m34B8); + if (triPla != NULL) { + return procWHideReady_init(triPla, &cStack_3c); + } + if (std::fabsf(mVelocity) <= 0.001f) { + return procWHideWait_init(); + } + if (mAcch.GetGroundH() == C_BG_MIN_HEIGHT || !(dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f) || + !checkWHideBackWall(&cStack_30)) + { + mVelocity = 0.0f; + return procWHideWait_init(); + } + + cXyz cStack_48; + if (sVar8 != shape_angle.y && getWHideModePolygon(NULL, NULL, &cStack_48, m34B8) != NULL) { + if ((s16)(current.angle.y - shape_angle.y) > 0) { + current.angle.y = sVar8 + 0x4000; + } else { + current.angle.y = sVar8 - 0x4000; + } + shape_angle.y = sVar8; + current.pos.x += 8.0f * cM_ssin(current.angle.y); + current.pos.z += 8.0f * cM_scos(current.angle.y); + } + current.pos.x -= 0.8f * daPy_HIO_wall_c0::m.field_0x50 * cM_ssin(shape_angle.y); + current.pos.z -= 0.8f * daPy_HIO_wall_c0::m.field_0x50 * cM_scos(shape_angle.y); + setBlendWHideMoveAnime(-1.0f); + return true; } /* 8013852C-801385EC .text procWHidePeep_init__9daPy_lk_cFv */ @@ -572,37 +559,40 @@ BOOL daPy_lk_c::procWHidePeep() { getWHideBasePos(&cStack_38); if (changeWHideEndProc(&cStack_38)) { return true; - } else { - f32 dVar3 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); - if (std::fabsf(dVar3) < 0.01f) { - if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < (mFrameCtrlUnder[UNDER_MOVE0_e].getStart() + 1)) { - return procWHideWait_init(); - } - } - if (std::fabsf(dVar3) < 0.01f) { - if (m34B8 == 2) { - dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40_e); - } else { - dComIfGp_setPlayerStatus0(0, daPyStts0_UNK20_e); - } - if (!checkNoResetFlg0(daPyFlg0_UNK10000)) { - dVar3 = daPy_HIO_wall_c0::m.field_0x1C; - } else { - dVar3 = daPy_HIO_wall_c0::m.field_0x20; - } - } - if (checkWHideModeChange(&cStack_38)) { - if (dVar3 > 0.0f) { - mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); - } - } else if (mStickDistance > 0.05f) { - int iVar1 = getDirectionFromCurrentAngle(); - if (((iVar1 != 0) && (dVar3 > 0.0f)) || (iVar1 == 0 && (dVar3 < 0.0f))) { - mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); - } - } else if (dVar3 > 0.0f) { - mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); + } + + f32 dVar3 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); + if (std::fabsf(dVar3) < 0.01f) { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < (mFrameCtrlUnder[UNDER_MOVE0_e].getStart() + 1)) { + return procWHideWait_init(); } } + + if (std::fabsf(dVar3) < 0.01f) { + if (m34B8 == 2) { + dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40_e); + } else { + dComIfGp_setPlayerStatus0(0, daPyStts0_UNK20_e); + } + if (!checkNoResetFlg0(daPyFlg0_UNK10000)) { + dVar3 = daPy_HIO_wall_c0::m.field_0x1C; + } else { + dVar3 = daPy_HIO_wall_c0::m.field_0x20; + } + } + + if (checkWHideModeChange(&cStack_38)) { + if (dVar3 > 0.0f) { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); + } + } else if (mStickDistance > 0.05f) { + int iVar1 = getDirectionFromCurrentAngle(); + if ((iVar1 != 0 && dVar3 > 0.0f) || (iVar1 == 0 && dVar3 < 0.0f)) { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); + } + } else if (dVar3 > 0.0f) { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3); + } + return true; }