diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 45a433b21..eb946b985 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -29,11 +29,28 @@ class daPy_demo_c { public: enum { DEMO_UNK1_e = 0x01, + DEMO_UNK4_e = 0x04, + DEMO_UNK6_e = 0x06, + DEMO_UNK8_e = 0x08, + DEMO_UNK9_e = 0x09, + DEMO_UNK10_e = 0x10, DEMO_UNK11_e = 0x11, + DEMO_UNK12_e = 0x12, DEMO_UNK14_e = 0x14, + DEMO_UNK17_e = 0x17, DEMO_UNK18_e = 0x18, + DEMO_UNK1B_e = 0x1B, DEMO_UNK1D_e = 0x1D, + DEMO_UNK1E_e = 0x1E, + DEMO_UNK1F_e = 0x1F, + DEMO_UNK22_e = 0x22, DEMO_UNK25_e = 0x25, + DEMO_UNK2A_e = 0x2A, + DEMO_UNK2F_e = 0x2F, + DEMO_UNK33_e = 0x33, + DEMO_UNK3D_e = 0x3D, + DEMO_UNK3E_e = 0x3E, + DEMO_UNK40_e = 0x40, DEMO_UNK44_e = 0x44, DEMO_UNK48_e = 0x48, DEMO_UNK4A_e = 0x4A, @@ -75,6 +92,7 @@ class daPy_py_c : public fopAc_ac_c { public: enum daPy_FLG0 { daPyFlg0_UNK1 = 0x00000001, + daPyFlg0_UNK2 = 0x00000002, daPyFlg0_UNK4 = 0x00000004, daPyFlg0_UNK8 = 0x00000008, daPyFlg0_DEKU_SP_RETURN_FLG = 0x00000010, @@ -92,6 +110,7 @@ public: daPyFlg0_NO_FALL_VOICE = 0x00040000, daPyFlg0_SCOPE_CANCEL = 0x00080000, daPyFlg0_PHOTO_BOX_CANCEL = 0x00080000, // Same as scope cancel + daPyFlg0_UNK100000 = 0x00100000, daPyFlg0_UNK200000 = 0x00200000, daPyFlg0_UNK400000 = 0x00400000, daPyFlg0_UNK800000 = 0x00800000, @@ -153,9 +172,11 @@ public: daPyRFlg0_GRAB_UP_START = 0x00008000, daPyRFlg0_ATTENTION_LOCK = 0x00010000, daPyRFlg0_HAMMER_QUAKE = 0x00020000, + daPyRFlg0_UNK40000 = 0x00040000, daPyRFlg0_UNK80000 = 0x00080000, daPyRFlg0_POISON_CURSE = 0x00100000, daPyRFlg0_GRAB_PUT_START = 0x00400000, + daPyRFlg0_UNK800000 = 0x00800000, daPyRFlg0_TACT_INPUT = 0x01000000, daPyRFlg0_FAIRY_USE = 0x02000000, daPyRFlg0_UNK4000000 = 0x04000000, diff --git a/include/d/actor/d_a_player_HIO.h b/include/d/actor/d_a_player_HIO.h index 968038d6a..203cfd394 100644 --- a/include/d/actor/d_a_player_HIO.h +++ b/include/d/actor/d_a_player_HIO.h @@ -599,7 +599,8 @@ public: class daPy_HIO_slip_c1 { public: - /* 0x00 */ f32 field_0x0; + /* 0x00 */ s16 field_0x0; + /* 0x02 */ s16 field_0x2; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xC; @@ -961,6 +962,7 @@ public: class daPy_HIO_guard_c1 { public: /* 0x00 */ s16 field_0x0; + /* 0x02 */ s16 field_0x2; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xC; @@ -1212,7 +1214,8 @@ public: class daPy_HIO_sideStep_c1 { public: - /* 0x00 */ s16 field_0x0; + /* 0x00 */ u8 field_0x0; + /* 0x01 */ u8 field_0x1; /* 0x02 */ s16 field_0x2; /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index f666983a6..f7ee1f330 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -310,12 +310,17 @@ public: daPy_footData_c(); public: - /* 0x000 */ u8 field_0x000[0x018 - 0x000]; + /* 0x000 */ u8 field_0x000[0x002 - 0x000]; // TODO: is this right? + /* 0x002 */ s16 field_0x002; + /* 0x004 */ u8 field_0x004[0x008 - 0x004]; + /* 0x008 */ s16 field_0x008; + /* 0x00A */ s16 field_0x00A; + /* 0x00C */ u8 field_0x00C[0x018 - 0x00C]; /* 0x018 */ cXyz field_0x018; /* 0x018 */ u8 field_0x024[0x034 - 0x024]; /* 0x034 */ dBgS_LinkGndChk field_0x034; - /* 0x088 */ u8 field_0x088[0x118 - 0x088]; + /* 0x088 */ Mtx field_0x088[3]; }; struct daPy_aura_c { @@ -924,7 +929,7 @@ public: J3DAnmTexPattern* loadTextureAnimeResource(u32, BOOL); BOOL checkBossBgm(); BOOL checkMabaAnimeBtp(int); - BOOL checkNormalFace(); + s32 checkNormalFace(); void setTextureAnime(u16, int); void setPriTextureAnime(u16, int); void resetPriTextureAnime(); @@ -995,7 +1000,7 @@ public: BOOL checkNewItemChange(u8); BOOL checkItemChangeFromButton(); void checkItemAction(); - void getSlidePolygon(); + cM3dGPla* getSlidePolygon(); BOOL checkJumpCutFromButton(); int orderTalk(); BOOL checkNextActionFromButton(); @@ -1878,7 +1883,7 @@ public: virtual BOOL checkTactWait() const { return mCurProc == daPyProc_TACT_WAIT_e; } virtual void setTactZev(fpc_ProcID, int, char*); virtual void onDekuSpReturnFlg(u8 i_point); - virtual BOOL checkComboCutTurn() const { return mCurProc == daPyProc_CUT_TURN_e && m3570 != 0; } + virtual BOOL checkComboCutTurn() const { return mCurProc == daPyProc_CUT_TURN_e && mProcVar0.m3570 != 0; } virtual f32 getBaseAnimeFrameRate() { return mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); } virtual f32 getBaseAnimeFrame() { return mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); } virtual fpc_ProcID getItemID() const { return mActorKeepEquip.getID(); } @@ -2137,7 +2142,13 @@ public: /* 0x3566 */ s16 m3566; /* 0x3568 */ s16 m3568; /* 0x356C */ int mCameraInfoIdx; - /* 0x3570 */ s32 m3570; + // `mProcVar`'s are variables that are context dependent for each `PROC` action. + // (The exact setup may need to be simplified later) + union { + s32 m3570; + daPy_ANM mDamageAnm; + int mBottleItem; + } /* 0x3570 */ mProcVar0; /* 0x3574 */ s32 m3574; /* 0x3578 */ int m3578; /* 0x357C */ int m357C; diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 19dfe0316..f0338812b 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -103,6 +103,7 @@ enum dCcG_At_Spl { /* 0x0 */ dCcG_At_Spl_UNK0 = 0, /* 0x1 */ dCcG_At_Spl_UNK1 = 1, /* 0x3 */ dCcG_At_Spl_UNK3 = 3, + /* 0x5 */ dCcG_At_Spl_UNK5 = 5, /* 0x6 */ dCcG_At_Spl_UNK6 = 6, /* 0x7 */ dCcG_At_Spl_UNK7 = 7, /* 0x8 */ dCcG_At_Spl_UNK8 = 8, @@ -113,6 +114,7 @@ enum dCcG_At_Spl { enum dCcG_Tg_Spl { /* 0x0 */ dCcG_Tg_Spl_UNK0 = 0, + /* 0x1 */ dCcG_Tg_Spl_UNK1 = 1, }; struct dCcD_SrcGAtTgCoCommonBase { diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 82f5bbe2d..ac7719223 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -45,6 +45,7 @@ enum daPy__PlayerStatus0 { daPyStts0_UNK100_e = 0x00000100, daPyStts0_UNK200_e = 0x00000200, daPyStts0_UNK400_e = 0x00000400, + daPyStts0_UNK800_e = 0x00000800, daPyStts0_BOW_AIM_e = 0x00001000, daPyStts0_UNK2000_e = 0x00002000, daPyStts0_HOOKSHOT_AIM_e = 0x00004000, @@ -76,7 +77,10 @@ enum daPy__PlayerStatus1 { daPyStts1_DEKU_LEAF_FLY_e = 0x00000020, daPyStts1_DEKU_LEAF_FAN_e = 0x00000040, daPyStts1_UNK80_e = 0x00000080, + daPyStts1_UNK100_e = 0x00000100, + daPyStts1_UNK200_e = 0x00000200, daPyStts1_SAIL_e = 0x00000400, + daPyStts1_UNK800_e = 0x00000800, daPyStts1_UNK1000_e = 0x00001000, daPyStts1_UNK2000_e = 0x00002000, daPyStts1_UNK4000_e = 0x00004000, @@ -84,6 +88,7 @@ enum daPy__PlayerStatus1 { daPyStts1_UNK10000_e = 0x00010000, daPyStts1_UNK20000_e = 0x00020000, daPyStts1_UNK40000_e = 0x00040000, + daPyStts1_UNK80000_e = 0x00080000, }; class __d_timer_info_c { @@ -497,6 +502,7 @@ public: void setAStatus(u8 status) { mCurrButtonBAction = status; } u8 getDoStatus() { return mCurrButtonAAction; } void setDoStatus(u8 status) { mCurrButtonAAction = status; } + u8 getRStatus() { return field_0x492d; } void setRStatus(u8 status) { field_0x492d = status; } u8 getRStatusForce() { return field_0x4930; } void setRStatusForce(u8 status) { field_0x4930 = status; } @@ -2600,6 +2606,10 @@ inline void dComIfGp_setDoStatus(u8 status) { g_dComIfG_gameInfo.play.setDoStatus(status); } +inline u8 dComIfGp_getRStatus() { + return g_dComIfG_gameInfo.play.getRStatus(); +} + inline void dComIfGp_setRStatus(u8 status) { g_dComIfG_gameInfo.play.setRStatus(status); } diff --git a/src/d/actor/d_a_player_HIO_data.inc b/src/d/actor/d_a_player_HIO_data.inc index 2c552b523..d326a6413 100644 --- a/src/d/actor/d_a_player_HIO_data.inc +++ b/src/d/actor/d_a_player_HIO_data.inc @@ -104,7 +104,7 @@ const daPy_HIO_backJump_c1 daPy_HIO_backJump_c0::m = { }; const daPy_HIO_slip_c1 daPy_HIO_slip_c0::m = { - 0.0f, 0.6f, 1.1f, 0.4f, 1.25f, 0.1875f, 0.6f, 1.7f, 2.5f, + 0, 0, 0.6f, 1.1f, 0.4f, 1.25f, 0.1875f, 0.6f, 1.7f, 2.5f, }; const daPy_HIO_slide_c1 daPy_HIO_slide_c0::m = { @@ -169,7 +169,7 @@ const daPy_HIO_hang_c1 daPy_HIO_hang_c0::m = { }; const daPy_HIO_guard_c1 daPy_HIO_guard_c0::m = { - 11, 0.85f, 0.0f, 2.0f, 7.5f, 0.02f, 0.5f, 1.125f, 0.3f, 12.5f, + 11, 0, 0.85f, 0.0f, 2.0f, 7.5f, 0.02f, 0.5f, 1.125f, 0.3f, 12.5f, }; const daPy_HIO_nockback_c1 daPy_HIO_nockback_c0::m = { @@ -213,7 +213,7 @@ const daPy_HIO_slowJump_c1 daPy_HIO_slowJump_c0::m = { }; const daPy_HIO_sideStep_c1 daPy_HIO_sideStep_c0::m = { - 256, 6200, 4, 5, 30.0f, 0.3f, 0.0f, 1.0f, -2.4f, 0.85f, 1.0f, 0.0f, 1.5f, 14.0f, 50.0f, + 1, 0, 6200, 4, 5, 30.0f, 0.3f, 0.0f, 1.0f, -2.4f, 0.85f, 1.0f, 0.0f, 1.5f, 14.0f, 50.0f, }; const daPy_HIO_grab_c1 daPy_HIO_grab_c0::m = { diff --git a/src/d/actor/d_a_player_battle.inc b/src/d/actor/d_a_player_battle.inc index 7432b72af..88f0a42ec 100644 --- a/src/d/actor/d_a_player_battle.inc +++ b/src/d/actor/d_a_player_battle.inc @@ -111,9 +111,9 @@ BOOL daPy_lk_c::procBtJump_init(fopEn_enemy_c* enemy) { if (daPy_HIO_b_jump_c0::m.field_0x18 <= 0.0f) { speed.y = m35A0; mVelocity = m35A4; - m3570 = 1; + mProcVar0.m3570 = 1; } else { - m3570 = 0; + mProcVar0.m3570 = 0; } voiceStart(6); offNoResetFlg0(daPyFlg0_NO_FALL_VOICE); @@ -123,17 +123,17 @@ BOOL daPy_lk_c::procBtJump_init(fopEn_enemy_c* enemy) { /* 8013E72C-8013E860 .text procBtJump__9daPy_lk_cFv */ BOOL daPy_lk_c::procBtJump() { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_b_jump_c0::m.field_0x18) { speed.y = m35A0; mVelocity = m35A4; - m3570 = 1; + mProcVar0.m3570 = 1; } } else { if (mAcch.ChkGroundHit()) { return changeLandProc(daPy_HIO_b_jump_c0::m.field_0xC); } - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { m34D0++; if (speed.y < -gravity) { return procBtJumpCut_init(&m370C); @@ -168,7 +168,7 @@ BOOL daPy_lk_c::procBtJumpCut_init(cXyz* param_0) { gravity = 0.0f; speed.y = 0.0f; m370C = *param_0; - m3570 = 0; + mProcVar0.m3570 = 0; dComIfGp_setPlayerStatus0(0, (daPyStts0_UNK2_e | daPyStts0_UNK400_e)); voiceStart(1); setBlurPosResource(LKANM__BTJUMPCUT_POS); @@ -199,13 +199,13 @@ BOOL daPy_lk_c::procBtJumpCut() { return changeLandProc(daPy_HIO_b_jump_c0::m.field_0xC); } - if (m3570 == 0 && mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (mProcVar0.m3570 == 0 && mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { gravity = daPy_HIO_b_jump_c0::m.field_0x3C; speed.y = daPy_HIO_b_jump_c0::m.field_0x34; mVelocity = daPy_HIO_b_jump_c0::m.field_0x38; - m3570 = 1; - } else if (m3570 == 1 && speed.y < -gravity && daPy_HIO_b_jump_c0::m.field_0x0 == 1) { - m3570 = 2; + mProcVar0.m3570 = 1; + } else if (mProcVar0.m3570 == 1 && speed.y < -gravity && daPy_HIO_b_jump_c0::m.field_0x0 == 1) { + mProcVar0.m3570 = 2; setSingleMoveAnime(ANM_JMPEDS, 0.0f, 0.0f, -1, daPy_HIO_b_jump_c0::m.field_0x40); offModeFlg(ModeFlg_00000400); setTextureAnime(0x37, 0); @@ -318,12 +318,12 @@ BOOL daPy_lk_c::procBtRollCut_init(cXyz* param_0) { s16 angle_y_delta = current.angle.y - shape_angle.y; if (angle_y_delta > 0) { dVar4 = ANM_MROLLLC; - m3570 = 1; + mProcVar0.m3570 = 1; m34EC = 1; setBlurPosResource(LKANM__BTROTATECUTL_POS); } else { dVar4 = ANM_MROLLRC; - m3570 = -1; + mProcVar0.m3570 = -1; m34EC = -1; setBlurPosResource(LKANM__BTROTATECUTR_POS); } @@ -364,7 +364,7 @@ BOOL daPy_lk_c::procBtRollCut() { m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); s16 sVar2 = cLib_targetAngleY(¤t.pos, &m370C); cLib_addCalcAngleS(&shape_angle.y, sVar2, 5, 0x5e8, 0x13c); - current.angle.y = shape_angle.y + m3570 * 0x4000; + current.angle.y = shape_angle.y + mProcVar0.m3570 * 0x4000; if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { if (m34D4 == 0) { m34D4 = 1; @@ -377,7 +377,7 @@ BOOL daPy_lk_c::procBtRollCut() { m34D4 = 2; } if (m34D4 > 1) { - int iVar3 = m3570; + int iVar3 = mProcVar0.m3570; if ((iVar3 > 0 && m34EC < 0) || (iVar3 < 0 && m34EC > 0)) { cLib_addCalcAngleS(&m34EC, -iVar3, 4, daPy_HIO_b_roll_c0::m.field_0xA, 0x200); } else { diff --git a/src/d/actor/d_a_player_bottle.inc b/src/d/actor/d_a_player_bottle.inc index 968161aae..e91fdcac7 100644 --- a/src/d/actor/d_a_player_bottle.inc +++ b/src/d/actor/d_a_player_bottle.inc @@ -114,8 +114,8 @@ BOOL daPy_lk_c::procBottleDrink_init(u16 param_0) { keepItemData(); setBottleModel(param_0); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK2000_e); - m3570 = 1; - dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3570, 0); + mProcVar0.m3570 = 1; + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar0.m3570, 0); initShipRideUseItem(iVar1, 2); return true; } @@ -230,12 +230,12 @@ BOOL daPy_lk_c::procBottleOpen_init(u16 param_0) { setBottleModel(param_0); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK4000_e); if (mEquipItem == dItem_FAIRY_BOTTLE_e) { - m3570 = 3; + mProcVar0.m3570 = 3; } else { - m3570 = 2; + mProcVar0.m3570 = 2; } if (mDemo.getDemoMode() != 0x3d) { - dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3570, 0); + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar0.m3570, 0); } initShipRideUseItem(iVar1, 2); m34D4 = 0; @@ -295,7 +295,7 @@ BOOL daPy_lk_c::procBottleSwing_init(int param_0) { ); m35A0 = daPy_HIO_bottle_c0::m.field_0x18; } - m3570 = 0; + mProcVar0.m3570 = 0; m3574 = 0; m34D4 = 0; voiceStart(7); @@ -306,15 +306,15 @@ BOOL daPy_lk_c::procBottleSwing_init(int param_0) { /* 80153064-80153338 .text procBottleSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleSwing() { setShipRidePosUseItem(); - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (eventInfo.checkCommandCatch()) { - m3570 = 1; + mProcVar0.m3570 = 1; u8 bVar5 = dComIfGp_event_getPreItemNo(); if (bVar5 == dItem_WATER_BOTTLE_e) { seStartOnlyReverb(JA_SE_LK_SCOOP_WATER); if (!strcmp(dComIfGp_getStartStageName(), "Omori")) { bVar5 = dItem_FOREST_WATER_e; - if (dComIfGs_checkBottle(89)) { + if (dComIfGs_checkBottle(dItem_FOREST_WATER_e)) { m3628 = fpcM_ERROR_PROCESS_ID_e; m3574 = 1; } else { @@ -350,7 +350,7 @@ BOOL daPy_lk_c::procBottleSwing() { endDemoMode(); } } else { - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { procBottleGet_init(); } else { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { @@ -361,7 +361,7 @@ BOOL daPy_lk_c::procBottleSwing() { } } } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > m35A0) { - if (m3570 == 0 && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + if (mProcVar0.m3570 == 0 && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { checkNextMode(1); } } @@ -381,8 +381,8 @@ BOOL daPy_lk_c::procBottleGet_init() { ); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK1000_e); m3628 = fpcM_ERROR_PROCESS_ID_e; - m3570 = 0; - dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3570, 0); + mProcVar0.m3570 = 0; + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar0.m3570, 0); if (mEquipItem == dItem_FOREST_WATER_e) { m32F0.makeEmitter(dPa_name::ID_COMMON_020D, mpEquipItemModel->getBaseTRMtx(), ¤t.pos, NULL); } diff --git a/src/d/actor/d_a_player_bow.inc b/src/d/actor/d_a_player_bow.inc index 313091f07..9bfab592b 100644 --- a/src/d/actor/d_a_player_bow.inc +++ b/src/d/actor/d_a_player_bow.inc @@ -17,7 +17,6 @@ /* 80149ECC-80149F88 .text bowJointCB__9daPy_lk_cFi */ BOOL daPy_lk_c::bowJointCB(int param_0) { - /* Nonmatching - floats */ if (checkBowReadyAnime()) { return true; } diff --git a/src/d/actor/d_a_player_climb.inc b/src/d/actor/d_a_player_climb.inc index 2384efd98..72866777c 100644 --- a/src/d/actor/d_a_player_climb.inc +++ b/src/d/actor/d_a_player_climb.inc @@ -209,7 +209,7 @@ void daPy_lk_c::checkBgClimbMove() { /* 80136588-801365F4 .text procClimbUpStart_init_sub__9daPy_lk_cFv */ void daPy_lk_c::procClimbUpStart_init_sub() { setSingleMoveAnime(ANM_LADDERUPST, daPy_HIO_ladder_c0::m.field_0x4, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x8); - m3570 = 1; + mProcVar0.m3570 = 1; m34C2 = 4; dComIfGp_setPlayerStatus1(0, daPyStts1_UNK10000_e); } @@ -229,7 +229,7 @@ BOOL daPy_lk_c::procClimbUpStart_init() { } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); - m3570 = 0; + mProcVar0.m3570 = 0; m3598 = 0.0f; } f32 fVar2 = cM_ssin(m352C); @@ -248,7 +248,7 @@ BOOL daPy_lk_c::procClimbUpStart() { return true; } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { procLadderUpStart_init_sub(); } @@ -292,7 +292,7 @@ BOOL daPy_lk_c::procClimbDownStart_init(s16 param_0) { current.pos.y = current.pos.y - 20.0f; current.pos.z = current.pos.z - 35.0f * cM_scos(param_0); m35E0 = 43.67353f; - m3570 = 1; + mProcVar0.m3570 = 1; return true; } @@ -331,14 +331,14 @@ BOOL daPy_lk_c::procClimbMoveUpDown_init(int param_0) { dVar3 *= -1.0f; } if (param_0 != 0) { - m3570 = 0; + mProcVar0.m3570 = 0; if (mDirection == DIR_FORWARD) { dVar2 = ANM_LADDERLTOR; } else { dVar2 = ANM_LADDERRTOL; } } else { - m3570 = 1; + mProcVar0.m3570 = 1; if (mDirection == DIR_FORWARD) { dVar2 = ANM_LADDERRTOL; } else { @@ -377,7 +377,7 @@ BOOL daPy_lk_c::procClimbMoveUpDown() { m34D0 = 0; setLadderFootSe(); } else { - changeClimbMoveProc(m3570); + changeClimbMoveProc(mProcVar0.m3570); } } else { f32 dVar2 = getLadderMoveAnmSpeed(); @@ -399,7 +399,7 @@ BOOL daPy_lk_c::procClimbMoveSide_init(int param_0) { commonProcInit(daPyProc_CLIMB_MOVE_SIDE_e); m34D4 = m34E8 - shape_angle.y; m34C2 = 7; - m3570 = param_0; + mProcVar0.m3570 = param_0; if (param_0 != 0) { dVar2 = ANM_FCLIMBSLIDELUP; if (mDirection == DIR_RIGHT) { @@ -446,7 +446,7 @@ BOOL daPy_lk_c::procClimbMoveSide() { m34D0 = 0; setLadderFootSe(); } else { - changeClimbMoveProc(m3570); + changeClimbMoveProc(mProcVar0.m3570); } } else { f32 dVar5 = getClimbMoveAnmSpeed(); diff --git a/src/d/actor/d_a_player_crawl.inc b/src/d/actor/d_a_player_crawl.inc index 798622dfb..23664b0bd 100644 --- a/src/d/actor/d_a_player_crawl.inc +++ b/src/d/actor/d_a_player_crawl.inc @@ -18,7 +18,7 @@ /* 801387A4-801387EC .text getCrawlMoveAnmSpeed__9daPy_lk_cFv */ f32 daPy_lk_c::getCrawlMoveAnmSpeed() { - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { f32 fVar1 = 1.5f; f32 fVar2 = 0.5f; return (mStickDistance * fVar1) + fVar2; @@ -29,7 +29,6 @@ f32 daPy_lk_c::getCrawlMoveAnmSpeed() { /* 801387EC-80138868 .text getCrawlMoveSpeed__9daPy_lk_cFv */ f32 daPy_lk_c::getCrawlMoveSpeed() { - /* Nonmatching - floats */ float fVar1; fVar1 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); @@ -45,21 +44,21 @@ void daPy_lk_c::setCrawlMoveDirectionArrow() { u8 direction = 0; camera_class* cam = dComIfGp_getCamera(mCameraInfoIdx); BOOL bVar = cLib_distanceAngleS(fopCamM_GetAngleY(cam), shape_angle.y) > 0x4000; - if (m3570 & 4) { + if (mProcVar0.m3570 & 4) { if (!bVar) { direction |= 1; } else { direction |= 4; } } - if (m3570 & 8) { + if (mProcVar0.m3570 & 8) { if (!bVar) { direction |= 4; } else { direction |= 1; } } - if (m3570 & 1) { + if (mProcVar0.m3570 & 1) { if (shape_angle.y == current.angle.y) { if (!bVar) { direction |= 8; @@ -93,7 +92,6 @@ void daPy_lk_c::changeCrawlAutoMoveProc(cXyz*) { /* 80138D50-80138F28 .text getCrawlMoveVec__9daPy_lk_cFP4cXyzP4cXyzP4cXyz */ int daPy_lk_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2) { - /* Nonmatching - floats */ mLinkLinChk.Set(param_0, param_1, this); if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); @@ -146,8 +144,32 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) { } /* 801390B8-801392BC .text checkCrawlSideWall__9daPy_lk_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */ -BOOL daPy_lk_c::checkCrawlSideWall(cXyz*, cXyz*, cXyz*, cXyz*, s16*, s16*) { - /* Nonmatching */ +BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6) { + cXyz local_78; + cXyz local_90; + + mLinkLinChk.Set(param_1, param_2, this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + *param_3 = mLinkLinChk.GetCross(); + cM3dGPla* pfVar1 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + *param_5 = cM_atan2s(pfVar1->GetNP()->x, pfVar1->GetNP()->z); + local_90 = *param_3 + (pfVar1->mNormal * 75.0f); + local_78 = (local_90 + *param_3) * 0.5f; + mLinkLinChk.Set(&local_78, &local_90, this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + *param_4 = mLinkLinChk.GetCross(); + pfVar1 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + *param_6 = cM_atan2s(pfVar1->GetNP()->x, pfVar1->GetNP()->z); + cXyz local_9c = (*param_3 - *param_4); + f32 temp_f31 = local_9c.abs2XZ(); + if (cLib_distanceAngleS(*param_5, *param_6) > 0x7F00 && temp_f31 < 5625.0f && + temp_f31 > 3600.0f) + { + return true; + } + } + } + return false; } /* 801392BC-80139424 .text setDoStatusCrawl__9daPy_lk_cFv */ @@ -201,7 +223,6 @@ BOOL daPy_lk_c::procCrawlStart() { /* 80139640-801396B0 .text checkNotCrawlStand__9daPy_lk_cFP4cXyz */ BOOL daPy_lk_c::checkNotCrawlStand(cXyz* param_0) { - /* Nonmatching - floats */ mRoofChk.SetPos(*param_0); return dComIfG_Bgsp()->RoofChk(&mRoofChk) - current.pos.y <= 125.0f; } @@ -245,7 +266,7 @@ BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) { onResetFlg0(daPyRFlg0_UNK1000); } m35A0 = -1.0f; - m3570 = var_r29 ^ 1; + mProcVar0.m3570 = var_r29 ^ 1; shape_angle.x = param_0; shape_angle.z = param_1; m35E4 = 1.0f; @@ -263,13 +284,11 @@ BOOL daPy_lk_c::procCrawlMove() { /* 8013A004-8013A0F0 .text procCrawlAutoMove_init__9daPy_lk_cFiP4cXyz */ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) { - /* Nonmatching - floats, extrwi - at beginning of function. */ - BOOL uVar1 = dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e); + BOOL uVar1 = dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e) ? TRUE : FALSE; commonProcInit(daPyProc_CRAWL_AUTO_MOVE_e); m370C = *param_1; m35E4 = 1.0f; - m3570 = param_0; + mProcVar0.m3570 = param_0; m34D0 = 0x14; m34D6 = 300; dComIfGp_setPlayerStatus0(0, daPyStts0_CRAWL_e); @@ -279,7 +298,7 @@ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) { for (int i = 0; i < 3; i++) { mAcchCir[i].SetWallR(9.99f); } - if (uVar1 != 0) { + if (uVar1) { dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000_e); } return true; @@ -288,6 +307,128 @@ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) { /* 8013A0F0-8013A630 .text procCrawlAutoMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrawlAutoMove() { /* Nonmatching */ + f32 fVar2; + f32 fVar3; + + dComIfGp_setRStatus(0xf); + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + onResetFlg0(daPyRFlg0_UNK1000); + s16 sVar4 = shape_angle.y; + s16 sVar5 = current.angle.y; + if (m34D0 > 0) { + if ((frameCtrl.checkPass(0.0f)) || (frameCtrl.checkPass(17.0f))) { + fVar3 = 0.0f; + if (frameCtrl.checkPass(0.0f)) { + fVar2 = 0.0f; + } else { + fVar2 = 17.0f; + } + frameCtrl.setRate(0.0f); + frameCtrl.setFrame(fVar2); + mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(fVar2); + mVelocity = fVar3; + } else { + if (std::fabsf(frameCtrl.mRate) < 0.01f) { + mVelocity = 0.0f; + m34D0--; + } + } + setCrawlMoveDirectionArrow(); + setDoStatusCrawl(); + shape_angle.y = sVar4; + current.angle.y = sVar5; + } else { + if (m34D0 == 0) { + setCrawlMoveDirectionArrow(); + if (mStickDistance > 0.05f) { + int iVar10 = getDirectionFromShapeAngle(); + f32 fVar2 = cM_ssin(shape_angle.y); + f32 fVar3 = cM_scos(shape_angle.y); + if ((iVar10 == 2) && ((mProcVar0.m3570 & 4))) { + m370C.x += 75.0f * fVar3; + m370C.z -= 75.0f * fVar2; + m34D4 = current.angle.y + 0x4000; + if (current.angle.y == shape_angle.y) { + m35A0 = 1.0f; + } else { + m35A0 = -1.0f; + } + m34D0 = -1; + } else if ((iVar10 == 3) && ((mProcVar0.m3570 & 8))) { + m370C.x -= 75.0f * fVar3; + m370C.z += 75.0f * fVar2; + m34D4 = current.angle.y + -0x4000; + if (current.angle.y == shape_angle.y) { + m35A0 = 1.0f; + } else { + m35A0 = -1.0f; + } + m34D0 = -1; + } else if (((mProcVar0.m3570 & 1)) && + (((shape_angle.y == current.angle.y && (iVar10 == 0)) || + ((shape_angle.y != current.angle.y && (iVar10 == 1)))))) + { + m370C.x += 75.0f * cM_ssin(current.angle.y); + m370C.z += 75.0f * cM_scos(current.angle.y); + m34D4 = shape_angle.y; + m35A0 = 0.0f; + m34D0 = -1; + } else if (((shape_angle.y == current.angle.y) && (iVar10 == 1)) || ((shape_angle.y != current.angle.y && (iVar10 == 0)))) { + current.angle.y += 0x8000; + m370C.x -= 75.0f * cM_ssin(current.angle.y); + m370C.z -= 75.0f * cM_scos(current.angle.y); + m34D4 = shape_angle.y; + m35A0 = 0.0f; + m34D0 = -1; + } + if (m34D0 == -1) { + g_dComIfG_gameInfo.play.mDirection = 0; + if (shape_angle.y == current.angle.y) { + frameCtrl.setRate(2.0f); + frameCtrl.setLoop(0); + } else { + frameCtrl.setRate(-2.0f); + frameCtrl.setLoop(frameCtrl.getEnd()); + } + initSeAnime(); + } + } else { + setDoStatusCrawl(); + shape_angle.y = sVar4; + current.angle.y = sVar5; + } + } else { + BOOL bVar1 = true; + if (m34D6 > 0) { + m34D6--; + } + if (std::fabsf(m35A0) > 0.5f) { + if (cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x480, 0x80)) { + bVar1 = 0; + } + if (m35A0 < -0.5f) { + current.angle.y = shape_angle.y + 0x8000; + } else { + current.angle.y = shape_angle.y; + } + cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 3.0f, 1.0f); + cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 3.0f, 1.0f); + } + cXyz local_28 = m370C - current.pos; + if (cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y) < 0x6000) { + bVar1 = false; + } + mVelocity = getCrawlMoveSpeed(); + if (mVelocity < 0.0f) { + mVelocity *=-1.0f; + current.angle.y = shape_angle.y + 0x8000; + } + if ((bVar1 != 0) || (m34D6 == 0)) { + procCrawlMove_init(shape_angle.x, shape_angle.z); + } + } + } + return true; } /* 8013A630-8013A7C4 .text procCrawlEnd_init__9daPy_lk_cFiss */ diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 0b0daee9f..aa209f638 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -74,7 +74,7 @@ void daPy_lk_c::setLetterModel() { /* 8012CFE8-8012D010 .text checkCaughtShapeHide__9daPy_lk_cFv */ BOOL daPy_lk_c::checkCaughtShapeHide() { - if (mCurProc == daPyProc_DEMO_CAUGHT_e && m3570 != 0) { + if (mCurProc == daPyProc_DEMO_CAUGHT_e && mProcVar0.m3570 != 0) { return TRUE; } return FALSE; @@ -165,7 +165,7 @@ BOOL daPy_lk_c::dProcTool_init() { m_pbCalc[PART_UNDER_e]->setRatio(1, 0.0f); mAnmRatioUnder[UNDER_MOVE1_e].setAnmTransform(NULL); mAnmRatioUpper[UNDER_MOVE1_e].setAnmTransform(NULL); - m3570 = 0; + mProcVar0.m3570 = 0; m3574 = 0; m34D4 = 0; m34D6 = 0; @@ -182,16 +182,16 @@ BOOL daPy_lk_c::dProcTalk_init() { if (mCurProc == daPyProc_DEMO_TALK_e) { return true; } - m3570 = 0; + mProcVar0.m3570 = 0; int iVar2 = checkShipRideUseItem(1); commonProcInit(daPyProc_DEMO_TALK_e); if (iVar2 == 0) { if ((mDemo.getDemoMode() != 8) && (mEquipItem != daPyItem_NONE_e)) { setAnimeUnequip(); } - m3570 = setTalkStartBack(); + mProcVar0.m3570 = setTalkStartBack(); } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { mVelocity = 0.0f; if (mDemo.getDemoMode() == 8) { setSingleMoveAnime(ANM_WAITS, daPy_HIO_move_c0::m.field_0x38, 0.0f, -1, daPy_HIO_turn_c0::m.field_0x18); @@ -219,7 +219,7 @@ BOOL daPy_lk_c::dProcTalk() { setShipRidePos(0); } setShapeAngleToTalkActor(); - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { cXyz local_28 = m370C - current.pos; int iVar2 = 0; @@ -236,7 +236,7 @@ BOOL daPy_lk_c::dProcTalk() { if ((0x4000 < cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y)) || (0x4000 < iVar2)) { current.pos.x = m370C.x; current.pos.z = m370C.z; - m3570 = 0; + mProcVar0.m3570 = 0; if (mDemo.getDemoMode() == 8) { setSingleMoveAnime(ANM_WAITS, daPy_HIO_move_c0::m.field_0x38, 0.0f, -1, daPy_HIO_turn_c0::m.field_0x18); } else { @@ -512,13 +512,13 @@ BOOL daPy_lk_c::dProcGetItem_init() { mVelocity = 0.0f; if (mEquipItem == daPyItem_NONE_e) { setSingleMoveAnime(ANM_ITEMGET, 1.0f, 0.0f, -1, 3.0f); - m3570 = 0; + mProcVar0.m3570 = 0; onModeFlg(ModeFlg_00000400); } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); m3598 = 0.0f; - m3570 = 1; + mProcVar0.m3570 = 1; } if (mDemo.getParam0() != 0) { int item_no; @@ -567,7 +567,7 @@ BOOL daPy_lk_c::dProcGetItem() { if ((m34D4 == -1) && (item != NULL)) { m34D4 = item->getItemNo() & 0xff; } - if ((m3570 == 0) && (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= 11.0f)) { + if ((mProcVar0.m3570 == 0) && (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= 11.0f)) { if ((m34D0 == 0) && (m34D4 != -1)) { m34D0 = 1; setGetItemSound(m34D4, m34DA); @@ -585,10 +585,10 @@ BOOL daPy_lk_c::dProcGetItem() { } } } - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { if ((m_anm_heap_upper[UPPER_MOVE2_e]).mIdx == 0xffff) { setSingleMoveAnime(ANM_ITEMGET, 1.0f, 0.0f, -1, 3.0f); - m3570 = 0; + mProcVar0.m3570 = 0; onModeFlg(ModeFlg_00000400); } if ((item != NULL) && (fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item))) { @@ -652,7 +652,7 @@ BOOL daPy_lk_c::dProcUnequip() { /* 8012ED74-8012EE0C .text dProcLavaDamage_init_sub__9daPy_lk_cFv */ void daPy_lk_c::dProcLavaDamage_init_sub() { speed.y = daPy_HIO_restart_c0::m.field_0x8; - m3570 = 0; + mProcVar0.m3570 = 0; voiceStart(4); seStartMapInfo(JA_SE_LK_FALL_MAGMA); gravity = daPy_HIO_autoJump_c0::m.field_0xC; @@ -675,14 +675,14 @@ BOOL daPy_lk_c::dProcLavaDamage_init() { } else { speed.y = 0.0f; gravity = 0.0f; - m3570 = 1; + mProcVar0.m3570 = 1; } return true; } /* 8012EEE4-8012EF78 .text dProcLavaDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcLavaDamage() { - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { if (dComIfGp_event_compulsory(this)) { dProcLavaDamage_init_sub(); } @@ -705,7 +705,7 @@ void daPy_lk_c::dProcFreezeDamage_init_sub(int param_0) { }; if (param_0 != 0) { - m3570 = 1; + mProcVar0.m3570 = 1; mDemo.setDemoType(5); daPy_py_c::changePlayer(this); } @@ -737,14 +737,14 @@ BOOL daPy_lk_c::dProcFreezeDamage_init() { if (dComIfGp_event_compulsory(this)) { dProcFreezeDamage_init_sub(1); } else { - m3570 = 0; + mProcVar0.m3570 = 0; } return true; } /* 8012F174-8012F210 .text dProcFreezeDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcFreezeDamage() { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (dComIfGp_event_compulsory(this)) { dProcFreezeDamage_init_sub(1); } @@ -759,7 +759,7 @@ BOOL daPy_lk_c::dProcFreezeDamage() { /* 8012F210-8012F288 .text dProcDead_init_sub__9daPy_lk_cFv */ void daPy_lk_c::dProcDead_init_sub() { - m3570 = 0; + mProcVar0.m3570 = 0; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK20000000_e); m3628 = fopMsgM_create(PROC_GAMEOVER); mDemo.setDemoType(5); @@ -817,7 +817,7 @@ BOOL daPy_lk_c::dProcDead_init() { dVar8 = daPy_HIO_restart_c0::m.field_0xC; } else { dVar8 = 0.0f; - m3570 = 1; + mProcVar0.m3570 = 1; } mVelocity = 0.0f; m34D4 = 0; @@ -865,7 +865,7 @@ BOOL daPy_lk_c::dProcDead() { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { setShipRidePos(1); } - if (m3570 != 0 && dComIfGp_event_compulsory(this)) { + if (mProcVar0.m3570 != 0 && dComIfGp_event_compulsory(this)) { dProcDead_init_sub(); if (m34D4 == 0) { dProcDead_init_sub2(); @@ -873,11 +873,11 @@ BOOL daPy_lk_c::dProcDead() { } if (m34D4 != 0 && changeSwimUpProc()) { m34D4 = 0; - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { dProcDead_init_sub2(); } } - if ((m3570 == 0) && (m34D4 == 0)) { + if ((mProcVar0.m3570 == 0) && (m34D4 == 0)) { if (checkModeFlg(ModeFlg_02000000)) { m35E4 = 0.1f * (frameCtrl.getFrame() - 120.0f); } @@ -1115,7 +1115,7 @@ BOOL daPy_lk_c::dProcSurprised_init() { commonProcInit(daPyProc_DEMO_SURPRISED_e); setSingleMoveAnime(ANM_SURPRISED, 1.0f, 0.0f, -1, 3.0f); mVelocity = 0.0f; - m3570 = 0; + mProcVar0.m3570 = 0; if (mDemo.getParam0() == 1) { voiceStart(28); } else if (mDemo.getParam0() == 2) { @@ -1135,12 +1135,12 @@ BOOL daPy_lk_c::dProcSurprised() { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { setShipRidePos(1); } - if ((m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + if ((mProcVar0.m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { dComIfGp_evmng_cutEnd(mStaffIdx); - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { uVar1 = m3530; uVar2 = m3532; - m3570 = 1; + mProcVar0.m3570 = 1; setSingleMoveAnime(ANM_SURPRISEDWAIT, 1.0f, 0.0f, -1, 3.0f); m3530 = uVar1; m3532 = uVar2; @@ -1160,7 +1160,7 @@ BOOL daPy_lk_c::dProcTurnBack_init() { if (mActorKeepGrab.getActor() != NULL) { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); - m3570 = 1; + mProcVar0.m3570 = 1; } else { setSingleMoveAnime( ANM_TURNBACK, @@ -1169,14 +1169,14 @@ BOOL daPy_lk_c::dProcTurnBack_init() { daPy_HIO_holdup_c0::m.field_0xA, daPy_HIO_holdup_c0::m.field_0x54 ); - m3570 = 0; + mProcVar0.m3570 = 0; } return true; } /* 80130278-801302CC .text dProcTurnBack__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcTurnBack() { - if ((m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + if ((mProcVar0.m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { dComIfGp_evmng_cutEnd(mStaffIdx); } return true; @@ -1246,10 +1246,10 @@ BOOL daPy_lk_c::dProcCaught_init() { commonProcInit(daPyProc_DEMO_CAUGHT_e); if (mDemo.getParam0() == 0) { dVar2 = ANM_MOGAKU1; - m3570 = 1; + mProcVar0.m3570 = 1; } else { dVar2 = ANM_FM_BATA; - m3570 = 0; + mProcVar0.m3570 = 0; } setSingleMoveAnime(dVar2, 1.0f, 0.0f, -1, 3.0f); speed.y = gravity = mVelocity = 0.0f; @@ -1367,7 +1367,7 @@ BOOL daPy_lk_c::dProcDoorOpen_init() { mAcch.OnLineCheckNone(); m3700 = cXyz::Zero; m34C2 = 3; - m3570 = 0; + mProcVar0.m3570 = 0; return true; } @@ -1378,10 +1378,10 @@ BOOL daPy_lk_c::dProcDoorOpen() { mAcch.OffLineCheckNone(); dComIfGp_evmng_cutEnd(mStaffIdx); setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); - m3570 = 1; + mProcVar0.m3570 = 1; m3598 = 0.0f; } else { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (m34C2 != 3) { m34C2 = 1; } @@ -1444,8 +1444,8 @@ BOOL daPy_lk_c::dProcPresent_init() { return true; } commonProcInit(daPyProc_DEMO_PRESENT_e); - m3570 = setTalkStartBack(); - if (m3570 == 0) { + mProcVar0.m3570 = setTalkStartBack(); + if (mProcVar0.m3570 == 0) { mVelocity = 0.0f; dProcPresent_init_sub(); } @@ -1458,12 +1458,12 @@ BOOL daPy_lk_c::dProcPresent_init() { /* 80130CA0-80130E88 .text dProcPresent__9daPy_lk_cFv */ BOOL daPy_lk_c::dProcPresent() { setShapeAngleToTalkActor(); - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { cXyz local_28 = m370C - current.pos; if ((0x4000 < cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y)) || mAcch.ChkWallHit()) { current.pos.x = m370C.x; current.pos.z = m370C.z; - m3570 = 0; + mProcVar0.m3570 = 0; dProcPresent_init_sub(); mVelocity = 0.0f; } @@ -1538,7 +1538,7 @@ BOOL daPy_lk_c::dProcStandItemPut_init() { commonProcInit(daPyProc_DEMO_STAND_ITEM_PUT_e); mVelocity = 0.0f; keepItemData(); - m3570 = 0; + mProcVar0.m3570 = 0; pdVar1 = (daPy_py_c*)fopAcM_getEventPartner(this); if (pdVar1 != NULL) { cXyz local_20 = pdVar1->current.pos - current.pos; @@ -1554,7 +1554,7 @@ BOOL daPy_lk_c::dProcStandItemPut_init() { m35C8 = 15.0f; angle = fopAcM_GetShapeAngle_p(this); } - m3570 = 1; + mProcVar0.m3570 = 1; setSingleMoveAnime(ANM_GRABWAIT, daPy_HIO_grab_c0::m.field_0x78, 0.0f, -1, -1.0f); pfVar2 = (fopAc_ac_c*)fopAcM_fastCreate(PROC_STANDITEM, dComIfGp_event_getPreItemNo(), ¤t.pos, -1, angle); if (pfVar2 != NULL) { @@ -1568,7 +1568,7 @@ BOOL daPy_lk_c::dProcStandItemPut_init() { BOOL daPy_lk_c::dProcStandItemPut() { fopAc_ac_c* pfVar2; - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { if (m_old_fdata->getOldFrameRate() < 0.01f) { setSingleMoveAnime( ANM_GRABUP, @@ -1577,7 +1577,7 @@ BOOL daPy_lk_c::dProcStandItemPut() { daPy_HIO_grab_c0::m.field_0xC, daPy_HIO_grab_c0::m.field_0x74 ); - m3570 = 2; + mProcVar0.m3570 = 2; voiceStart(7); } } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > -0.01f) { @@ -1622,7 +1622,7 @@ BOOL daPy_lk_c::dProcSlightSurprised_init() { commonProcInit(daPyProc_DEMO_SLIGHT_SURPRISED_e); setSingleMoveAnime(ANM_SURPRISEDB, 1.0f, 0.0f, -1, 5.0f); mVelocity = 0.0f; - m3570 = 0; + mProcVar0.m3570 = 0; if (mDemo.getParam0() == 1) { voiceStart(28); } else if (mDemo.getParam0() == 2) { @@ -1639,10 +1639,10 @@ BOOL daPy_lk_c::dProcSlightSurprised() { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { setShipRidePos(0); } - if ((m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + if ((mProcVar0.m3570 != 0) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { dComIfGp_evmng_cutEnd(mStaffIdx); - if (m3570 == 0) { - m3570 = 1; + if (mProcVar0.m3570 == 0) { + mProcVar0.m3570 = 1; setSingleMoveAnime(ANM_SURPRISEDWAIT, 1.0f, 0.0f, -1, 3.0f); if (mpAnmTexPatternData->getFrameMax() == 0) { m3530 = 0; @@ -1670,7 +1670,7 @@ BOOL daPy_lk_c::dProcSmile_init() { setSingleMoveAnime(ANM_WAITS, 1.0f, 0.0f, -1, 5.0f); setTextureAnime(143, 0); mVelocity = 0.0f; - m3570 = 0; + mProcVar0.m3570 = 0; initShipRideUseItem(iVar2, 1); return true; } @@ -1682,8 +1682,8 @@ BOOL daPy_lk_c::dProcSmile() { } m3530++; if (m3530 >= mpAnmTexPatternData->getFrameMax()) { - if (m3570 == 0) { - m3570 = 1; + if (mProcVar0.m3570 == 0) { + mProcVar0.m3570 = 1; } else { dComIfGp_evmng_cutEnd(mStaffIdx); } @@ -1699,11 +1699,11 @@ BOOL daPy_lk_c::dProcBossWarp_init() { commonProcInit(daPyProc_DEMO_BOSS_WARP_e); if (mDemo.getParam0() == 0) { setSingleMoveAnime(ANM_WARPOUTFIRST, 1.0f, 0.0f, -1, 3.0f); - m3570 = 1; + mProcVar0.m3570 = 1; deleteEquipItem(FALSE); } else { setSingleMoveAnime(ANM_WARPIN, 1.0f, 0.0f, -1, -1.0f); - m3570 = 0; + mProcVar0.m3570 = 0; } mVelocity = 0.0f; if (mDemo.getParam0() == 2) { @@ -1723,10 +1723,10 @@ BOOL daPy_lk_c::dProcBossWarp() { m353E = m353C = 0; } if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { dComIfGp_evmng_cutEnd(mStaffIdx); } else { - m3570 = 0; + mProcVar0.m3570 = 0; setSingleMoveAnime(ANM_WARPOUT, 1.0f, 0.0f, -1, 10.0f); } } @@ -1739,7 +1739,7 @@ BOOL daPy_lk_c::dProcAgbUse_init() { return true; } int iVar2 = checkShipRideUseItem(1); - m3570 = 0; + mProcVar0.m3570 = 0; commonProcInit(daPyProc_DEMO_AGB_USE_e); keepItemData(); setAnimeEquipItem(); @@ -1772,7 +1772,7 @@ BOOL daPy_lk_c::dProcLookTurn_init() { dVar2 = ANM_WINDR; } setSingleMoveAnime(dVar2, 1.0f, 0.0f, -1, 5.0f); - m3570 = 0; + mProcVar0.m3570 = 0; return true; } @@ -1783,9 +1783,9 @@ BOOL daPy_lk_c::dProcLookTurn() { shape_angle.y -= -0x8000; current.angle.y = shape_angle.y; setOldRootQuaternion(0, -0x8000, 0); - m3570 = 1; + mProcVar0.m3570 = 1; } - if ((m3570 != 0) && (m_old_fdata->getOldFrameRate() < 0.01f)) { + if ((mProcVar0.m3570 != 0) && (m_old_fdata->getOldFrameRate() < 0.01f)) { dComIfGp_evmng_cutEnd(mStaffIdx); } return true; @@ -1914,7 +1914,7 @@ BOOL daPy_lk_c::dProcGetDance_init() { current.angle.y = shape_angle.y; m3628 = fpcM_ERROR_PROCESS_ID_e; m34D0 = 0; - m3570 = mDemo.getParam0() + 0xd2; + mProcVar0.m3570 = mDemo.getParam0() + 0xd2; dComIfGs_onTact(mDemo.getParam0()); initShipRideUseItem(iVar2, 0); dKy_Itemgetcol_chg_on(); @@ -1952,7 +1952,7 @@ BOOL daPy_lk_c::dProcGetDance() { } } fopAcM_getItemEventPartner(this); - if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) && (checkEndMessage(m3570))) { + if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) && (checkEndMessage(mProcVar0.m3570))) { shape_angle.y += 0x8000; current.angle.y = shape_angle.y; m34DE = shape_angle.y; @@ -1985,7 +1985,7 @@ BOOL daPy_lk_c::dProcBottleOpenFairy_init() { keepItemData(); setBottleModel(dItem_FAIRY_BOTTLE_e); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK4000_e); - m3570 = 0; + mProcVar0.m3570 = 0; return true; } @@ -2139,9 +2139,9 @@ BOOL daPy_lk_c::dProcPowerUp_init() { m34D0 = 0; if (mDemo.getParam0() != 0) { if (mDemo.getParam0() != 0x100) { - m3570 = mDemo.getParam0(); + mProcVar0.m3570 = mDemo.getParam0(); } else { - m3570 = dComIfGp_event_getGtItm(); + mProcVar0.m3570 = dComIfGp_event_getGtItm(); } } m3574 = 0; @@ -2170,7 +2170,7 @@ BOOL daPy_lk_c::dProcPowerUp() { dComIfGp_setMesgBgmOn(); } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { if (m3624 == 0) { - m3624 = MSG_NO_FOR_ITEM(m3570); + m3624 = MSG_NO_FOR_ITEM(mProcVar0.m3570); } if (checkEndMessage(m3624)) { dComIfGp_evmng_cutEnd(mStaffIdx); @@ -2234,7 +2234,7 @@ BOOL daPy_lk_c::dProcLastCombo_init() { m34BE = 4; offNoResetFlg1(daPyFlg1_LAST_COMBO_WAIT); setBlurPosResource(LKANM__LASTCOMBO_POS); - m3570 = 1; + mProcVar0.m3570 = 1; m3574 = 0; seStartOnlyReverb(JA_SE_LK_V_TURN_INTO_GN); return true; diff --git a/src/d/actor/d_a_player_fan.inc b/src/d/actor/d_a_player_fan.inc index a9b234503..8755601ae 100644 --- a/src/d/actor/d_a_player_fan.inc +++ b/src/d/actor/d_a_player_fan.inc @@ -185,7 +185,7 @@ BOOL daPy_lk_c::procFanSwing_init() { daPy_HIO_fan_c0::m.field_0x14 ); setFanModel(); - m3570 = 0; + mProcVar0.m3570 = 0; voiceStart(7); setAtParam(AT_TYPE_UNK2000000, 1, dCcG_At_Spl_UNK0, dCcG_SE_UNK4, dCcG_AtHitMark_Nrm_e, 0, 50.0f); m35EC = daPy_HIO_fan_c0::m.field_0x10; @@ -235,7 +235,7 @@ BOOL daPy_lk_c::procFanSwing() { daPy_HIO_move_c0::m.field_0x1C, daPy_HIO_move_c0::m.field_0x20 ); - } else if (m3570 == 0) { + } else if (mProcVar0.m3570 == 0) { if (m34D0 != 0) { if (!checkHeavyStateOn() && (!mAcch.ChkGroundHit() || checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK80000000 | daPyFlg0_UNK20000000)) || @@ -294,7 +294,7 @@ BOOL daPy_lk_c::procFanSwing() { mDoMtx_ZXYrotM(mDoMtx_stack_c::now, local_80.x, local_80.y, local_80.z); JPASetRMtxTVecfromMtx(mDoMtx_stack_c::now, pJVar5->mGlobalRotation, (pJVar5->mGlobalTranslation)); pJVar5->setSpread(0.45f); - if (iVar4 == 4) { + if (iVar4 == dBgS_Attr_GRASS_e) { pJVar5->setRate(100.0f); } else { pJVar5->setRate(50.0f); @@ -307,7 +307,7 @@ BOOL daPy_lk_c::procFanSwing() { seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S); } voiceStart(1); - m3570 = 1; + mProcVar0.m3570 = 1; } else if (cLib_addCalc(&mVelocity, 0.0f, 0.5f, 1.5f, 0.3f) < 0.5f) { resetFootEffect(); } @@ -343,7 +343,7 @@ BOOL daPy_lk_c::procFanGlide_init(int param_0) { m34D4 = 0; m34D6 = 0; m34D8 = 0; - m3570 = 0; + mProcVar0.m3570 = 0; m34DA = 0; m3730 = cXyz::Zero; voiceStart(5); @@ -373,11 +373,11 @@ BOOL daPy_lk_c::procFanGlide() { JPASetRMtxTVecfromMtx(mpCLModel->getAnmMtx(0xf), emitter->mGlobalRotation, emitter->mGlobalTranslation); } } - if (frameCtrl.getRate() < 0.01f && m3570 == 0 && m32E4.mpEmitter == NULL) { + if (frameCtrl.getRate() < 0.01f && mProcVar0.m3570 == 0 && m32E4.mpEmitter == NULL) { m32E4.makeEmitter(dPa_name::ID_COMMON_004C, mpCLModel->getAnmMtx(0xf), ¤t.pos, NULL); } - if (frameCtrl.getFrame() > 2.0f || m3570 != 0) { + if (frameCtrl.getFrame() > 2.0f || mProcVar0.m3570 != 0) { if (mAcch.ChkGroundHit()) { if (checkHeavyStateOn()) { return changeLandProc(daPy_HIO_fan_c0::m.field_0x50); @@ -432,7 +432,7 @@ BOOL daPy_lk_c::procFanGlide() { gravity = daPy_HIO_fan_c0::m.field_0x3C; maxFallSpeed = daPy_HIO_fan_c0::m.field_0x38; } - if (checkSetItemTrigger(dItem_DEKU_LEAF_e, 1) && frameCtrl.getRate() < 0.01f && m3570 == 0) { + if (checkSetItemTrigger(dItem_DEKU_LEAF_e, 1) && frameCtrl.getRate() < 0.01f && mProcVar0.m3570 == 0) { setSingleMoveAnime( ANM_USEFANB, daPy_HIO_fan_c0::m.field_0x20, @@ -491,8 +491,8 @@ BOOL daPy_lk_c::procFanGlide() { f32 fVar1 = 1.0f; dVar13 = 20.0f; local_64 = 1.0f; - if (m3570 == 0) { - m3570 = 1; + if (mProcVar0.m3570 == 0) { + mProcVar0.m3570 = 1; setSingleMoveAnime(ANM_USEFANB2, fVar1, 0.0f, -1, daPy_HIO_fan_c0::m.field_0x30); mpParachuteFanMorf->setAnm( getItemAnimeResource(LKANM_BCK_FANB2A), @@ -513,8 +513,8 @@ BOOL daPy_lk_c::procFanGlide() { local_54.y = 0.5f * local_64 * local_60.y; local_54.z = local_64 * daPy_HIO_fan_c0::m.field_0x4C * local_60.z; dVar13 = 3.0f; - if (m3570 != 0) { - m3570 = 0; + if (mProcVar0.m3570 != 0) { + mProcVar0.m3570 = 0; setSingleMoveAnime( ANM_USEFANB, daPy_HIO_fan_c0::m.field_0x20, diff --git a/src/d/actor/d_a_player_food.inc b/src/d/actor/d_a_player_food.inc index 366613a90..152f0fe66 100644 --- a/src/d/actor/d_a_player_food.inc +++ b/src/d/actor/d_a_player_food.inc @@ -99,8 +99,8 @@ BOOL daPy_lk_c::procFoodThrow_init() { keepItemData(); if (mDemo.getDemoType() == 5) { - m3570 = 6; - dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3570, 0); + mProcVar0.m3570 = 6; + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar0.m3570, 0); } initShipRideUseItem(temp, 2); @@ -189,8 +189,8 @@ BOOL daPy_lk_c::procFoodSet_init() { setHyoiModel(); if (mDemo.getDemoType() == 5) { - m3570 = 1; - dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3570, 0); + mProcVar0.m3570 = 1; + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar0.m3570, 0); } initShipRideUseItem(temp, 2); diff --git a/src/d/actor/d_a_player_grab.inc b/src/d/actor/d_a_player_grab.inc index 26541fc1b..882dfd6ca 100644 --- a/src/d/actor/d_a_player_grab.inc +++ b/src/d/actor/d_a_player_grab.inc @@ -67,8 +67,6 @@ BOOL daPy_lk_c::checkGrabBarrelSearch(int param_0) { /* 8013A97C-8013AF84 .text setGrabItemPos__9daPy_lk_cFv */ void daPy_lk_c::setGrabItemPos() { - /* Nonmatching - floats, math around the - "getStart() - getFrame()" section. */ static f32 magtail_offset = 40.0f; float dVar10; cXyz cStack_58; @@ -138,10 +136,10 @@ void daPy_lk_c::setGrabItemPos() { pfVar8->current.pos.y += field_0x2b0; f32 fVar1; if ((m_anm_heap_under[UNDER_MOVE0_e]).mIdx == LKANM_BCK_GRABUP) { - dVar10 = - (1.0f - - (((uint)mFrameCtrlUnder[UNDER_MOVE0_e].getStart() - mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()) / - ((int)mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()))); + dVar10 = (1.0f - ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - + mFrameCtrlUnder[UNDER_MOVE0_e].getStart()) / + (mFrameCtrlUnder[UNDER_MOVE0_e].getEnd() - + mFrameCtrlUnder[UNDER_MOVE0_e].getStart()))); fVar1 = m35C8 * dVar10; pfVar8->current.pos.x += fVar1 * cM_ssin(shape_angle.y); pfVar8->current.pos.z += fVar1 * cM_scos(shape_angle.y); @@ -213,7 +211,6 @@ void daPy_lk_c::freeGrabItem() { /* 8013B05C-8013B458 .text checkNextActionGrab__9daPy_lk_cFv */ BOOL daPy_lk_c::checkNextActionGrab() { - /* Nonmatching - branching */ fopAc_ac_c* pfVar7 = mActorKeepGrab.getActor(); if (pfVar7 == NULL) { @@ -222,10 +219,10 @@ BOOL daPy_lk_c::checkNextActionGrab() { int iVar3 = checkGrabBarrelSearch(0); if (fopAcM_CheckStatus(pfVar7, fopAcStts_UNK10000_e) && !checkGrabSpecialHeavyState()) { - g_dComIfG_gameInfo.play.field_0x492d = 14; + dComIfGp_setRStatus(14); dComIfGp_setDoStatus(14); } else { - g_dComIfG_gameInfo.play.field_0x492d = 9; + dComIfGp_setRStatus(9); } if (mpAttnActorLockOn == NULL && mpAttnEntryA != NULL && iVar3 == 0 && mpAttnEntryA->mType == fopAc_Attn_TYPE_DOOR_e && fopAcM_CheckStatus(pfVar7, fopAcStts_UNK2000000_e)) @@ -260,21 +257,21 @@ BOOL daPy_lk_c::checkNextActionGrab() { } else if ((fopAcM_GetName(pfVar7) == PROC_BOMB) && (checkSetItemTrigger(dItem_BOMB_BAG_e, 0))) { procGrabThrow_init(0); } else if ((cancelTrigger()) && (checkSwordEquip()) && (iVar3 == 0)) { - if (g_dComIfG_gameInfo.play.field_0x492d == 14) { + if (dComIfGp_getRStatus() == 14) { procGrabThrow_init(1); } else { freeGrabItem(); setAnimeEquipSword(0); return true; } - } else if (((!doTrigger()) || (checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)))) || + } else if (((doTrigger()) && (!checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)))) && (dComIfGp_getDoStatus() == 11)) { fopAcM_orderDoorEvent(this, mpAttnActorA); return true; - } else if (((!doTrigger()) || (dComIfGp_getDoStatus() != 14)) && - (g_dComIfG_gameInfo.play.field_0x492d != 14 || - ((mItemTrigger & 0x1f) == 0 && (spActionTrigger())))) + } else if (((doTrigger()) && (dComIfGp_getDoStatus() == 14)) || + (dComIfGp_getRStatus() == 14 && + ((mItemTrigger & 0x1f) != 0 || (spActionTrigger())))) { if (cancelTrigger()) { procGrabThrow_init(1); @@ -328,11 +325,11 @@ BOOL daPy_lk_c::procGrabReady_init() { daPy_HIO_grab_c0::m.field_0x0, daPy_HIO_grab_c0::m.field_0x28 ); - m3570 = 1; + mProcVar0.m3570 = 1; } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); - m3570 = 0; + mProcVar0.m3570 = 0; } if (((dComIfGs_getSelectEquip(2) == dItem_POWER_BRACELETS_e) || (!fopAcM_CheckStatus(mpAttnActorA, fopAcStts_UNK10000_e))) && @@ -363,9 +360,9 @@ BOOL daPy_lk_c::procGrabReady() { if ((pfVar4 == NULL) && (mActorKeepRope.getActor() == NULL)) { return checkNextMode(0); } else { - if ((m3570 == 2) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + if ((mProcVar0.m3570 == 2) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { procGrabUp_init(); - } else if ((m3570 == 1) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + } else if ((mProcVar0.m3570 == 1) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { if (pfVar4 != NULL) { if (fopAcM_GetName(pfVar4) == PROC_BOKO) { mEquipItem = daPyItem_BOKO_e; @@ -387,7 +384,7 @@ BOOL daPy_lk_c::procGrabReady() { daPy_HIO_grab_c0::m.field_0x10, daPy_HIO_grab_c0::m.field_0x44 ); - m3570 = 2; + mProcVar0.m3570 = 2; } else { procGrabUp_init(); } @@ -396,7 +393,7 @@ BOOL daPy_lk_c::procGrabReady() { } else { checkNextMode(0); } - } else if ((m3570 == 0) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff)) { + } else if ((mProcVar0.m3570 == 0) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff)) { setSingleMoveAnime( ANM_GRABP, daPy_HIO_grab_c0::m.field_0x20, @@ -404,7 +401,7 @@ BOOL daPy_lk_c::procGrabReady() { daPy_HIO_grab_c0::m.field_0x0, daPy_HIO_grab_c0::m.field_0x28 ); - m3570 = 1; + mProcVar0.m3570 = 1; } return true; } @@ -412,7 +409,6 @@ BOOL daPy_lk_c::procGrabReady() { /* 8013B8A0-8013BA50 .text procGrabUp_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabUp_init() { - /* Nonmatching - floats */ commonProcInit(daPyProc_GRAB_UP_e); fopAc_ac_c* pfVar5 = mActorKeepGrab.getActor(); s16 sVar1; @@ -492,7 +488,7 @@ BOOL daPy_lk_c::procGrabMiss_init() { daPy_HIO_grab_c0::m.field_0x4, daPy_HIO_grab_c0::m.field_0x44 ); - m3570 = 0; + mProcVar0.m3570 = 0; m34D0 = daPy_HIO_grab_c0::m.field_0x6; dComIfGs_onEventBit(0x4020); return true; @@ -500,11 +496,10 @@ BOOL daPy_lk_c::procGrabMiss_init() { /* 8013BC40-8013BD30 .text procGrabMiss__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabMiss() { - /* Nonmatching - floats */ if (mActorKeepRope.getActor() == NULL) { checkNextMode(0); } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { if ((int)m34D0 > 0) { m34D0--; @@ -516,7 +511,7 @@ BOOL daPy_lk_c::procGrabMiss() { daPy_HIO_grab_c0::m.field_0x8, daPy_HIO_grab_c0::m.field_0x54 ); - m3570 = 1; + mProcVar0.m3570 = 1; freeGrabItem(); } } @@ -557,7 +552,7 @@ BOOL daPy_lk_c::procGrabThrow_init(int param_0) { } m35A0 = mVelocity; dComIfGp_clearPlayerStatus1(0, daPyStts1_UNK40000_e); - m3570 = param_0; + mProcVar0.m3570 = param_0; return true; } } @@ -599,15 +594,15 @@ BOOL daPy_lk_c::procGrabThrow() { } } if (frameCtrl.getRate() < 0.01f) { - if (m3570 != 0) { - m3570 = 0; + if (mProcVar0.m3570 != 0) { + mProcVar0.m3570 = 0; setAnimeEquipSword(0); } checkNextMode(0); } else { if (frameCtrl.getFrame() > daPy_HIO_grab_c0::m.field_0x60) { - if (m3570 != 0) { - m3570 = 0; + if (mProcVar0.m3570 != 0) { + mProcVar0.m3570 = 0; setAnimeEquipSword(0); } checkNextMode(1); @@ -623,10 +618,10 @@ BOOL daPy_lk_c::procGrabPut_init() { } else { commonProcInit(daPyProc_GRAB_PUT_e); if (field_0x2b0 < 0.0f) { - m3570 = 1; + mProcVar0.m3570 = 1; setSingleMoveAnime(ANM_GRABWAIT, daPy_HIO_grab_c0::m.field_0x78, 0.0f, -1, daPy_HIO_grab_c0::m.field_0x7C); } else { - m3570 = 0; + mProcVar0.m3570 = 0; setSingleMoveAnime( ANM_GRABUP, daPy_HIO_grab_c0::m.field_0x68, @@ -649,7 +644,6 @@ BOOL daPy_lk_c::procGrabPut_init() { /* 8013C124-8013C504 .text procGrabPut__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabPut() { - /* Nonmatching - floats */ fopAc_ac_c* pfVar4 = mActorKeepGrab.getActor(); if (pfVar4 == NULL) { @@ -660,9 +654,9 @@ BOOL daPy_lk_c::procGrabPut() { checkNextMode(0); } } else { - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { if (!(field_0x2b0 < 0.0f)) { - m3570 = 0; + mProcVar0.m3570 = 0; setSingleMoveAnime( ANM_GRABUP, daPy_HIO_grab_c0::m.field_0x68, @@ -728,7 +722,6 @@ BOOL daPy_lk_c::procGrabPut() { /* 8013C504-8013C678 .text procGrabWait_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabWait_init() { - /* Nonmatching - floats */ if (mCurProc == daPyProc_GRAB_WAIT_e) { return false; } else { @@ -749,9 +742,9 @@ BOOL daPy_lk_c::procGrabWait_init() { mVelocity = 0.0f; m35A0 = 0.0f; if (m35D8 <= -29.0f) { - m3570 = 1; + mProcVar0.m3570 = 1; } else { - m3570 = 0; + mProcVar0.m3570 = 0; } return true; } @@ -759,7 +752,6 @@ BOOL daPy_lk_c::procGrabWait_init() { /* 8013C678-8013C914 .text procGrabWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procGrabWait() { - /* Nonmatching - floats, branching */ if (mActorKeepGrab.getActor() == NULL) { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); checkNextMode(0); @@ -770,8 +762,8 @@ BOOL daPy_lk_c::procGrabWait() { setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); } if (m35D8 <= -29.0f) { - if (((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > 0.0f) && (m3570 == 0)) && - (m3570 = 1, m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_GRABWAIT)) + if (((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > 0.0f) && (mProcVar0.m3570 == 0)) && + (mProcVar0.m3570 = 1, m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_GRABWAIT)) { seStartMapInfo(JA_SE_LK_BARREL_PUT_ON); } @@ -783,9 +775,7 @@ BOOL daPy_lk_c::procGrabWait() { if (checkGrabAnime()) { m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); } - } else { - if (shape_angle.y != m34DE) { - if (!mpAttention->Lockon()) { + } else if ((shape_angle.y != m34DE) && (!mpAttention->Lockon())) { float fVar2; if (checkNoResetFlg1(daPyFlg1_UNK800000)) { fVar2 = -1.0f; @@ -796,8 +786,7 @@ BOOL daPy_lk_c::procGrabWait() { m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); m35A0 = 0.0049999999f * (short)(shape_angle.y - m34DE); onNoResetFlg1(daPyFlg1_UNK800000); - } - } else if (checkNoResetFlg1(daPyFlg1_UNK800000)) { + } else if (checkNoResetFlg1(daPyFlg1_UNK800000)) { if (checkGrabSpecialHeavyState()) { setSingleMoveAnime( ANM_GRABWAITB, daPy_HIO_grab_c0::m.field_0x90, 0.0f, -1, daPy_HIO_grab_c0::m.field_0x7C @@ -811,7 +800,6 @@ BOOL daPy_lk_c::procGrabWait() { m35A0 = 0.0f; offNoResetFlg1(daPyFlg1_UNK800000); } - } return true; } } diff --git a/src/d/actor/d_a_player_hammer.inc b/src/d/actor/d_a_player_hammer.inc index 062c12c7a..c822c6bab 100644 --- a/src/d/actor/d_a_player_hammer.inc +++ b/src/d/actor/d_a_player_hammer.inc @@ -42,7 +42,6 @@ void daPy_lk_c::setHammerWaterSplash() { /* 80150B60-80150C40 .text procHammerSideSwing_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procHammerSideSwing_init() { - /* Nonmatching - floats */ commonProcInit(daPyProc_HAMMER_SIDE_SWING_e); setSingleMoveAnime( ANM_HAMSWINGA, @@ -115,7 +114,6 @@ BOOL daPy_lk_c::procHammerSideSwing() { /* 80150DDC-80150F08 .text procHammerFrontSwingReady_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procHammerFrontSwingReady_init() { - /* Nonmatching - floats */ commonProcInit(daPyProc_HAMMER_FRONT_SWING_READY_e); setSingleMoveAnime( ANM_HAMSWINGBPRE, diff --git a/src/d/actor/d_a_player_hang.inc b/src/d/actor/d_a_player_hang.inc index 88cbb88a0..7a630e51d 100644 --- a/src/d/actor/d_a_player_hang.inc +++ b/src/d/actor/d_a_player_hang.inc @@ -201,7 +201,7 @@ BOOL daPy_lk_c::procHangStart_init() { } } commonProcInit(daPyProc_HANG_START_e); - m3570 = sVar3; + mProcVar0.m3570 = sVar3; setSingleMoveAnime( ANM_VJMPCHA, daPy_HIO_wallCatch_c0::m.field_0x44, @@ -227,9 +227,9 @@ BOOL daPy_lk_c::procHangStart() { if (((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_wallCatch_c0::m.field_0x50)) && - (mStickDistance > 0.05f || m3570 != 0)) + (mStickDistance > 0.05f || mProcVar0.m3570 != 0)) { - if (getDirectionFromShapeAngle() == DIR_FORWARD || m3570 != 0) { + if (getDirectionFromShapeAngle() == DIR_FORWARD || mProcVar0.m3570 != 0) { procHangClimb_init(daPy_HIO_wallCatch_c0::m.field_0x2C); } } else { @@ -366,7 +366,7 @@ BOOL daPy_lk_c::procHangUp_init(int param_0) { daPy_HIO_hang_c0::m.field_0x20 ); dComIfGp_setPlayerStatus0(0, daPyStts0_UNK100_e); - m3570 = param_0; + mProcVar0.m3570 = param_0; mVelocity = 0.0f; return true; } @@ -384,10 +384,10 @@ BOOL daPy_lk_c::procHangUp() { if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_hang_c0::m.field_0x1C)) { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { procHangClimb_init(daPy_HIO_wallCatch_c0::m.field_0x2C); - } else if (changeHangMoveProc(m3570)) { - procHangMove_init(m3570); + } else if (changeHangMoveProc(mProcVar0.m3570)) { + procHangMove_init(mProcVar0.m3570); } else { procHangWait_init(); } diff --git a/src/d/actor/d_a_player_ladder.inc b/src/d/actor/d_a_player_ladder.inc index 6d986f5f4..29b263692 100644 --- a/src/d/actor/d_a_player_ladder.inc +++ b/src/d/actor/d_a_player_ladder.inc @@ -94,7 +94,7 @@ int daPy_lk_c::setMoveBGLadderCorrect() { /* 801333A8-80133414 .text procLadderUpStart_init_sub__9daPy_lk_cFv */ void daPy_lk_c::procLadderUpStart_init_sub() { setSingleMoveAnime(ANM_LADDERUPST, daPy_HIO_ladder_c0::m.field_0x4, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x8); - m3570 = 1; + mProcVar0.m3570 = 1; m34C2 = 4; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e); } @@ -114,7 +114,7 @@ BOOL daPy_lk_c::procLadderUpStart_init() { } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); - m3570 = 0; + mProcVar0.m3570 = 0; m3598 = 0.0f; } f32 fVar1 = cM_ssin(m352C); @@ -137,7 +137,7 @@ BOOL daPy_lk_c::procLadderUpStart() { return true; } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { procLadderUpStart_init_sub(); } @@ -207,7 +207,7 @@ BOOL daPy_lk_c::procLadderUpEnd() { /* 801337B4-8013384C .text procLadderDownStart_init_sub__9daPy_lk_cFv */ void daPy_lk_c::procLadderDownStart_init_sub() { setSingleMoveAnime(ANM_LADDERDWST, daPy_HIO_ladder_c0::m.field_0x14, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x18); - m3570 = 1; + mProcVar0.m3570 = 1; m34C2 = 4; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e); setOldRootQuaternion(0, -0x8000, 0); @@ -232,7 +232,7 @@ BOOL daPy_lk_c::procLadderDownStart_init() { } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); - m3570 = 0; + mProcVar0.m3570 = 0; m3598 = 0.0f; } f32 fVar1 = cM_ssin(m352C); @@ -252,7 +252,7 @@ BOOL daPy_lk_c::procLadderDownStart() { return true; } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { procLadderDownStart_init_sub(); } @@ -328,9 +328,9 @@ BOOL daPy_lk_c::procLadderMove_init(int param_0, int direction, cXyz* param_2) { daPy_ANM anm; if (param_0 != 0) { if (uVar3 != 0) { - m3570 = 1; + mProcVar0.m3570 = 1; } else { - m3570 = 0; + mProcVar0.m3570 = 0; m370C.x = m370C.x - 2.0f * cM_scos(shape_angle.y); m370C.z = m370C.z - -2.0f * cM_ssin(shape_angle.y); } @@ -340,7 +340,7 @@ BOOL daPy_lk_c::procLadderMove_init(int param_0, int direction, cXyz* param_2) { anm = ANM_LADDERRTOL; } } else { - m3570 = 1; + mProcVar0.m3570 = 1; if (dVar4 >= 0.0f) { anm = ANM_LADDERRTOL; } else { @@ -383,7 +383,7 @@ BOOL daPy_lk_c::procLadderMove() { m34D0--; setLadderFootSe(); } else { - changeLadderMoveProc(m3570); + changeLadderMoveProc(mProcVar0.m3570); } } else { f32 dVar2 = getLadderMoveAnmSpeed(); diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 77f444745..5858d2de9 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -9,6 +9,7 @@ */ #include "d/actor/d_a_player_main.h" +#include "d/actor/d_a_obj_movebox.h" #include "d/actor/d_a_player_HIO.h" #include "d/d_com_inf_game.h" #include "d/d_com_lib_game.h" @@ -20,6 +21,7 @@ #include "d/d_item_data.h" #include "d/d_item.h" #include "m_Do/m_Do_audio.h" +#include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_mtx.h" #include "m_Do/m_Do_lib.h" #include "d/d_material.h" @@ -176,9 +178,9 @@ csXyz l_debug_shape_angle; GXColor l_freeze_fade_color = {0xFF, 0xFF, 0xFF, 0xFF}; +u8 daPy_matAnm_c::m_maba_timer; u8 daPy_matAnm_c::m_maba_flg; u8 daPy_matAnm_c::m_eye_move_flg; -u8 daPy_matAnm_c::m_maba_timer; u8 daPy_matAnm_c::m_morf_frame; #include "d/actor/d_a_player_particle.inc" @@ -391,8 +393,35 @@ static BOOL daPy_jointBeforeCallback(u32 userArea, u16 param_1, J3DTransformInfo } /* 80103AAC-80103C1C .text jointAfterCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */ -BOOL daPy_lk_c::jointAfterCB(int, J3DTransformInfo*, Quaternion*) { - /* Nonmatching */ +BOOL daPy_lk_c::jointAfterCB(int param_1, J3DTransformInfo* param_2, Quaternion* param_3) { + if (m34C6 != 0) { + if ((m34C6 & 1) != 0) { + param_3->x = m3658.x; + param_3->y = m3658.y; + param_3->z = m3658.z; + param_3->w = m3658.w; + } + if ((m34C6 & 2) != 0) { + param_2->mScale = m3668.mScale; + param_2->mRotation = m3668.mRotation; + param_2->mTranslate = m3668.mTranslate; + } + m34C6 = 0; + } + if (param_1 == 0x22) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x22), mFootData[1].field_0x088[2]); + } else if (param_1 == 0x27) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x27), mFootData[0].field_0x088[2]); + } else if (param_1 == 0x20) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x20), mFootData[1].field_0x088[0]); + } else if (param_1 == 0x21) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x21), mFootData[1].field_0x088[1]); + } else if (param_1 == 0x25) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x25), mFootData[0].field_0x088[0]); + } else if (param_1 == 0x26) { + mDoMtx_copy(mpCLModel->getAnmMtx(0x26), mFootData[0].field_0x088[1]); + } + return true; } /* 80103C1C-80103C40 .text daPy_jointAfterCallback__FUlUsP16J3DTransformInfoP10Quaternion */ @@ -401,9 +430,59 @@ static BOOL daPy_jointAfterCallback(u32 userArea, u16 param_1, J3DTransformInfo* } /* 80103C40-80103EE4 .text jointCB0__9daPy_lk_cFi */ -BOOL daPy_lk_c::jointCB0(int) { - /* Nonmatching */ +BOOL daPy_lk_c::jointCB0(int param_1) { static f32 guard_rate = 0.0f; + u16 uVar1; + bool bVar2; + int iVar3; + + if (checkEquipAnime()) { + if (!checkModeFlg(ModeFlg_00000001)) { + if ((param_1 == 1) || (param_1 == 0xd)) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); + } else if ((param_1 == 4) || (param_1 == 0x1c)) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + } + } + } else if ((checkUpperReadyAnime()) || + (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ROPETHROW) || + ((mCurProc != daPyProc_GRAB_WAIT_e) && checkGrabAnime())) + { + if (param_1 == 0xf) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); + } else if (param_1 == 0x1c) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + } + } else if ((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && + (!checkShipNotNormalMode())) + { + if (param_1 == 0xf) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + } else if (param_1 == 0x1c) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); + } + } else if (checkUpperGuardAnime()) { + if ((param_1 == 0) || (param_1 == 0xd)) { + if (param_1 == 0) { + guard_rate = m_pbCalc[PART_UPPER_e]->getRatio(2); + } + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + } else if ((param_1 == 4) || (param_1 == 0x1c)) { + m_pbCalc[PART_UPPER_e]->setRatio(2, guard_rate); + } + } else if ((dComIfGp_checkPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e)) && + ((mCurProc != daPyProc_TACT_PLAY_e || (mProcVar0.m3570 != 0)))) + { + if (param_1 == 4) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + } else if (param_1 == 8) { + m_pbCalc[PART_UPPER_e]->setRatio(1, 1.0f); + m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); + } else if (param_1 == 0xc) { + m_pbCalc[PART_UPPER_e]->setRatio(1, 0.0f); + } + } + return true; } /* 80103EE4-80103F28 .text daPy_jointCallback0__FP7J3DNodei */ @@ -420,7 +499,53 @@ static BOOL daPy_jointCallback0(J3DNode* node, int calcTiming) { /* 80103F28-80104178 .text jointCB1__9daPy_lk_cFv */ BOOL daPy_lk_c::jointCB1() { - /* Nonmatching */ + Quaternion* pQVar2; + J3DTransformInfo* pJVar4; + + if (m_old_fdata->getOldFrameFlg() == false) { + return false; + } + pJVar4 = m_old_fdata->getOldFrameTransInfo(0x21); + pQVar2 = m_old_fdata->getOldFrameQuaternion(0x21); + mDoMtx_stack_c::ZrotS(mFootData[1].field_0x008); + mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x20)); + mpCLModel->setAnmMtx(0x20, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + pJVar4++; + pQVar2++; + mDoMtx_stack_c::ZrotM(mFootData[1].field_0x00A); + mpCLModel->setAnmMtx(0x21, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + pJVar4++; + pQVar2++; + mDoMtx_stack_c::ZrotM(mFootData[1].field_0x002); + mpCLModel->setAnmMtx(0x22, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + mpCLModel->setAnmMtx(0x23, mDoMtx_stack_c::get()); + pJVar4 = m_old_fdata->getOldFrameTransInfo(0x26); + pQVar2 = m_old_fdata->getOldFrameQuaternion(0x26); + mDoMtx_stack_c::ZrotS(mFootData[0].field_0x008); + mDoMtx_stack_c::revConcat(mpCLModel->getAnmMtx(0x25)); + mpCLModel->setAnmMtx(0x25, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + pJVar4++; + pQVar2++; + mDoMtx_stack_c::ZrotM(mFootData[0].field_0x00A); + mpCLModel->setAnmMtx(0x26, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + pJVar4++; + pQVar2++; + mDoMtx_stack_c::ZrotM(mFootData[0].field_0x002); + mpCLModel->setAnmMtx(0x27, mDoMtx_stack_c::get()); + mDoMtx_stack_c::transM(pJVar4->mTranslate.x, pJVar4->mTranslate.y, pJVar4->mTranslate.z); + mDoMtx_stack_c::quatM((pQVar2)); + mpCLModel->setAnmMtx(0x28, mDoMtx_stack_c::get()); + return true; } /* 80104178-801041B4 .text daPy_jointCallback1__FP7J3DNodei */ @@ -555,13 +680,192 @@ BOOL daPy_lk_c::checkMabaAnimeBtp(int anmIdx) { } /* 801046EC-80104A08 .text checkNormalFace__9daPy_lk_cFv */ -BOOL daPy_lk_c::checkNormalFace() { - /* Nonmatching */ +s32 daPy_lk_c::checkNormalFace() { + /* Nonmatching - missing "clrlwi" instruction */ + if (mCurProc == daPyProc_SHIP_CRANE_e) { + return daPyFace_TMABAA; + } + if (mFace != daPyFace_UNKNOWN) { + return 0xFFFF0000; + } + if ((checkResetFlg0(daPyRFlg0_UNK40000))) { + return daPyFace_TMABAG; + } + if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_GRABWAITB) { + return daPyFace_TMABAJ_TEYORIME; + } + if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_GRABWAIT) { + return daPyFace_TMABAE; + } + if ((daPy_dmEcallBack_c::m_type == 1) || (checkRestHPAnime())) { + return daPyFace_TMABAF; + } + if (checkNoDamageMode()) { + return daPyFace_TMABAC; + } + if (daPy_dmEcallBack_c::m_type == 0) { + return daPyFace_TDAMDASH; + } + if (checkNoResetFlg1(daPyFlg1_CONFUSE)) { + return daPyFace_TMABAH_TABEKOBE; + } + if (checkNoResetFlg0(daPyFlg0_HEAVY_STATE)) { + return daPyFace_TMABAH; + } + if (checkNoResetFlg1(daPyFlg1_UNK1000000) && (!checkModeFlg(ModeFlg_00000001))) { + return daPyFace_TDASHKAZE; + } + if (((checkUpperReadyAnime() || ((checkNoResetFlg1(daPyFlg1_UNK400) || + ((mpAttnActorLockOn != NULL) && + (fopAcM_GetGroup(mpAttnActorLockOn) == fopAc_ENEMY_e))))) || + (checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS))) || + (mEquipItem == dItem_SKULL_HAMMER_e)) + { + return daPyFace_TMABAC; + } + if (checkBossBgm()) { + return daPyFace_TMABAC; + } + if (mpAttention->Lockon()) { + return daPyFace_TMABACB; + } + if (mEquipItem != daPyItem_NONE_e) { + return daPyFace_TMABAB; + } + if (m_anm_heap_under[UNDER_MOVE1_e].mIdx == LKANM_BCK_WALKSLOPE) { + return daPyFace_TMABAC; + } + if (mCurProc == daPyProc_MOVE_e) { + f32 fVar2; + if (m3580 == 8) { + fVar2 = 1.0f; + } else { + fVar2 = cM_scos(m34E2); + } + if ((mVelocity * fVar2) / mMaxNormalSpeed >= 0.9f) { + return daPyFace_TMABACC; + } + } + if ((mCurProc == daPyProc_WAIT_e) && (!dComIfGp_event_runCheck())) { + f32 dVar7 = cM_rnd(); + if ((((m_tex_anm_heap.mIdx == LKANM_BTP_TMABAA) || + (m_tex_anm_heap.mIdx == LKANM_BTP_TMABAB)) && + (dVar7 < 0.01f)) || + (((m_tex_anm_heap.mIdx == LKANM_BTP_TMABACC && (dVar7 >= 0.01f))))) + { + return daPyFace_TMABACC; + } + if (((dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_DUNGEON_e) || + dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == dStageType_SUBDUNGEON_e)) + { + return daPyFace_TMABAB; + } + } + return daPyFace_TMABAA; } /* 80104A08-80104E08 .text setTextureAnime__9daPy_lk_cFUsi */ -void daPy_lk_c::setTextureAnime(u16, int) { - /* Nonmatching */ +void daPy_lk_c::setTextureAnime(u16 param_1, int param_2) { + /* Nonmatching - missing "mr" instruction */ + BOOL bVar3; + f32 dVar9; + + if (param_1 == 0) { + param_1 = checkNormalFace(); + } + u16 uVar2 = mTexAnmIndexTable[param_1].mBtpIdx; + u16 uVar1 = mTexAnmIndexTable[param_1].mBtkIdx; + if (((param_1 < 0x13) && + (checkMabaAnimeBtp(m_tex_anm_heap.mIdx))) && + (mFace == daPyFace_UNKNOWN)) + { + param_2 = m3530; + bVar3 = true; + } else { + bVar3 = false; + } + if (m_tex_anm_heap.mIdx == uVar2) { + if ((mFace == daPyFace_UNKNOWN) && (!checkModeFlg(ModeFlg_00000100 | ModeFlg_00000400))) { + m3530 = param_2; + } + } else { + m_tex_anm_heap.mIdx = uVar2; + if ((m_tex_anm_heap.field_0x2 == 0xFFFF) && (m_tex_anm_heap.field_0x4 == 0xFFFF)) { + setTextureAnimeResource(loadTextureAnimeResource(uVar2, 0), param_2); + } + } + dVar9 = cM_rnd(); + if (m_tex_scroll_heap.mIdx != uVar1) { + if ((((bVar3) && (checkModeFlg(ModeFlg_00000001))) && (daPy_matAnm_c::m_maba_flg != 0)) && + (((!dComIfGp_event_runCheck() && (mpAttnActorLockOn == NULL)) && (uVar1 == 0x1a7)))) + { + if (daPy_matAnm_c::m_maba_timer == 0) { + if (dVar9 < 0.44f) { + uVar1 = 0x1a7; + } else { + param_2 = 0; + if (dVar9 < 0.51f) { + uVar1 = LKANM_BTK_TEUP; + } else if (dVar9 < 0.58f) { + uVar1 = LKANM_BTK_TEDW; + } else if (dVar9 < 0.65f) { + uVar1 = LKANM_BTK_TEL; + } else if (dVar9 < 0.72f) { + uVar1 = LKANM_BTK_TER; + } else if (dVar9 < 0.79f) { + uVar1 = LKANM_BTK_TEDL; + } else if (dVar9 < 0.86f) { + uVar1 = LKANM_BTK_TEDR; + } else if (dVar9 < 0.93f) { + uVar1 = LKANM_BTK_TEUR; + } else { + uVar1 = LKANM_BTK_TEUL; + } + } + m_tex_scroll_heap.mIdx = uVar1; + if ((m_tex_scroll_heap.field_0x2 == 0xFFFF) && + (m_tex_scroll_heap.field_0x4 == 0xFFFF)) + { + setTextureScrollResource(loadTextureScrollResource(uVar1, 0), param_2); + } + if (uVar1 != 0x1a7) { + daPy_matAnm_c::onMabaFlg(); + } + } + } else { + m_tex_scroll_heap.mIdx = uVar1; + if ((m_tex_scroll_heap.field_0x2 == 0xFFFF) && (m_tex_scroll_heap.field_0x4 == 0xFFFF)) + { + setTextureScrollResource(loadTextureScrollResource(uVar1, 0), param_2); + } + } + } else if (((((bVar3) && (checkModeFlg(ModeFlg_00000001))) && (!dComIfGp_event_runCheck())) && + ((daPy_matAnm_c::m_maba_timer == 0 && (mpAttnActorLockOn == NULL)))) && + (((uVar1 == 0x1a7 && ((m_tex_scroll_heap.field_0x2 == 0xFFFF && + (m_tex_scroll_heap.field_0x4 == 0xFFFF)))) && + (cM_rnd() < 0.025f)))) + { + if (dVar9 < 0.125f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEUP; + } else if (dVar9 < 0.25f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEDW; + } else if (dVar9 < 0.375f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEL; + } else if (dVar9 < 0.5f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TER; + } else if (dVar9 < 0.625f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEDL; + } else if (dVar9 < 0.75f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEDR; + } else if (dVar9 < 0.875f) { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEUL; + } else { + m_tex_scroll_heap.mIdx = LKANM_BTK_TEUR; + } + setTextureScrollResource(loadTextureScrollResource(m_tex_scroll_heap.mIdx, 0), 0); + daPy_matAnm_c::onMabaFlg(); + } + return; } /* 80104E08-80104EC8 .text setPriTextureAnime__9daPy_lk_cFUsi */ @@ -647,7 +951,74 @@ J3DAnmTextureSRTKey* daPy_lk_c::loadTextureScrollResource(u32 btkIdx, BOOL isDem /* 801052BC-8010552C .text playTextureAnime__9daPy_lk_cFv */ void daPy_lk_c::playTextureAnime() { - /* Nonmatching */ + if (m_tex_anm_heap.field_0x4 != 0xFFFF) { + if (mCurProc == daPyProc_DEMO_TOOL_e) { + m3530 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + m3532 = m3530; + } else if ((m_tex_anm_heap.field_0x6 == 0xFFFE) && + (checkMabaAnimeBtp(m_tex_anm_heap.field_0x4))) + { + if (m3530 != 0) { + m3530++; + if (m3530 >= mpAnmTexPatternData->getFrameMax()) { + m3530 = 0; + } + } else { + if (cM_rnd() < 0.012f) { + m3530++; + } + } + m3532 = m3530; + } else { + m3530++; + m3532++; + } + } else if (m_tex_anm_heap.field_0x2 != 0xFFFF) { + if (checkModeFlg(ModeFlg_SWIM)) { + m3530 = 0; + m3532 = 0; + } else { + m3530 = mFrameCtrlUpper[UPPER_MOVE2_e].getFrame(); + m3532 = m3530; + } + } else if ((checkModeFlg(ModeFlg_00000400)) || ((m34C3 == 9) || (m34C3 == 10))) { + m3530 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + m3532 = m3530; + } else if (checkModeFlg(ModeFlg_00000100)) { + if (m3530 != 0) { + m3530++; + if (m3530 >= mpAnmTexPatternData->getFrameMax()) { + m3530 = 0; + } + } else { + if (cM_rnd() < 0.012f) { + m3530++; + } + } + if (m_tex_scroll_heap.mIdx == LKANM_BTK_TABEKOBE) { + m3532++; + if (m3532 >= mpTexScrollResData->getFrameMax()) { + m3532 = 0; + } + } else { + m3532 = m3530; + } + } + if (m3530 >= mpAnmTexPatternData->getFrameMax()) { + if (mpAnmTexPatternData->getFrameMax() == 0) { + m3530 = 0; + } else { + m3530 = mpAnmTexPatternData->getFrameMax(); + } + } + if (m3532 >= mpTexScrollResData->getFrameMax()) { + if (mpTexScrollResData->getFrameMax() == 0) { + m3532 = 0; + } else { + m3532 = mpTexScrollResData->getFrameMax(); + } + } + return; } /* 8010552C-8010558C .text checkPlayerGuard__9daPy_lk_cCFv */ @@ -1490,7 +1861,18 @@ void daPy_lk_c::deleteEquipItem(BOOL param_1) { /* 8010C71C-8010C7F4 .text setFallVoice__9daPy_lk_cFv */ void daPy_lk_c::setFallVoice() { - /* Nonmatching */ + if (((!checkNoResetFlg0(daPyFlg0_NO_FALL_VOICE)) && + ((((!checkNoResetFlg0(daPyFlg0_UNK80) || (m35D0 < mAcch.GetGroundH())) || (m3580 == 4)) || + (C_BG_MIN_HEIGHT == mAcch.GetGroundH())))) && + (m35F0 - current.pos.y > 500.0f)) + { + if (current.pos.y - mAcch.GetGroundH() >= 100.0f * daPy_HIO_fall_c0::m.field_0x14) { + voiceStart(12); + onNoResetFlg0(daPyFlg0_NO_FALL_VOICE); + setTextureAnime(0x56, 0); + } + } + return; } /* 8010C7F4-8010C854 .text keepItemData__9daPy_lk_cFv */ @@ -1673,11 +2055,128 @@ BOOL daPy_lk_c::checkItemChangeFromButton() { /* 8010D26C-8010D754 .text checkItemAction__9daPy_lk_cFv */ void daPy_lk_c::checkItemAction() { - /* Nonmatching */ + if ((mEquipItem == dComIfGp_getSelectItem(dItemBtn_X_e)) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e)) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e))) + { + mReadyItemBtn = dItemBtn_X_e; + } else if (((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Y_e)) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e))) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Z_e))) + { + mReadyItemBtn = dItemBtn_Y_e; + } else if (((mEquipItem == dComIfGp_getSelectItem(dItemBtn_Z_e)) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_X_e))) && + (mEquipItem != dComIfGp_getSelectItem(dItemBtn_Y_e))) + { + mReadyItemBtn = dItemBtn_Z_e; + } + if ((((checkEquipAnime()) || (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMTHROW)) || + (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMCATCH)) || + (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ROPETHROW)) + { + J3DFrameCtrl& frameCtrl = mFrameCtrlUpper[UPPER_MOVE2_e]; + if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMCATCH) { + if (!(frameCtrl.getRate() < 0.01f)) { + if (!(mStickDistance > 0.05f)) { + return; + } + if (!(frameCtrl.getFrame() > daPy_HIO_boom_c0::m.field_0x2C)) { + return; + } + } + resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + procShipPaddle_init(); + } + } else if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMTHROW) { + if ((frameCtrl.getRate() < 0.01f) || + ((mStickDistance > 0.05f && + (frameCtrl.getFrame() > daPy_HIO_boom_c0::m.field_0x10)))) + { + resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); + } else { + if (frameCtrl.checkPass(daPy_HIO_boom_c0::m.field_0x14)) { + throwBoomerang(); + } + } + } else if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ROPETHROW) { + if (frameCtrl.getRate() < 0.01f) { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + mFrameCtrlUnder[UNDER_MOVE1_e].setRate(0.0f); + mFrameCtrlUpper[UPPER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24); + mFrameCtrlUpper[UPPER_MOVE1_e].setRate(0.0f); + } + } else { + if (checkEquipAnime()) { + if ((mEquipItem == daPyItem_SWORD_e) && + (((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_REST && + (frameCtrl.checkPass(7.0f - frameCtrl.getRate()))) || + ((((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKE && + (frameCtrl.checkPass(7.0f - frameCtrl.getRate()))) || + ((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKEBOTH && + (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x30 - + frameCtrl.getRate()))))) || + ((checkSingleItemEquipAnime() && + (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x20 - + frameCtrl.getRate()))))))))) + { + seStartOnlyReverb(JA_SE_LK_SW_PUTIN_S); + } + if (std::fabsf(frameCtrl.getRate()) < 0.01f) { + resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); + } else { + if (((((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_REST) && + (frameCtrl.checkPass(7.0f))) || + ((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKE && + (frameCtrl.checkPass(7.0f))))) || + ((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKEBOTH && + (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x30))))) || + ((checkSingleItemEquipAnime() && + (frameCtrl.checkPass(daPy_HIO_item_c0::m.field_0x20))))) + { + if (((mEquipItem != daPyItem_NONE_e) && (mEquipItem != daPyItem_SWORD_e)) || + ((m3562 != daPyItem_NONE_e && (m3562 != daPyItem_SWORD_e)))) + { + seStartOnlyReverb(JA_SE_LK_ITEM_TAKEOUT); + } + BOOL var_r28; + if (mEquipItem == daPyItem_NONE_e) { + var_r28 = 0; + } else { + var_r28 = 1; + } + deleteEquipItem(FALSE); + mEquipItem = m3562; + if ((!dComIfGp_event_runCheck()) && (mDemo.getDemoType() == 0)) { + if ((mEquipItem != daPyItem_SWORD_e) || + (!checkNoResetFlg1(daPyFlg1_UNK4000000))) + { + if (((mpAttention->Lockon()) || (mEquipItem != daPyItem_SWORD_e)) || + var_r28) + { + onResetFlg0(daPyRFlg0_UNK80); + } + } + } + if (mCurProc == daPyProc_DEMO_STAND_ITEM_PUT_e) { + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); + } else if (mEquipItem == daPyItem_SWORD_e) { + seStartOnlyReverb(JA_SE_LK_SW_PULLOUT_S); + setSwordModel(0); + } else { + makeItemType(); + } + } + } + } + } + } + return; } /* 8010D754-8010D810 .text getSlidePolygon__9daPy_lk_cFv */ -void daPy_lk_c::getSlidePolygon() { +cM3dGPla* daPy_lk_c::getSlidePolygon() { /* Nonmatching */ } @@ -1779,13 +2278,28 @@ BOOL daPy_lk_c::checkAtHitEnemy(dCcD_GObjInf*) { } /* 8011054C-801105D8 .text checkElecReturnDamage__9daPy_lk_cFP12dCcD_GObjInfP4cXyz */ -BOOL daPy_lk_c::checkElecReturnDamage(dCcD_GObjInf*, cXyz*) { - /* Nonmatching */ +BOOL daPy_lk_c::checkElecReturnDamage(dCcD_GObjInf* param_1, cXyz* param_2) { + if ((param_1->ChkAtHit()) && (param_1->GetAtHitGObj() != NULL)) { + dCcD_GObjInf* gobj_p = (dCcD_GObjInf*)param_1->GetAtHitGObj(); + if (gobj_p->GetTgSpl() == dCcG_Tg_Spl_UNK1) { + param_2->x = param_1->GetAtHitPosP()->x; + param_2->y = param_1->GetAtHitPosP()->y; + param_2->z = param_1->GetAtHitPosP()->z; + return true; + } + } + return false; } /* 801105D8-80110654 .text checkWallAtributeDamage__9daPy_lk_cFP12dBgS_AcchCir */ -s32 daPy_lk_c::checkWallAtributeDamage(dBgS_AcchCir*) { - /* Nonmatching */ +s32 daPy_lk_c::checkWallAtributeDamage(dBgS_AcchCir* param_1) { + if ((param_1->ChkWallHit()) && (dComIfG_Bgsp()->ChkPolySafe(*param_1))) { + int iVar1 = dComIfG_Bgsp()->GetAttributeCode(*param_1); + if ((iVar1 == dBgS_Attr_DAMAGE_e || (iVar1 == dBgS_Attr_ELECTRICITY_e))) { + return iVar1; + } + } + return false; } /* 80110654-80110F3C .text changeDamageProc__9daPy_lk_cFv */ @@ -2021,13 +2535,187 @@ BOOL daPy_lk_c::changeAutoJumpProc() { /* 80111424-80111A80 .text changeDemoProc__9daPy_lk_cFv */ BOOL daPy_lk_c::changeDemoProc() { - /* Nonmatching */ static const Vec tact_scale = {2.5f, 2.5f, 2.5f}; + fopAc_ac_c* pfVar6; + + if (!dComIfGp_event_runCheck()) { + return false; + } + if (checkNoResetFlg1(daPyFlg1_SHIP_TACT)) { + if (mEquipItem != daPyItem_UNK10A_e) { + deleteEquipItem(FALSE); + setTactModel(); + mEquipItem = daPyItem_UNK10A_e; + mpEquipItemModel->setBaseScale(tact_scale); + } + } else if (mEquipItem == daPyItem_UNK10A_e) { + deleteEquipItem(FALSE); + } + u32 demo_mode = mDemo.getDemoMode(); + JUT_ASSERT(9342, (demo_mode < daPy_demo_c::DEMO_LAST_e) || + (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e)); + if ((((demo_mode != daPy_demo_c::DEMO_NEW_ANM0_e) && + (demo_mode != daPy_demo_c::DEMO_UNK1E_e)) && + (demo_mode != daPy_demo_c::DEMO_UNK9_e)) && + (((demo_mode != daPy_demo_c::DEMO_UNK11_e && (demo_mode != daPy_demo_c::DEMO_UNK40_e)) && + ((demo_mode != daPy_demo_c::DEMO_UNK4_e && + ((demo_mode != daPy_demo_c::DEMO_UNK2F_e && + (demo_mode != daPy_demo_c::DEMO_UNK3E_e)))))))) + { + if ((!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && + !dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e))) + { + if ((!mAcch.ChkGroundHit() || + (checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | + ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT)))) + { + return false; + } + } + } + if (demo_mode == daPy_demo_c::DEMO_NEW_ANM0_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + return dProcTool_init(); + } + if (mDemoProcInitFuncTable[demo_mode] != NULL) { + onNoResetFlg0(daPyFlg0_UNK100000); + return (this->*mDemoProcInitFuncTable[demo_mode])(); + } + if (demo_mode == daPy_demo_c::DEMO_UNK4_e) { + int var_r28; + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + return true; + } + var_r28 = procWait_init(); + if (var_r28 != 0) { + m_old_fdata->initOldFrameMorf(0.0f, 0, 0x2A); + } + return var_r28; + } else if ((demo_mode == daPy_demo_c::DEMO_UNK6_e) || (demo_mode == daPy_demo_c::DEMO_UNK8_e)) { + if (checkModeFlg(ModeFlg_04000000)) { + return true; + } + if (((dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) && + (fopAcM_getTalkEventPartner(this) != NULL)) && + (fopAcM_getTalkEventPartner(this) == dComIfGp_getShipActor())) + { + return procShipPaddle_init(); + } else { + onNoResetFlg0(daPyFlg0_UNK100000); + pfVar6 = mActorKeepGrab.getActor(); + if (pfVar6 != NULL) { + if ((fopAcM_CheckStatus(pfVar6, fopAcStts_UNK10000_e)) && + (!checkGrabSpecialHeavyState())) + { + return procGrabThrow_init(0); + } else { + return procGrabPut_init(); + } + } else { + return dProcTalk_init(); + } + } + } else if (demo_mode == daPy_demo_c::DEMO_UNK9_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + if ((mCurProc == daPyProc_LARGE_DAMAGE_UP_e) || (mCurProc == daPyProc_LARGE_DAMAGE_WALL_e)) + { + return false; + } + if (checkModeFlg(ModeFlg_SWIM)) { + dComIfGp_evmng_cutEnd(mStaffIdx); + return false; + } else { + return procLargeDamage_init(-3, 1, 0, 0); + } + } else if (demo_mode == daPy_demo_c::DEMO_UNK1B_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + return procLargeDamageUp_init(-3, 1, 0, 0); + } else if (demo_mode == daPy_demo_c::DEMO_UNK10_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + if (mCurProc == daPyProc_BACK_JUMP_LAND_e) { + return false; + } + return procBackJump_init(); + } else if (demo_mode == daPy_demo_c::DEMO_UNK11_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54); + } else if (demo_mode == daPy_demo_c::DEMO_UNK40_e) { + if (mCurProc == daPyProc_LAND_e) { + return true; + } + return procSlowFall_init(); + } else if (demo_mode == daPy_demo_c::DEMO_UNK1F_e) { + if (((!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | + ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_04000000 | + ModeFlg_CAUGHT)) && + (((((checkUpperReadyThrowAnime() || (m34C3 == 2)) || (m34C3 == 1)) || + ((m34C3 == 4 || (m34C3 == 9)))) || + ((m34C3 == 10 || (mCurProc == daPyProc_GRAB_WAIT_e)))))) || + (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e))) + { + onNoResetFlg0(daPyFlg0_UNK100000); + return dProcLookWait_init(); + } else { + dComIfGp_evmng_cutEnd(mStaffIdx); + return true; + } + } else if (demo_mode == daPy_demo_c::DEMO_UNK22_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + if ((mCurProc == daPyProc_TACT_PLAY_e) || (mCurProc == daPyProc_TACT_PLAY_END_e)) { + return true; + } + return procTactWait_init(mDemo.getParam0()); + } else if (demo_mode == daPy_demo_c::DEMO_UNK33_e) { + pfVar6 = mActorKeepGrab.getActor(); + if ((pfVar6 == NULL) || (pfVar6 != dComIfGp_getCb1Player())) { + deleteEquipItem(FALSE); + freeGrabItem(); + mActorKeepGrab.setData(dComIfGp_getCb1Player()); + fopAcM_setCarryNow(mActorKeepGrab.getActor(), TRUE); + } + return procGrabWait_init(); + } else if (demo_mode == daPy_demo_c::DEMO_UNK3D_e) { + onNoResetFlg0(daPyFlg0_UNK100000); + return procBottleOpen_init(dComIfGp_event_getPreItemNo()); + } else if ((((checkNoResetFlg0(daPyFlg0_UNK100000)) || (mCurProc == daPyProc_SUBJECTIVITY_e)) || + (checkUpperReadyThrowAnime())) && + (((demo_mode == daPy_demo_c::DEMO_UNK2A_e || (demo_mode - 1 <= 2)) || + ((demo_mode == daPy_demo_c::DEMO_UNK17_e || + (demo_mode == daPy_demo_c::DEMO_UNK12_e)))))) + { + offNoResetFlg0(daPyFlg0_UNK100000); + if (checkUpperReadyThrowAnime()) { + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); + } + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + return procShipPaddle_init(); + } else { + return checkNextMode(0); + } + } + return false; } /* 80111A80-80111B80 .text changeDeadProc__9daPy_lk_cFv */ BOOL daPy_lk_c::changeDeadProc() { - /* Nonmatching */ + if ((((!dComIfGp_event_runCheck()) && (mDemo.getDemoType() == 0)) && + (dComIfGs_getLife() == 0)) && + (!checkModeFlg(ModeFlg_DAMAGE))) + { + if (dComIfGs_checkBottle(dItem_FAIRY_BOTTLE_e)) { + makeFairy(¤t.pos, 5); + dComIfGs_setBottleItemIn(dItem_FAIRY_BOTTLE_e, dItem_EMPTY_BOTTLE_e); + return false; + } + if (((mAcch.ChkGroundHit()) || (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e))) || + (checkModeFlg(ModeFlg_SWIM))) + { + return dProcDead_init(); + } + return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54); + } else { + return false; + } } /* 80111B80-80111D64 .text getDamageVec__9daPy_lk_cFP12dCcD_GObjInf */ @@ -2042,7 +2730,15 @@ void daPy_lk_c::setOldRootQuaternion(s16, s16, s16) { /* 80111E54-80111EFC .text checkRestHPAnime__9daPy_lk_cFv */ BOOL daPy_lk_c::checkRestHPAnime() { - /* Nonmatching */ + if ((((!checkPlayerGuard()) && ((m_anm_heap_upper[UPPER_MOVE2_e]).mIdx == 0xFFFF)) && + (mpAttnActorLockOn == NULL)) && + ((((mDemo.getDemoType() == 0 && (!checkModeFlg(ModeFlg_IN_SHIP))) && + (dComIfGs_getLife() <= daPy_HIO_move_c0::m.field_0xE)) || + (mDemo.getDemoMode() == 0x12)))) + { + return true; + } + return false; } /* 80111EFC-80111F5C .text checkHeavyStateOn__9daPy_lk_cFv */ @@ -2082,7 +2778,15 @@ BOOL daPy_lk_c::checkPhotoBoxItem(int itemNo) const { /* 80112064-80112100 .text checkScopeEnd__9daPy_lk_cFv */ BOOL daPy_lk_c::checkScopeEnd() { - /* Nonmatching */ + if ((dComIfGp_getScopeMesgStatus() == 11) && + ((cancelTrigger()) || (checkNoResetFlg0(daPyFlg0_SCOPE_CANCEL)))) + { + if ((dComIfGp_checkPlayerStatus0(0, daPyStts0_TELESCOPE_LOOK_e)) || (cancelTrigger())) { + mDoAud_seStart(JA_SE_ITM_SUBMENU_OUT); + } + return true; + } + return false; } /* 80112100-8011215C .text setSubjectMode__9daPy_lk_cFv */ @@ -2093,7 +2797,12 @@ void daPy_lk_c::setSubjectMode() { /* 8011215C-801121C8 .text checkMaskDraw__9daPy_lk_cFv */ BOOL daPy_lk_c::checkMaskDraw() { - /* Nonmatching */ + dDemo_actor_c* demo_actor = dComIfGp_demo_getActor(demoActorID); + if ((demo_actor == NULL) && (dComIfGs_isCollect(4, 1))) { + return true; + } else { + return false; + } } /* 801121C8-80112280 .text checkSubjectEnd__9daPy_lk_cFi */ @@ -2307,13 +3016,33 @@ BOOL daPy_lk_c::commonProcInit(daPy_PROC proc) { } /* 80112954-80112A24 .text procScope_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procScope_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procScope_init(int param_1) { + commonProcInit(daPyProc_SCOPE_e); + mVelocity = 0.0f; + setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + current.angle.y = shape_angle.y; + mDoAud_seStart(JA_SE_ITM_SUBMENU_IN_1); + offNoResetFlg0(daPyFlg0_SCOPE_CANCEL); + if (param_1 == 0x20) { + dComIfGp_setPlayerStatus0(0, daPyStts0_TELESCOPE_LOOK_e); + } else { + dComIfGp_setPlayerStatus1(0, daPyStts1_PICTO_BOX_AIM_e); + } + return true; } /* 80112A24-80112AA8 .text procScope__9daPy_lk_cFv */ BOOL daPy_lk_c::procScope() { - /* Nonmatching */ + if (checkScopeEnd()) { + procWait_init(); + } else { + if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x10)) { + shape_angle.y = fopCamM_GetAngleY(dComIfGp_getCamera(mCameraInfoIdx)); + current.angle.y = shape_angle.y; + } + } + offNoResetFlg0(daPyFlg0_SCOPE_CANCEL); + return true; } /* 80112AA8-80112B18 .text procSubjectivity_init__9daPy_lk_cFi */ @@ -2328,7 +3057,7 @@ BOOL daPy_lk_c::procSubjectivity_init(BOOL i_crouch) { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); } - m3570 = i_crouch; + mProcVar0.m3570 = i_crouch; return true; } @@ -2339,10 +3068,10 @@ BOOL daPy_lk_c::procSubjectivity() { if( checkSubjectEnd(FALSE) || - (m3570 != 0 && !spActionButton() // Player released R while crouching + (mProcVar0.m3570 != 0 && !spActionButton() // Player released R while crouching )) { mDoAud_seStart(JA_SE_SUBJ_VIEW_OUT); - if(m3570 != 0) { + if(mProcVar0.m3570 != 0) { if(mEquipItem == daPyItem_NONE_e) { return procCrouch_init(); } @@ -2394,12 +3123,31 @@ BOOL daPy_lk_c::procCall() { /* 80112D38-80112DF4 .text procControllWait_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procControllWait_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_CONTROLL_WAIT_e) { + return false; + } + int iVar3 = checkShipRideUseItem(1); + commonProcInit(daPyProc_CONTROLL_WAIT_e); + mVelocity = 0.0f; + daPy_matAnm_c::offMabaFlg(); + setSingleMoveAnime(ANM_NENRIKI, 1.0f, 0.0f, -1, daPy_HIO_basic_c0::m.field_0xC); + current.angle.y = shape_angle.y; + deleteEquipItem(FALSE); + initShipRideUseItem(iVar3, 2); + return true; } /* 80112DF4-80112E60 .text procControllWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procControllWait() { - /* Nonmatching */ + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + setShipRidePosUseItem(); + if (daPy_getPlayerActorClass() == this) { + procShipPaddle_init(); + } + } else { + checkNextMode(0); + } + return true; } /* 80112E60-80113044 .text procWait_init__9daPy_lk_cFv */ @@ -2414,77 +3162,260 @@ BOOL daPy_lk_c::procWait() { /* 801133FC-801134A0 .text procFreeWait_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procFreeWait_init() { - /* Nonmatching */ + daPy_ANM dVar1; + f32 dVar2; + + commonProcInit(daPyProc_FREE_WAIT_e); + mVelocity = 0.0f; + dVar2 = cM_rnd(); + mProcVar0.m3570 = 0; + if (dVar2 < 0.3333f) { + dVar1 = ANM_FREEA; + } else { + if (dVar2 < 0.6666f) { + dVar1 = ANM_FREEB; + mProcVar0.m3570 = 1; + } else { + dVar1 = ANM_FREED; + } + } + setSingleMoveAnime(dVar1, 1.0f, 0.0f, -1, 5.0f); + current.angle.y = shape_angle.y; + mDirection = DIR_NONE; + return true; } /* 801134A0-801135C4 .text procFreeWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procFreeWait() { - /* Nonmatching */ + if (mpAttention->Lockon()) { + setSpeedAndAngleAtn(); + } else { + setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); + } + if (mProcVar0.m3570 != 0) { + if (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(168.0f)) { + voiceStart(48); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(105.0f)) { + voiceStart(47); + } + } + } + if ((!checkNextMode(0)) && (dComIfGp_event_runCheck())) { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f); + procWait_init(); + } + return true; } /* 801135C4-80113628 .text procMove_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procMove_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_MOVE_e) { + return false; + } + commonProcInit(daPyProc_MOVE_e); + setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + m34D0 = 0x14; + return true; } /* 80113628-801136D4 .text procMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procMove() { - /* Nonmatching */ + /* Nonmatching - regalloc */ + setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); + if (((!checkNextMode(0)) && (!changeFrontWallTypeProc())) && (!checkIceSlipFall())) { + if ((mDemo.getDemoMode() == 2) && + (mVelocity > mMaxNormalSpeed * daPy_HIO_move_c0::m.field_0x2C)) + { + mVelocity = mMaxNormalSpeed * daPy_HIO_move_c0::m.field_0x2C; + } + setBlendMoveAnime(-1.0f); + } + return true; } /* 801136D4-80113738 .text procAtnMove_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnMove_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_ATN_MOVE_e) { + return false; + } + commonProcInit(daPyProc_ATN_MOVE_e); + setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + m34D0 = 0x14; + return true; } /* 80113738-801137B4 .text procAtnMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnMove() { - /* Nonmatching */ + setSpeedAndAngleAtn(); + if ((!checkNextMode(0)) && + (((mDirection != DIR_NONE) || (!changeFrontWallTypeProc())) && (!checkIceSlipFall()))) + { + setBlendAtnMoveAnime(-1.0f); + } + return true; } /* 801137B4-8011388C .text procAtnActorWait_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnActorWait_init() { - /* Nonmatching */ + s16 sVar2; + + if (mCurProc == daPyProc_ATN_ACTOR_WAIT_e) { + return false; + } + commonProcInit(daPyProc_ATN_ACTOR_WAIT_e); + if (mpAttnActorLockOn != NULL) { + sVar2 = fopAcM_searchActorAngleY(this, mpAttnActorLockOn); + } else { + sVar2 = 0; + } + if ((mDirection == DIR_LEFT) || ((mDirection != DIR_RIGHT) && !(sVar2 - shape_angle.y < 0))) { + mDirection = DIR_LEFT; + } else { + mDirection = DIR_RIGHT; + } + if (checkAtnWaitAnime()) { + setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + } else { + setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + } + return true; } /* 8011388C-801138FC .text procAtnActorWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnActorWait() { - /* Nonmatching */ + setSpeedAndAngleAtnActor(); + if (!checkNextMode(0)) { + if (checkAtnWaitAnime()) { + setBlendAtnMoveAnime(-1.0f); + } else { + setBlendMoveAnime(-1.0f); + } + } + return true; } /* 801138FC-80113960 .text procAtnActorMove_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnActorMove_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_ATN_ACTOR_MOVE_e) { + return false; + } + commonProcInit(daPyProc_ATN_ACTOR_MOVE_e); + setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + m34D0 = 0x14; + return true; } /* 80113960-801139C0 .text procAtnActorMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procAtnActorMove() { - /* Nonmatching */ + setSpeedAndAngleAtnActor(); + if ((!checkNextMode(0)) && (!checkIceSlipFall())) { + setBlendAtnMoveAnime(-1.0f); + } + return true; } /* 801139C0-80113AC4 .text procSideStep_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procSideStep_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procSideStep_init(int param_1) { + daPy_ANM dVar1; + + commonProcInit(daPyProc_SIDE_STEP_e); + mDirection = param_1; + if (param_1 == DIR_LEFT) { + dVar1 = ANM_ATNJL; + current.angle.y = shape_angle.y + 0x4000; + } else { + dVar1 = ANM_ATNJR; + current.angle.y = shape_angle.y + -0x4000; + } + setSingleMoveAnime(dVar1, daPy_HIO_sideStep_c0::m.field_0xC, daPy_HIO_sideStep_c0::m.field_0x10, + daPy_HIO_sideStep_c0::m.field_0x4, daPy_HIO_sideStep_c0::m.field_0x14); + mVelocity = cM_scos(daPy_HIO_sideStep_c0::m.field_0x2) * daPy_HIO_sideStep_c0::m.field_0x8; + speed.y = cM_ssin(daPy_HIO_sideStep_c0::m.field_0x2) * daPy_HIO_sideStep_c0::m.field_0x8; + gravity = daPy_HIO_sideStep_c0::m.field_0x18; + mProcVar0.m3570 = 0; + voiceStart(5); + return true; } /* 80113AC4-80113BDC .text procSideStep__9daPy_lk_cFv */ BOOL daPy_lk_c::procSideStep() { - /* Nonmatching */ + if (daPy_HIO_sideStep_c0::m.field_0x0 != 0) { + if (mpAttnActorLockOn != NULL) { + s16 sVar2 = fopAcM_searchActorAngleY(this, mpAttnActorLockOn); + cLib_addCalcAngleS(&shape_angle.y, sVar2, 5, 0x5e8, 0x13c); + } + if (mDirection == DIR_LEFT) { + current.angle.y = shape_angle.y + 0x4000; + } else { + current.angle.y = shape_angle.y + -0x4000; + } + } + checkNextActionItemFly(); + if (mAcch.ChkGroundHit()) { + procSideStepLand_init(); + } else { + if (checkJumpCutFromButton()) { + return true; + } + if (checkFanGlideProc(0)) { + return true; + } + if (current.pos.y < m3688.y - daPy_HIO_sideStep_c0::m.field_0x30) { + procFall_init(2, daPy_HIO_sideStep_c0::m.field_0x2C); + } + } + checkItemChangeFromButton(); + return true; } /* 80113BDC-80113CBC .text procSideStepLand_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSideStepLand_init() { - /* Nonmatching */ + daPy_ANM dVar2; + + commonProcInit(daPyProc_SIDE_STEP_LAND_e); + mVelocity = 0.0f; + if (mDirection == DIR_LEFT) { + dVar2 = ANM_ATNJLLAND; + } else { + dVar2 = ANM_ATNJRLAND; + } + setSingleMoveAnime(dVar2, daPy_HIO_sideStep_c0::m.field_0x1C, + daPy_HIO_sideStep_c0::m.field_0x20, daPy_HIO_sideStep_c0::m.field_0x6, + daPy_HIO_sideStep_c0::m.field_0x24); + m34BE = 3; + onResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); + onResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); + current.angle.y += 0x8000; + if (checkHeavyStateOn()) { + dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + } + return true; } /* 80113CBC-80113D30 .text procSideStepLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procSideStepLand() { - /* Nonmatching */ + resetFootEffect(); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_sideStep_c0::m.field_0x28) { + checkNextMode(1); + } + } + return true; } /* 80113D30-80113DBC .text procCrouchDefense_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouchDefense_init() { - /* Nonmatching */ + commonProcInit(daPyProc_CROUCH_DEFENSE_e); + daPy_matAnm_c::offMabaFlg(); + setSingleMoveAnime(ANM_DIFENCE, daPy_HIO_crouch_c0::m.field_0x10, 0.0f, -1, + daPy_HIO_crouch_c0::m.field_0x14); + current.angle.y = shape_angle.y; + m34D4 = 0; + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK80000_e); + return true; } /* 80113DBC-80114014 .text procCrouchDefense__9daPy_lk_cFv */ @@ -2499,12 +3430,39 @@ BOOL daPy_lk_c::procCrouchDefenseSlip_init() { /* 801142F4-801143D4 .text procCrouchDefenseSlip__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouchDefenseSlip() { - /* Nonmatching */ + dComIfGp_setRStatus(0x36); + if (m34D0 > 0) { + m34D0--; + } + if (mEquipItem == dItem_SKULL_HAMMER_e) { + m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } else { + m35E8 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } + f32 dVar2 = cLib_addCalc(&mVelocity, 0.0f, m35A0, m35A4, m35A8); + if (dVar2 <= 0.001f) { + if (mProcVar0.m3570 != 0) { + return procNockBackEnd_init(); + } + if (m34D0 == 0) { + return procCrouchDefense_init(); + } + } else { + if (mVelocity < m35AC) { + resetFootEffect(); + } + } + return true; } /* 801143D4-80114440 .text procCrouch_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procCrouch_init() { - /* Nonmatching */ + commonProcInit(daPyProc_CROUCH_e); + setSingleMoveAnime(ANM_CROUCH, daPy_HIO_crouch_c0::m.field_0x18, 0.0f, -1, + daPy_HIO_crouch_c0::m.field_0x1C); + deleteEquipItem(FALSE); + current.angle.y = shape_angle.y; + return true; } /* 80114440-8011476C .text procCrouch__9daPy_lk_cFv */ @@ -2514,72 +3472,265 @@ BOOL daPy_lk_c::procCrouch() { /* 8011476C-80114804 .text procWaitTurn_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWaitTurn_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_WAIT_TURN_e) { + return false; + } + commonProcInit(daPyProc_WAIT_TURN_e); + setSingleMoveAnime(ANM_ROT, daPy_HIO_basic_c0::m.field_0x4, 0.0f, -1, + daPy_HIO_basic_c0::m.field_0xC); + if (dComIfGp_event_runCheck()) { + mVelocity = 0.0f; + } + m34D4 = m34E8; + current.angle.y = shape_angle.y; + return true; } /* 80114804-80114908 .text procWaitTurn__9daPy_lk_cFv */ BOOL daPy_lk_c::procWaitTurn() { - /* Nonmatching */ + cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_move_c0::m.field_0x24, daPy_HIO_move_c0::m.field_0x1C, + daPy_HIO_move_c0::m.field_0x20); + if (changeSlideProc()) { + return true; + } + s16 sVar1 = cLib_addCalcAngleS(&shape_angle.y, m34D4, daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, daPy_HIO_turn_c0::m.field_0x2); + current.angle.y = shape_angle.y; + if (checkNextActionFromButton()) { + return true; + } + if (sVar1 == 0) { + if (dComIfGp_event_runCheck()) { + if (mDemo.getDemoMode() == 5) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } else { + checkNextMode(0); + } + } else { + checkNextMode(0); + } + } + return true; } /* 80114908-801149EC .text procMoveTurn_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procMoveTurn_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procMoveTurn_init(int param_1) { + if (mCurProc == daPyProc_MOVE_TURN_e) { + return false; + } + commonProcInit(daPyProc_MOVE_TURN_e); + setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); + dComIfGp_setPlayerStatus0(0, daPyStts0_UNK800_e); + if (param_1 != 0) { + m34D4 = (daPy_HIO_move_c0::m.field_0x0 * 4) + 0x4A56; + m34D6 = daPy_HIO_move_c0::m.field_0x0 * 2; + m34D0 = 2; + current.angle.y = m34E8; + mVelocity *= 0.5f; + } else { + m34D4 = daPy_HIO_move_c0::m.field_0x0 * 2; + m34D6 = daPy_HIO_move_c0::m.field_0x0; + m34D0 = 3; + } + return true; } /* 801149EC-80114A60 .text procMoveTurn__9daPy_lk_cFv */ BOOL daPy_lk_c::procMoveTurn() { - /* Nonmatching */ + setSpeedAndAngleNormal(daPy_HIO_move_c0::m.field_0x0); + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, m34D0, m34D4, m34D6); + if (!checkNextMode(0)) { + setBlendMoveAnime(-1.0f); + } + return true; } /* 80114A60-80114B28 .text procSlip_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlip_init() { - /* Nonmatching */ + commonProcInit(daPyProc_SLIP_e); + daPy_matAnm_c::offMabaFlg(); + setSingleMoveAnime(ANM_SLIP, daPy_HIO_slip_c0::m.field_0xC, 0.0f, -1, + daPy_HIO_slip_c0::m.field_0x1C); + mVelocity = speedF * daPy_HIO_slip_c0::m.field_0x8; + if (daPy_HIO_slip_c0::m.field_0x0 == 1) { + mVelocity = mMaxNormalSpeed; + } else if ((daPy_HIO_slip_c0::m.field_0x0 == 2) && (mVelocity > mMaxNormalSpeed)) { + mVelocity = mMaxNormalSpeed; + } + m34BE = 2; + seStartMapInfo(JA_SE_LK_RUN_SLIP); + return true; } /* 80114B28-80114D2C .text procSlip__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlip() { - /* Nonmatching */ + f32 dVar5 = cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_slip_c0::m.field_0x18, + daPy_HIO_slip_c0::m.field_0x10, daPy_HIO_slip_c0::m.field_0x14); + if (dVar5 <= 0.001f) { + if (mStickDistance > 0.05f) { + current.angle.y = shape_angle.y + 0x8000; + shape_angle.y = shape_angle.y + 0x100; + mVelocity = mMaxNormalSpeed * 0.5f; + procMoveTurn_init(0); + } else { + checkNextMode(0); + } + } else if (mAcch.ChkWallHit()) { + mVelocity = 0.0f; + checkNextMode(0); + return true; + } else { + if (mVelocity < daPy_HIO_slip_c0::m.field_0x20) { + resetFootEffect(); + } + cXyz local_1c; + cXyz local_28; + local_1c = current.pos; + local_1c.y += 2.5f; + local_28.x = local_1c.x + 50.0f * cM_ssin(current.angle.y); + local_28.y = local_1c.y; + local_28.z = local_1c.z + 50.0f * cM_scos(current.angle.y); + mLinkLinChk.Set(&local_1c, &local_28, this); + if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) { + cM3dGPla* iVar3 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + bool bVar2; + if (!(iVar3->GetNP()->y >= 0.5f) && !(iVar3->GetNP()->y < -0.8f)) { + bVar2 = true; + } else { + bVar2 = false; + } + if (bVar2) { + mVelocity = 0.0f; + checkNextMode(0); + } + } + } + return true; } /* 80114D2C-80114DE4 .text procSlideFront_init__9daPy_lk_cFs */ -BOOL daPy_lk_c::procSlideFront_init(s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procSlideFront_init(s16 param_1) { + if ((mCurProc == daPyProc_SLIDE_FRONT_e) || (mCurProc == daPyProc_SLIDE_BACK_e)) { + return false; + } + commonProcInit(daPyProc_SLIDE_FRONT_e); + m3526 = 8; + current.angle.y = param_1; + setSingleMoveAnime(ANM_SLIDEF, daPy_HIO_slide_c0::m.field_0xC, daPy_HIO_slide_c0::m.field_0x10, + daPy_HIO_slide_c0::m.field_0x0, daPy_HIO_slide_c0::m.field_0x14); + mMaxNormalSpeed = daPy_HIO_slide_c0::m.field_0x44; + m34BE = 4; + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK100_e); + return true; } /* 80114DE4-80114EE8 .text procSlideFront__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideFront() { - /* Nonmatching */ + cM3dGPla* pfVar2 = getSlidePolygon(); + if (pfVar2 != NULL) { + s16 iVar3 = cM_atan2s(pfVar2->GetNP()->x, pfVar2->GetNP()->z); + cLib_addCalcAngleS(¤t.angle.y, iVar3, 4, 0x1000, 0x400); + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 4, 0x1000, 0x400); + mVelocity += (1.0f + 0.5f * (1.0f - pfVar2->GetNP()->y)) * daPy_HIO_slide_c0::m.field_0x48 * + cM_scos(current.angle.y - iVar3); + if (mVelocity > mMaxNormalSpeed) { + mVelocity = mMaxNormalSpeed; + } + seStartMapInfo(JA_SE_LK_SLIP_SUS); + } else { + procSlideFrontLand_init(); + } + return true; } /* 80114EE8-80114FA0 .text procSlideBack_init__9daPy_lk_cFs */ -BOOL daPy_lk_c::procSlideBack_init(s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procSlideBack_init(s16 param_1) { + if ((mCurProc == daPyProc_SLIDE_BACK_e) || (mCurProc == daPyProc_SLIDE_FRONT_e)) { + return false; + } + commonProcInit(daPyProc_SLIDE_BACK_e); + m3526 = 8; + current.angle.y = param_1; + setSingleMoveAnime(ANM_SLIDEB, daPy_HIO_slide_c0::m.field_0x18, daPy_HIO_slide_c0::m.field_0x1C, + daPy_HIO_slide_c0::m.field_0x2, daPy_HIO_slide_c0::m.field_0x20); + mMaxNormalSpeed = daPy_HIO_slide_c0::m.field_0x44; + m34BE = 3; + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK200_e); + return true; } /* 80114FA0-801150B0 .text procSlideBack__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideBack() { - /* Nonmatching */ + cM3dGPla* pfVar2 = getSlidePolygon(); + if (pfVar2 != NULL) { + s16 iVar3 = cM_atan2s(pfVar2->GetNP()->x, pfVar2->GetNP()->z); + cLib_addCalcAngleS(¤t.angle.y, iVar3, 4, 0x1000, 0x400); + cLib_addCalcAngleS(&shape_angle.y, current.angle.y + 0x8000, 4, 0x1000, 0x400); + mVelocity += (1.0f + 0.5f * (1.0f - pfVar2->GetNP()->y)) * daPy_HIO_slide_c0::m.field_0x48 * + cM_scos(current.angle.y - iVar3); + if (mVelocity > mMaxNormalSpeed) { + mVelocity = mMaxNormalSpeed; + } + seStartMapInfo(JA_SE_LK_SLIP_SUS); + } else { + procSlideBackLand_init(); + } + return true; } /* 801150B0-80115118 .text procSlideFrontLand_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideFrontLand_init() { - /* Nonmatching */ + commonProcInit(daPyProc_SLIDE_FRONT_LAND_e); + setSingleMoveAnime(ANM_SLIDEFLAND, daPy_HIO_slide_c0::m.field_0x24, + daPy_HIO_slide_c0::m.field_0x28, daPy_HIO_slide_c0::m.field_0x4, + daPy_HIO_slide_c0::m.field_0x30); + mVelocity *= 0.5f; + return true; } /* 80115118-801151C8 .text procSlideFrontLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideFrontLand() { - /* Nonmatching */ + cLib_addCalc(&mVelocity, 0.0f, 0.5f, 5.0f, 1.0f); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + current.angle.y = shape_angle.y; + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_slide_c0::m.field_0x2C) { + s16 sVar1 = current.angle.y; + current.angle.y = shape_angle.y; + if (!checkNextMode(1)) { + current.angle.y = sVar1; + } + } + } + return true; } /* 801151C8-80115220 .text procSlideBackLand_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideBackLand_init() { - /* Nonmatching */ + commonProcInit(daPyProc_SLIDE_BACK_LAND_e); + setSingleMoveAnime(ANM_SLIDEBLAND, daPy_HIO_slide_c0::m.field_0x34, + daPy_HIO_slide_c0::m.field_0x38, daPy_HIO_slide_c0::m.field_0x6, + daPy_HIO_slide_c0::m.field_0x40); + return true; } /* 80115220-801152D0 .text procSlideBackLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlideBackLand() { - /* Nonmatching */ + cLib_addCalc(&mVelocity, 0.0f, 0.5f, 5.0f, 1.0f); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + current.angle.y = shape_angle.y; + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_slide_c0::m.field_0x3C) { + s16 sVar1 = current.angle.y; + current.angle.y = shape_angle.y; + if (!checkNextMode(1)) { + current.angle.y = sVar1; + } + } + } + return true; } /* 801152D0-80115478 .text procFrontRoll_init__9daPy_lk_cFf */ @@ -2594,52 +3745,208 @@ BOOL daPy_lk_c::procFrontRoll() { /* 80115628-801157D8 .text procFrontRollCrash_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procFrontRollCrash_init() { - /* Nonmatching */ + commonProcInit(daPyProc_FRONT_ROLL_CRASH_e); + setSingleMoveAnime(ANM_ROLLFMIS, 0.0f, daPy_HIO_roll_c0::m.field_0x28, + daPy_HIO_roll_c0::m.field_0x2, daPy_HIO_roll_c0::m.field_0x2C); + mVelocity = speedF * daPy_HIO_roll_c0::m.field_0x40; + speed.y = daPy_HIO_roll_c0::m.field_0x44; + offNoResetFlg0(daPyFlg0_UNK8); + current.angle.y += 0x8000; + dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + voiceStart(8); + mDoAud_seStart(JA_SE_LK_BODYATTACK, ¤t.pos, m3620, mReverb); + onResetFlg0(daPyRFlg0_FRONT_ROLL_CRASH); + dKy_Sound_set(current.pos, 100, fopAcM_GetID(this), 5); + if ((mAcch.ChkWallHit()) && (mAcchCir[0].ChkWallHit())) { + daObjMovebox::Act_c* iVar1 = + (daObjMovebox::Act_c*)dComIfG_Bgsp()->GetActorPointer(mAcchCir[0].GetBgIndex()); + if ((iVar1 != 0) && (fopAcM_GetName(iVar1) == PROC_Obj_Movebox) && + ((iVar1->mType == 0) || (iVar1->mType == 5))) + { + iVar1->mbRollCrash = 1; + } + } + return true; } /* 801157D8-801158AC .text procFrontRollCrash__9daPy_lk_cFv */ BOOL daPy_lk_c::procFrontRollCrash() { - /* Nonmatching */ + if (!checkModeFlg(ModeFlg_MIDAIR)) { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_roll_c0::m.field_0x30) { + checkNextMode(1); + } + } + } + if ((mAcch.ChkGroundHit()) && (checkModeFlg(ModeFlg_MIDAIR))) { + mVelocity = 0.0f; + mFrameCtrlUnder[UNDER_MOVE0_e].mRate = daPy_HIO_roll_c0::m.field_0x24; + voiceStart(9); + offModeFlg(ModeFlg_MIDAIR); + onModeFlg(ModeFlg_00008000); + } + return true; } /* 801158AC-8011590C .text procNockBackEnd_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procNockBackEnd_init() { - /* Nonmatching */ + commonProcInit(daPyProc_NOCK_BACK_END_e); + setSingleMoveAnime(ANM_ROLLFMIS, daPy_HIO_nockback_c0::m.field_0x2C, + daPy_HIO_nockback_c0::m.field_0x30, daPy_HIO_nockback_c0::m.field_0x4, + daPy_HIO_nockback_c0::m.field_0x34); + mVelocity = 0.0f; + return true; } /* 8011590C-80115968 .text procNockBackEnd__9daPy_lk_cFv */ BOOL daPy_lk_c::procNockBackEnd() { - /* Nonmatching */ + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_nockback_c0::m.field_0x38) { + checkNextMode(1); + } + } + return true; } /* 80115968-80115A18 .text procSideRoll_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSideRoll_init() { - /* Nonmatching */ + daPy_ANM dVar2; + + commonProcInit(daPyProc_SIDE_ROLL_e); + if ((s16)(current.angle.y - shape_angle.y) > 0) { + dVar2 = ANM_MROLLL; + } else { + dVar2 = ANM_MROLLR; + } + setSingleMoveAnime(dVar2, daPy_HIO_fall_c0::m.field_0x3C, daPy_HIO_fall_c0::m.field_0x40, + daPy_HIO_fall_c0::m.field_0x8, daPy_HIO_fall_c0::m.field_0x48); + mVelocity = daPy_HIO_fall_c0::m.field_0x4C; + if (checkHeavyStateOn()) { + mVelocity *= daPy_HIO_move_c0::m.field_0x80; + } + m34BE = 4; + return true; } /* 80115A18-80115B08 .text procSideRoll__9daPy_lk_cFv */ BOOL daPy_lk_c::procSideRoll() { - /* Nonmatching */ + s16 sVar1; + f32 dVar3; + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + + if (frameCtrl.getRate() < 0.01f) { + current.angle.y = shape_angle.y; + if (mStickDistance <= 0.05f) { + mVelocity = 0.0f; + } + checkNextMode(0); + } else { + if (frameCtrl.checkPass(10.0f)) { + endFlameDamageEmitter(); + } else { + if (frameCtrl.getFrame() > daPy_HIO_fall_c0::m.field_0x44) { + sVar1 = current.angle.y; + dVar3 = mVelocity; + current.angle.y = shape_angle.y; + if (!checkNextMode(1)) { + current.angle.y = sVar1; + mVelocity = dVar3; + } + } + } + } + return true; } /* 80115B08-80115BFC .text procBackJump_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procBackJump_init() { - /* Nonmatching */ + float fVar1; + + if (mCurProc == daPyProc_BACK_JUMP_e) { + return false; + } + commonProcInit(daPyProc_BACK_JUMP_e); + if (checkHeavyStateOn()) { + mVelocity = 0.5f * daPy_HIO_backJump_c0::m.field_0x10; + fVar1 = 1.5f * daPy_HIO_backJump_c0::m.field_0x4; + } else { + mVelocity = daPy_HIO_backJump_c0::m.field_0x10; + fVar1 = daPy_HIO_backJump_c0::m.field_0x4; + } + setSingleMoveAnime(ANM_ROLLB, fVar1, daPy_HIO_backJump_c0::m.field_0x8, + daPy_HIO_backJump_c0::m.field_0x0, daPy_HIO_backJump_c0::m.field_0xC); + speed.y = daPy_HIO_backJump_c0::m.field_0x14; + gravity = daPy_HIO_backJump_c0::m.field_0x18; + current.angle.y = shape_angle.y + 0x8000; + voiceStart(7); + return true; } /* 80115BFC-80115CA0 .text procBackJump__9daPy_lk_cFv */ BOOL daPy_lk_c::procBackJump() { - /* Nonmatching */ + if ((mAcch.ChkGroundHit()) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) { + procBackJumpLand_init(); + } else { + if (checkFanGlideProc(0)) { + return true; + } + if (current.pos.y < m3688.y - daPy_HIO_backJump_c0::m.field_0x1C) { + procFall_init(2, daPy_HIO_backJump_c0::m.field_0x20); + } + } + checkItemChangeFromButton(); + return true; } /* 80115CA0-80115DA8 .text procBackJumpLand_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procBackJumpLand_init() { - /* Nonmatching */ + commonProcInit(daPyProc_BACK_JUMP_LAND_e); + mVelocity = 0.0f; + setSingleMoveAnime(ANM_ROLLBLAND, daPy_HIO_backJump_c0::m.field_0x24, + daPy_HIO_backJump_c0::m.field_0x28, daPy_HIO_backJump_c0::m.field_0x2, + daPy_HIO_backJump_c0::m.field_0x2C); + m34BE = 3; + onResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); + onResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); + current.angle.y = shape_angle.y; + if (checkHeavyStateOn()) { + dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + } + if ((((mEquipItem == daPyItem_SWORD_e) || (mEquipItem == daPyItem_BOKO_e)) && + (daPy_dmEcallBack_c::m_type != 1)) && + (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xFFFF)) + { + mProcVar0.m3570 = 1; + } else { + mProcVar0.m3570 = 0; + } + return true; } /* 80115DA8-80115E88 .text procBackJumpLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procBackJumpLand() { - /* Nonmatching */ + resetFootEffect(); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (dComIfGp_event_runCheck()) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } else { + checkNextMode(0); + } + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_backJump_c0::m.field_0x30) { + checkNextMode(1); + } else { + if (mProcVar0.m3570 != 0) { + mProcVar0.m3570 = 0; + if ((abs(m3578) > 0xf800) && (mEquipItem == daPyItem_SWORD_e)) { + procCutTurn_init(1); + } + } + } + return true; } /* 80115E88-80115EA4 .text checkAutoJumpFlying__9daPy_lk_cCFv */ @@ -2658,23 +3965,105 @@ BOOL daPy_lk_c::procAutoJump() { } /* 801163D4-8011651C .text procLand_init__9daPy_lk_cFfi */ -BOOL daPy_lk_c::procLand_init(f32, int) { - /* Nonmatching */ +BOOL daPy_lk_c::procLand_init(f32 param_1, int param_2) { + commonProcInit(daPyProc_LAND_e); + mVelocity = 0.0f; + if (param_2 != 0) { + setSingleMoveAnime(ANM_JMPEDS, param_1, daPy_HIO_fan_c0::m.field_0x54, + daPy_HIO_fan_c0::m.field_0x6, daPy_HIO_fan_c0::m.field_0x58); + } else { + setSingleMoveAnime(ANM_JMPEDS, param_1, daPy_HIO_autoJump_c0::m.field_0x28, + daPy_HIO_autoJump_c0::m.field_0x4, daPy_HIO_autoJump_c0::m.field_0x34); + } + m34BE = 3; + onResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); + onResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); + if (current.angle.y != shape_angle.y) { + if (cLib_distanceAngleS(current.angle.y, shape_angle.y) > 0x6000) { + current.angle.y = shape_angle.y; + } else { + current.angle.y = current.angle.y + 0x8000; + } + } + if (checkHeavyStateOn()) { + dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + } + return true; } /* 8011651C-801165B4 .text procLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procLand() { - /* Nonmatching */ + resetFootEffect(); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (mDemo.getDemoMode() == 0x40) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } else { + checkNextMode(0); + } + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_autoJump_c0::m.field_0x40) { + checkNextMode(1); + } + return true; } /* 801165B4-80116768 .text procLandDamage_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procLandDamage_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procLandDamage_init(int param_1) { + if (param_1 == 2) { + if (!dComIfGp_event_runCheck()) { + setDamagePoint(-2.0f); + } + dComIfGp_getVibration().StartShock(7, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + } else if (param_1 == 1) { + if (!dComIfGp_event_runCheck()) { + setDamagePoint(-1.0f); + } + dComIfGp_getVibration().StartShock(5, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + } else { + dComIfGp_getVibration().StartShock(2, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + } + commonProcInit(daPyProc_LAND_DAMAGE_e); + mVelocity = 0.0f; + if (param_1 == 0) { + m34D0 = daPy_HIO_fall_c0::m.field_0xC; + offModeFlg(ModeFlg_DAMAGE); + } else { + m34D0 = daPy_HIO_fall_c0::m.field_0x2; + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + } + setSingleMoveAnime(ANM_LANDDAMA, daPy_HIO_fall_c0::m.field_0x1C, daPy_HIO_fall_c0::m.field_0x20, + daPy_HIO_fall_c0::m.field_0x4, daPy_HIO_fall_c0::m.field_0x24); + mProcVar0.m3570 = 0; + seStartOnlyReverb(JA_SE_LK_FALL_DAMAGE); + voiceStart(13); + m34BE = 5; + return true; } /* 80116768-80116864 .text procLandDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procLandDamage() { - /* Nonmatching */ + resetFootEffect(); + if (mProcVar0.m3570 != 0) { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_fall_c0::m.field_0x30) { + checkNextMode(1); + } + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (m34D0 > 0) { + m34D0--; + } else { + f32 fVar1; + if (checkModeFlg(ModeFlg_DAMAGE)) { + fVar1 = daPy_HIO_fall_c0::m.field_0x28; + } else { + fVar1 = daPy_HIO_fall_c0::m.field_0x50; + } + setSingleMoveAnime(ANM_LANDDAMAST, fVar1, daPy_HIO_fall_c0::m.field_0x2C, + daPy_HIO_fall_c0::m.field_0x6, daPy_HIO_fall_c0::m.field_0x34); + mProcVar0.m3570 = 1; + } + } + return true; } /* 80116864-80116A38 .text procFall_init__9daPy_lk_cFif */ @@ -2689,37 +4078,115 @@ BOOL daPy_lk_c::procFall() { /* 80116C14-80116CC4 .text procSlowFall_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlowFall_init() { - /* Nonmatching */ + if (mCurProc == daPyProc_SLOW_FALL_e) { + return true; + } + commonProcInit(daPyProc_SLOW_FALL_e); + maxFallSpeed = -20.0f; + mVelocity = 0.0f; + setSingleMoveAnime(ANM_MSTEPOVER_JMPED, 0.0f, 0.0f, -1, daPy_HIO_basic_c0::m.field_0xC); + mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getEnd() - 0.001f); + mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame( + mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + return true; } /* 80116CC4-80116D3C .text procSlowFall__9daPy_lk_cFv */ BOOL daPy_lk_c::procSlowFall() { - /* Nonmatching */ + /* Nonmatching - floats */ + if (current.pos.y - mAcch.GetGroundH() < 200.0f) { + cLib_chaseF(&maxFallSpeed, -5.0f, 1.0f); + } + if (mAcch.ChkGroundHit()) { + procLand_init(daPy_HIO_fan_c0::m.field_0x50, 1); + } + return true; } /* 80116D3C-80116EB4 .text procSmallJump_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procSmallJump_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procSmallJump_init(int param_1) { + /* Nonmatching - floats */ + commonProcInit(daPyProc_SMALL_JUMP_e); + setSingleMoveAnime(ANM_JMPST, daPy_HIO_smallJump_c0::m.field_0x4, + daPy_HIO_smallJump_c0::m.field_0x8, daPy_HIO_smallJump_c0::m.field_0x0, + daPy_HIO_smallJump_c0::m.field_0xC); + if (param_1 == 0) { + mVelocity = daPy_HIO_smallJump_c0::m.field_0x10; + speed.y = std::sqrtf( + -gravity * ((m3724.y - current.pos.y) + daPy_HIO_smallJump_c0::m.field_0x14) * 2.0f); + mProcVar0.m3570 = 2; + } else { + mVelocity = 2.0f * daPy_HIO_smallJump_c0::m.field_0x10; + speed.y = 20.0f; + mProcVar0.m3570 = 0; + } + if (checkHeavyStateOn()) { + gravity *= 0.44444445f; + } + voiceStart(5); + return true; } /* 80116EB4-80116F54 .text procSmallJump__9daPy_lk_cFv */ BOOL daPy_lk_c::procSmallJump() { - /* Nonmatching */ + if (mAcch.ChkGroundHit()) { + changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24); + } else if (checkFanGlideProc(0)) { + return true; + } else if (speed.y < -gravity) { + procFall_init(mProcVar0.m3570, daPy_HIO_smallJump_c0::m.field_0x18); + setTextureAnime(0x37, 0); + } + return true; } /* 80116F54-80116FEC .text procVerticalJump_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procVerticalJump_init() { - /* Nonmatching */ + commonProcInit(daPyProc_VERTICAL_JUMP_e); + setSingleMoveAnime(ANM_VJMP, daPy_HIO_wallCatch_c0::m.field_0x3C, 0.0f, + daPy_HIO_wallCatch_c0::m.field_0x6, daPy_HIO_wallCatch_c0::m.field_0x40); + m34D0 = 0; + m34D4 = m352C + 0x8000; + if (mFrontWallType == 9) { + mProcVar0.m3570 = 1; + } else { + mProcVar0.m3570 = 0; + } + mVelocity = 0.0f; + speed.y = 0.0f; + return true; } /* 80116FEC-80117088 .text procVerticalJump__9daPy_lk_cFv */ BOOL daPy_lk_c::procVerticalJump() { - /* Nonmatching */ + int iVar1; + + cLib_addCalcAngleS(&shape_angle.y, m34D4, 2, 0x1000, 0x400); + current.angle.y = shape_angle.y; + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + shape_angle.y = m34D4; + current.angle.y = shape_angle.y; + if (mProcVar0.m3570 != 0) { + iVar1 = procHangStart_init(); + } else { + iVar1 = procHangWallCatch_init(); + } + if (iVar1 == 0) { + procWait_init(); + } + } + return true; } /* 80117088-801170F0 .text procGuardCrash__9daPy_lk_cFv */ BOOL daPy_lk_c::procGuardCrash() { - /* Nonmatching */ + cLib_addCalc(&mVelocity, 0.0f, 0.5f, 1.25f, 0.25f); + if (m34D0 > 0) { + m34D0--; + } else { + checkNextMode(0); + } + return true; } /* 801170F0-80117448 .text procDamage_init__9daPy_lk_cFv */ @@ -2734,12 +4201,23 @@ BOOL daPy_lk_c::procDamage() { /* 801176FC-80117794 .text procPolyDamage_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procPolyDamage_init() { - /* Nonmatching */ + commonProcInit(daPyProc_POLY_DAMAGE_e); + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + setSingleMoveAnime(ANM_DAM, daPy_HIO_damage_c0::m.field_0x30, daPy_HIO_damage_c0::m.field_0x34, + daPy_HIO_damage_c0::m.field_0x4, daPy_HIO_damage_c0::m.field_0x38); + mVelocity = 0.0f; + voiceStart(2); + seStartOnlyReverb(JA_SE_LK_DAMAGE_NORMAL); + offNoResetFlg0(daPyFlg0_UNK2); + return true; } /* 80117794-801177CC .text procPolyDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procPolyDamage() { - /* Nonmatching */ + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } + return true; } /* 801177CC-80117EAC .text procLargeDamage_init__9daPy_lk_cFiiss */ @@ -2753,108 +4231,758 @@ BOOL daPy_lk_c::procLargeDamage() { } /* 8011810C-80118504 .text procLargeDamageUp_init__9daPy_lk_cFiiss */ -BOOL daPy_lk_c::procLargeDamageUp_init(int, int, s16, s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procLargeDamageUp_init(int param_1, int param_2, s16 param_3, s16 param_4) { + daPy_ANM dVar4; + short sVar3; + f32 dVar7; + f32 dVar6; + f32 dVar5; + + if (mCurProc == daPyProc_LARGE_DAMAGE_UP_e) { + return false; + } + commonProcInit(daPyProc_LARGE_DAMAGE_UP_e); + if (param_1 == -3) { + dVar4 = ANM_DAMFFUP; + dVar6 = 0.0f; + sVar3 = -1; + dVar5 = 5.0f; + dVar7 = 0.5f; + m34D0 = 0; + m35A0 = 36.0f; + } else if ((param_1 == -1) || (param_1 == -2)) { + dVar4 = ANM_DAMFBUP; + dVar6 = 7.0f; + sVar3 = -1; + dVar5 = daPy_HIO_laDamage_c0::m.field_0x40; + m35A0 = 36.0f; + if (param_1 == -1) { + m34D0 = 0x1e; + dVar7 = 0.0f; + } else { + m34D0 = 0; + dVar7 = 0.5f; + } + } else if ((param_1 == -4) || (dComIfGp_evmng_startCheck("ICE_FAILED"))) { + dVar4 = ANM_DAMFBUP; + dVar7 = 0.0f; + dVar6 = 7.0f; + sVar3 = daPy_HIO_huDamage_c0::m.field_0x6; + dVar5 = daPy_HIO_huDamage_c0::m.field_0x40; + m35A0 = daPy_HIO_huDamage_c0::m.field_0x3C; + if (param_1 == -4) { + m34D0 = 0x28; + } else { + m34D0 = 30000; + dProcFreezeDamage_init_sub(0); + } + m34BE = 6; + dComIfGp_getVibration().StartShock(6, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + seStartMapInfo(JA_SE_LK_FALL_DOWN); + } else { + m34D0 = 0; + m34BE = 6; + dComIfGp_getVibration().StartShock(6, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + seStartMapInfo(JA_SE_LK_FALL_DOWN); + if (param_1 == ANM_DAMFB) { + dVar4 = ANM_DAMFBUP; + if (param_2 != 0) { + dVar7 = daPy_HIO_laDamage_c0::m.field_0x34; + dVar6 = daPy_HIO_laDamage_c0::m.field_0x38; + sVar3 = daPy_HIO_laDamage_c0::m.field_0x6; + dVar5 = daPy_HIO_laDamage_c0::m.field_0x40; + m35A0 = daPy_HIO_laDamage_c0::m.field_0x3C; + } else { + dVar7 = daPy_HIO_huDamage_c0::m.field_0x34; + dVar6 = daPy_HIO_huDamage_c0::m.field_0x38; + sVar3 = daPy_HIO_huDamage_c0::m.field_0x6; + dVar5 = daPy_HIO_huDamage_c0::m.field_0x40; + m35A0 = daPy_HIO_huDamage_c0::m.field_0x3C; + } + } else if (param_1 == ANM_DAMFL) { + dVar4 = ANM_DAMFLUP; + if (param_2 != 0) { + dVar7 = daPy_HIO_laDamage_c0::m.field_0x44; + dVar6 = daPy_HIO_laDamage_c0::m.field_0x48; + sVar3 = daPy_HIO_laDamage_c0::m.field_0x8; + dVar5 = daPy_HIO_laDamage_c0::m.field_0x50; + m35A0 = daPy_HIO_laDamage_c0::m.field_0x4C; + } else { + dVar7 = daPy_HIO_huDamage_c0::m.field_0x44; + dVar6 = daPy_HIO_huDamage_c0::m.field_0x48; + sVar3 = daPy_HIO_huDamage_c0::m.field_0x8; + dVar5 = daPy_HIO_huDamage_c0::m.field_0x50; + m35A0 = daPy_HIO_huDamage_c0::m.field_0x4C; + } + } else if (param_1 == ANM_DAMFR) { + dVar4 = ANM_DAMFRUP; + if (param_2 != 0) { + dVar7 = daPy_HIO_laDamage_c0::m.field_0x54; + dVar6 = daPy_HIO_laDamage_c0::m.field_0x58; + sVar3 = daPy_HIO_laDamage_c0::m.field_0xA; + dVar5 = daPy_HIO_laDamage_c0::m.field_0x60; + m35A0 = daPy_HIO_laDamage_c0::m.field_0x5C; + } else { + dVar7 = daPy_HIO_huDamage_c0::m.field_0x54; + dVar6 = daPy_HIO_huDamage_c0::m.field_0x58; + sVar3 = daPy_HIO_huDamage_c0::m.field_0xA; + dVar5 = daPy_HIO_huDamage_c0::m.field_0x60; + m35A0 = daPy_HIO_huDamage_c0::m.field_0x5C; + } + } else { + dVar4 = ANM_DAMFFUP; + if (param_2 != 0) { + dVar7 = daPy_HIO_laDamage_c0::m.field_0x24; + dVar6 = daPy_HIO_laDamage_c0::m.field_0x28; + sVar3 = daPy_HIO_laDamage_c0::m.field_0x4; + dVar5 = daPy_HIO_laDamage_c0::m.field_0x30; + m35A0 = daPy_HIO_laDamage_c0::m.field_0x2C; + } else { + dVar7 = daPy_HIO_huDamage_c0::m.field_0x24; + dVar6 = daPy_HIO_huDamage_c0::m.field_0x28; + sVar3 = daPy_HIO_huDamage_c0::m.field_0x4; + dVar5 = daPy_HIO_huDamage_c0::m.field_0x30; + m35A0 = daPy_HIO_huDamage_c0::m.field_0x2C; + } + } + } + m35E4 = 1.0f; + if (dComIfGs_getLife() == 0) { + sVar3 = -1; + } + m35A4 = 2.0f / (m35A0 - dVar6); + setSingleMoveAnime(dVar4, dVar7, dVar6, sVar3, dVar5); + setOldRootQuaternion(param_3, 0, param_4); + mVelocity = 0.0f; + current.angle.y = shape_angle.y; + mProcVar0.m3570 = param_1; + return true; } /* 80118504-80118640 .text procLargeDamageUp__9daPy_lk_cFv */ BOOL daPy_lk_c::procLargeDamageUp() { - /* Nonmatching */ + m35E4 = m35A4 * (m35A0 - mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + resetFootEffect(); + if (m34D0 > 0) { + if (!dComIfGp_evmng_startCheck("ICE_FAILED")) { + m34D0--; + } else { + dComIfGp_evmng_cutEnd(mStaffIdx); + } + if ((m34D0 == 0) || + ((mProcVar0.m3570 == -4 && (g_mDoCPd_cpadInfo[0].mMainStickValue > 0.05f)))) + { + mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.5f); + } + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + if (dComIfGp_event_runCheck() != 0) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } else { + checkNextMode(0); + } + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > m35A0) { + checkNextMode(1); + } + return true; } /* 80118640-801189AC .text procLargeDamageWall_init__9daPy_lk_cFiiss */ -BOOL daPy_lk_c::procLargeDamageWall_init(int, int, s16, s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procLargeDamageWall_init(int param_1, int param_2, s16 param_3, s16 param_4) { + /* Nonmatching - branching */ + float fVar1; + float fVar2; + short sVar3; + bool bVar4; + float fVar5; + s16 sVar6; + s16 sVar7; + short sVar10; + + if (mCurProc == 0x6a) { + return false; + } + cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk); + sVar6 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z); + if (!(param_1 < 0)) { + if (!(triPla->GetNP()->y >= 0.5f) && !(triPla->GetNP()->y < -0.8f)) { + bVar4 = true; + } else { + bVar4 = false; + } + if ((bVar4) && (cLib_distanceAngleS(sVar6, current.angle.y + -0x8000) > 0x1555)) { + return false; + } + } + commonProcInit(daPyProc_LARGE_DAMAGE_WALL_e); + sVar7 = cM_atan2s(triPla->GetNP()->y, triPla->GetNP()->absXZ()); + current.angle.y = sVar6; + current.pos.x = mLinkLinChk.GetCrossP()->x; + current.pos.z = mLinkLinChk.GetCrossP()->z; + setOldRootQuaternion(param_3, 0, param_4); + sVar3 = sVar7; + if (param_1 == 0x5c) { + mProcVar0.mDamageAnm = ANM_DAMFBUP; + if (param_2) { + fVar1 = daPy_HIO_laDamage_c0::m.field_0x74; + fVar2 = daPy_HIO_laDamage_c0::m.field_0x78; + sVar10 = daPy_HIO_laDamage_c0::m.field_0xE; + fVar5 = daPy_HIO_laDamage_c0::m.field_0x7C; + } else { + fVar1 = daPy_HIO_huDamage_c0::m.field_0x74; + fVar2 = daPy_HIO_huDamage_c0::m.field_0x78; + sVar10 = daPy_HIO_huDamage_c0::m.field_0xE; + fVar5 = daPy_HIO_huDamage_c0::m.field_0x7C; + } + m34F2 = sVar3 + -0x4000; + m34D0 = 0; + } else if (param_1 == 0x59) { + mProcVar0.mDamageAnm = ANM_DAMFLUP; + if (param_2) { + fVar1 = daPy_HIO_laDamage_c0::m.field_0x80; + fVar2 = daPy_HIO_laDamage_c0::m.field_0x84; + sVar10 = daPy_HIO_laDamage_c0::m.field_0x10; + fVar5 = daPy_HIO_laDamage_c0::m.field_0x88; + } else { + fVar1 = daPy_HIO_huDamage_c0::m.field_0x80; + fVar2 = daPy_HIO_huDamage_c0::m.field_0x84; + sVar10 = daPy_HIO_huDamage_c0::m.field_0x10; + fVar5 = daPy_HIO_huDamage_c0::m.field_0x88; + } + m34F4 = sVar3 + -0x4000; + m34D0 = 1; + } else if (param_1 == 0x5a) { + mProcVar0.mDamageAnm = ANM_DAMFRUP; + if (param_2) { + fVar1 = daPy_HIO_laDamage_c0::m.field_0x8C; + fVar2 = daPy_HIO_laDamage_c0::m.field_0x90; + sVar10 = daPy_HIO_laDamage_c0::m.field_0x12; + fVar5 = daPy_HIO_laDamage_c0::m.field_0x94; + } else { + fVar1 = daPy_HIO_huDamage_c0::m.field_0x8C; + fVar2 = daPy_HIO_huDamage_c0::m.field_0x90; + sVar10 = daPy_HIO_huDamage_c0::m.field_0x12; + fVar5 = daPy_HIO_huDamage_c0::m.field_0x94; + } + m34F4 = 0x4000 - sVar3; + m34D0 = 1; + } else { + mProcVar0.mDamageAnm = ANM_DAMFFUP; + if (param_2) { + fVar1 = daPy_HIO_laDamage_c0::m.field_0x68; + fVar2 = daPy_HIO_laDamage_c0::m.field_0x6C; + sVar10 = daPy_HIO_laDamage_c0::m.field_0xC; + fVar5 = daPy_HIO_laDamage_c0::m.field_0x70; + } else { + fVar1 = daPy_HIO_huDamage_c0::m.field_0x68; + fVar2 = daPy_HIO_huDamage_c0::m.field_0x6C; + sVar10 = daPy_HIO_huDamage_c0::m.field_0xC; + fVar5 = daPy_HIO_huDamage_c0::m.field_0x70; + } + m34F2 = 0x4000 - sVar3; + m34D0 = 0; + } + setSingleMoveAnime(mProcVar0.mDamageAnm, fVar1, fVar2, sVar10, fVar5); + mVelocity = 0.0f; + speed.y = 0.0f; + gravity = 0.0f; + dComIfGp_getVibration().StartShock(6, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + m34D0 = param_2; + return true; } /* 801189AC-801189F0 .text procLargeDamageWall__9daPy_lk_cFv */ BOOL daPy_lk_c::procLargeDamageWall() { - /* Nonmatching */ + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + procLargeDamage_init(mProcVar0.m3570, m34D0, m34F2, m34F4); + } + return true; } /* 801189F0-80118BC4 .text procLavaDamage_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procLavaDamage_init() { - /* Nonmatching */ + /* Nonmatching - floats */ + if (mCurProc == daPyProc_LAVA_DAMAGE_e) { + if (speed.y <= 0.0f) { + speed.y = 30.0f; + } + gravity = -2.5f; + return true; + } else { + commonProcInit(daPyProc_LAVA_DAMAGE_e); + f32 dVar3 = current.pos.absXZ(); + dVar3 = (0.00058823527f * (1700.0f - dVar3) - 0.25f); + if (dVar3 < 0.0) { + dVar3 = 0.0f; + } + gravity = -2.5f; + mVelocity = 15.0f + (40.0f * dVar3); + speed.y = 32.0f + (36.0f * dVar3); + setSingleMoveAnime(ANM_LAVADAM, daPy_HIO_restart_c0::m.field_0x0, 0.0f, -1, + daPy_HIO_restart_c0::m.field_0x4); + m32E4.makeEmitter(dPa_name::ID_SCENE_8078, mpCLModel->getAnmMtx(0), ¤t.pos, NULL); + voiceStart(4); + seStartMapInfo(JA_SE_LK_FALL_MAGMA); + current.angle.y = cM_atan2s(current.pos.x, current.pos.z); + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + setDamagePoint(-1.0f); + } + return true; } /* 80118BC4-80118C58 .text procLavaDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procLavaDamage() { - /* Nonmatching */ + int iVar1; + daPy_ANM anm; + + if (mAcch.ChkGroundHit()) { + iVar1 = getDirectionFromAngle(current.angle.y - shape_angle.y); + if (iVar1 == 0) { + anm = ANM_DAMFB; + } else if (iVar1 == 1) { + anm = ANM_DAMFF; + } else if (iVar1 == 2) { + anm = ANM_DAMFR; + } else { + anm = ANM_DAMFL; + } + procLargeDamageUp_init(anm, 1, 0, 0); + } + return true; } /* 80118C58-80118E6C .text procElecDamage_init__9daPy_lk_cFPC4cXyz */ -BOOL daPy_lk_c::procElecDamage_init(const cXyz*) { - /* Nonmatching */ +BOOL daPy_lk_c::procElecDamage_init(const cXyz* param_1) { + if (!dComIfGp_event_compulsory(this)) { + return false; + } + mDemo.setDemoType(5); + int iVar2 = checkShipRideUseItem(0); + if (checkModeFlg(ModeFlg_SWIM)) { + current.pos.y += m35C4; + m34D4 = 1; + swimOutAfter(1); + } else { + m34D4 = 0; + } + commonProcInit(daPyProc_ELEC_DAMAGE_e); + if (!mAcch.ChkGroundHit()) { + gravity = 0.0f; + if (m34D4 == 0) { + onModeFlg(ModeFlg_MIDAIR); + } + } + mVelocity = 0.0f; + speed.y = 0.0f; + setSingleMoveAnime(ANM_DAMBIRI, daPy_HIO_elecDamage_c0::m.field_0x4, 0.0f, -1, + daPy_HIO_elecDamage_c0::m.field_0x8); + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + m34D0 = daPy_HIO_elecDamage_c0::m.field_0x0; + if (param_1 != 0) { + m370C = current.pos - *param_1; + m34D6 = 1; + } else { + if (mCyl.ChkTgHit()) { + cXyz* pfVar4 = getDamageVec(&mCyl); + m370C = *pfVar4; + m34D6 = 1; + } else { + m34D6 = 0; + } + } + initShipRideUseItem(iVar2, 0); + seStartOnlyReverb(JA_SE_LK_ELEC_PARALYSED); + voiceStart(44); + dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f)); + return true; } /* 80118E6C-80118F40 .text procElecDamage__9daPy_lk_cFv */ BOOL daPy_lk_c::procElecDamage() { - /* Nonmatching */ + setShipRidePosUseItem(); + if (m34D0 > 0) { + m34D0--; + } else { + dComIfGp_event_reset(); + endDemoMode(); + if ((mAcch.ChkGroundHit()) && ((int)m34D6 == 0)) { + checkNextMode(0); + } else { + if ((int)m34D6 != 0) { + current.angle.y = cM_atan2s(m370C.x, m370C.z); + } else { + current.angle.y = shape_angle.y + 0x8000; + } + procLargeDamage_init(-10, 1, 0, 0); + } + } + return true; } /* 80118F40-80119248 .text procGuardSlip_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procGuardSlip_init() { - /* Nonmatching */ + daPy_ANM dVar5; + + cXyz* pfVar2 = getDamageVec(&mCyl); + commonProcInit(daPyProc_GUARD_SLIP_e); + if (mEquipItem == dItem_SKULL_HAMMER_e) { + dVar5 = ANM_ATNGAHAM; + mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_ATNGAHAMA)); + } else if (mDirection == DIR_LEFT) { + dVar5 = ANM_ATNGAL; + } else { + dVar5 = ANM_ATNGAR; + } + dCcD_GObjInf* iVar4 = mCyl.GetTgHitGObj(); + if ((iVar4 != NULL) && + (((iVar4->GetAtSpl() == dCcG_At_Spl_UNK5 || (iVar4->GetAtSpl() == dCcG_At_Spl_UNK6)) || + (iVar4->GetAtSpl() == dCcG_At_Spl_UNK7)))) + { + setSingleMoveAnime(dVar5, daPy_HIO_nockback_c0::m.field_0x8, + daPy_HIO_nockback_c0::m.field_0xC, daPy_HIO_nockback_c0::m.field_0x0, + daPy_HIO_nockback_c0::m.field_0x10); + mVelocity = (daPy_HIO_nockback_c0::m.field_0x18 * pfVar2->absXZ()) + + daPy_HIO_nockback_c0::m.field_0x14; + m34D0 = daPy_HIO_nockback_c0::m.field_0x2; + m35A0 = daPy_HIO_nockback_c0::m.field_0x1C; + m35A4 = daPy_HIO_nockback_c0::m.field_0x20; + m35A8 = daPy_HIO_nockback_c0::m.field_0x24; + m35AC = daPy_HIO_nockback_c0::m.field_0x28; + mProcVar0.m3570 = (cM_rnd() < 0.2f) ? 1 : 0; + } else { + setSingleMoveAnime(dVar5, daPy_HIO_guard_c0::m.field_0x4, daPy_HIO_guard_c0::m.field_0x8, + daPy_HIO_guard_c0::m.field_0x0, daPy_HIO_guard_c0::m.field_0xC); + mVelocity = + (daPy_HIO_guard_c0::m.field_0x14 * pfVar2->absXZ()) + daPy_HIO_guard_c0::m.field_0x10; + m34D0 = daPy_HIO_guard_c0::m.field_0x2; + m35A0 = daPy_HIO_guard_c0::m.field_0x18; + m35A4 = daPy_HIO_guard_c0::m.field_0x1C; + m35A8 = daPy_HIO_guard_c0::m.field_0x20; + m35AC = daPy_HIO_guard_c0::m.field_0x24; + mProcVar0.m3570 = 0; + } + if (mEquipItem == dItem_SKULL_HAMMER_e) { + m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } else { + m35E8 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } + current.angle.y = cM_atan2s(pfVar2->x, pfVar2->z); + m34BE = 3; + m_pbCalc[PART_UPPER_e]->setRatio(2, 0.0f); + return true; } /* 80119248-80119334 .text procGuardSlip__9daPy_lk_cFv */ BOOL daPy_lk_c::procGuardSlip() { - /* Nonmatching */ + if (m34D0 > 0) { + m34D0--; + } + setShapeAngleToAtnActor(); + if (mEquipItem == dItem_SKULL_HAMMER_e) { + m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } else { + m35E8 = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); + } + if (cLib_addCalc(&mVelocity, 0.0f, m35A0, m35A4, m35A8) <= 0.001f) { + if (mProcVar0.m3570 != 0) { + return procNockBackEnd_init(); + } + if (m34D0 == 0) { + m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f); + checkNextMode(0); + } + } else { + if (mVelocity < m35AC) { + resetFootEffect(); + } + } + return true; } /* 80119334-80119478 .text procIceSlipFall_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procIceSlipFall_init() { - /* Nonmatching */ + commonProcInit(daPyProc_ICE_SLIP_FALL_e); + int iVar1 = getDirectionFromAngle(cM_atan2s(-m36A0.x, -m36A0.z) - shape_angle.y); + if (iVar1 == 0) { + mProcVar0.mDamageAnm = ANM_DAMFB; + m34D4 = 0x3fff; + m34D6 = 1; + } else if (iVar1 == 3) { + mProcVar0.mDamageAnm = ANM_DAMFL; + m34D4 = 0x3fff; + m34D6 = 0; + } else if (iVar1 == 2) { + mProcVar0.mDamageAnm = ANM_DAMFR; + m34D4 = -0x3fff; + m34D6 = 0; + } else { + mProcVar0.mDamageAnm = ANM_DAMFF; + m34D4 = -0x3fff; + m34D6 = 1; + } + setSingleMoveAnime(mProcVar0.mDamageAnm, 1.0f, 0.0f, -1, daPy_HIO_iceSlip_c0::m.field_0x20); + mVelocity = 0.0f; + speed.y = daPy_HIO_iceSlip_c0::m.field_0x1C; + mBodyAngle.x = 0; + mBodyAngle.y = 0; + mBodyAngle.z = 0; + voiceStart(36); + return true; } /* 80119478-80119500 .text procIceSlipFall__9daPy_lk_cFv */ BOOL daPy_lk_c::procIceSlipFall() { - /* Nonmatching */ + s16* psVar1; + + if (m34D6 == 1) { + psVar1 = &m34F2; + } else { + psVar1 = &m34F4; + } + cLib_chaseAngleS(psVar1, m34D4, daPy_HIO_iceSlip_c0::m.field_0x2); + if ((mAcch.ChkGroundHit()) && (!changeSlideProc())) { + procIceSlipFallUp_init(mProcVar0.m3570, m34F2, m34F4); + } + return true; } /* 80119500-80119688 .text procIceSlipFallUp_init__9daPy_lk_cFiss */ -BOOL daPy_lk_c::procIceSlipFallUp_init(int, s16, s16) { - /* Nonmatching */ +BOOL daPy_lk_c::procIceSlipFallUp_init(int param_1, s16 param_2, s16 param_3) { + f32 fVar1; + f32 fVar2; + f32 fVar3; + daPy_ANM dVar5; + s16 sVar6; + + commonProcInit(daPyProc_ICE_SLIP_FALL_UP_e); + m34BE = 6; + dComIfGp_getVibration().StartShock(3, -0x3f, cXyz(0.0f, 1.0f, 0.0f)); + seStartMapInfo(JA_SE_LK_FALL_DOWN); + if (param_1 == ANM_DAMFB) { + dVar5 = ANM_DAMFBUP; + fVar1 = daPy_HIO_iceSlip_c0::m.field_0x34; + fVar2 = daPy_HIO_iceSlip_c0::m.field_0x38; + sVar6 = daPy_HIO_iceSlip_c0::m.field_0x6; + fVar3 = daPy_HIO_iceSlip_c0::m.field_0x40; + m35A0 = daPy_HIO_iceSlip_c0::m.field_0x3C; + } else if (param_1 == ANM_DAMFL) { + dVar5 = ANM_DAMFLUP; + fVar1 = daPy_HIO_iceSlip_c0::m.field_0x44; + fVar2 = daPy_HIO_iceSlip_c0::m.field_0x48; + sVar6 = daPy_HIO_iceSlip_c0::m.field_0x8; + fVar3 = daPy_HIO_iceSlip_c0::m.field_0x50; + m35A0 = daPy_HIO_iceSlip_c0::m.field_0x4C; + } else if (param_1 == ANM_DAMFR) { + dVar5 = ANM_DAMFRUP; + fVar1 = daPy_HIO_iceSlip_c0::m.field_0x54; + fVar2 = daPy_HIO_iceSlip_c0::m.field_0x58; + sVar6 = daPy_HIO_iceSlip_c0::m.field_0xA; + fVar3 = daPy_HIO_iceSlip_c0::m.field_0x60; + m35A0 = daPy_HIO_iceSlip_c0::m.field_0x5C; + } else { + dVar5 = ANM_DAMFFUP; + fVar1 = daPy_HIO_iceSlip_c0::m.field_0x24; + fVar2 = daPy_HIO_iceSlip_c0::m.field_0x28; + sVar6 = daPy_HIO_iceSlip_c0::m.field_0x4; + fVar3 = daPy_HIO_iceSlip_c0::m.field_0x30; + m35A0 = daPy_HIO_iceSlip_c0::m.field_0x2C; + } + m35E4 = 1.0f; + m35A4 = 2.0f / (m35A0 - fVar2); + setSingleMoveAnime(dVar5, fVar1, fVar2, sVar6, fVar3); + setOldRootQuaternion(param_2, 0, param_3); + mVelocity = 0.0f; + current.angle.y = shape_angle.y; + return true; } /* 80119688-8011970C .text procIceSlipFallUp__9daPy_lk_cFv */ BOOL daPy_lk_c::procIceSlipFallUp() { - /* Nonmatching */ + m35E4 = m35A4 * (m35A0 - mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); + resetFootEffect(); + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > m35A0) { + checkNextMode(1); + } + } + return true; } /* 8011970C-801197D4 .text procIceSlipAlmostFall_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procIceSlipAlmostFall_init() { - /* Nonmatching */ + daPy_ANM anm; + + commonProcInit(daPyProc_ICE_SLIP_ALMOST_FALL_e); + current.angle.y = cM_atan2s(m36AC.x, m36AC.z); + int iVar1 = getDirectionFromAngle(current.angle.y - shape_angle.y); + if (iVar1 == 1) { + anm = ANM_DAMF; + } else if (iVar1 == 2) { + anm = ANM_DAMR; + } else if (iVar1 == 3) { + anm = ANM_DAML; + } else { + anm = ANM_DAMB; + } + setSingleMoveAnime(anm, daPy_HIO_iceSlip_c0::m.field_0x64, daPy_HIO_iceSlip_c0::m.field_0x68, + daPy_HIO_iceSlip_c0::m.field_0xC, daPy_HIO_iceSlip_c0::m.field_0x70); + setTextureAnime(6, 0); + mVelocity = 0.0f; + return true; } /* 801197D4-80119864 .text procIceSlipAlmostFall__9daPy_lk_cFv */ BOOL daPy_lk_c::procIceSlipAlmostFall() { - /* Nonmatching */ + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + current.angle.y = shape_angle.y; + checkNextMode(0); + } else { + if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_iceSlip_c0::m.field_0x6C) { + s16 sVar1 = current.angle.y; + current.angle.y = shape_angle.y; + if (!checkNextMode(1)) { + current.angle.y = sVar1; + } + } + } + return true; } /* 80119864-801198E0 .text procBootsEquip_init__9daPy_lk_cFUs */ -BOOL daPy_lk_c::procBootsEquip_init(u16) { - /* Nonmatching */ +BOOL daPy_lk_c::procBootsEquip_init(u16 param_1) { + commonProcInit(daPyProc_BOOTS_EQUIP_e); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + setSingleMoveAnime(ANM_SETBOOTS, daPy_HIO_boots_c0::m.field_0x4, daPy_HIO_boots_c0::m.field_0x8, + daPy_HIO_boots_c0::m.field_0x0, daPy_HIO_boots_c0::m.field_0x10); + mProcVar0.m3570 = param_1; + return true; } /* 801198E0-80119A5C .text procBootsEquip__9daPy_lk_cFv */ BOOL daPy_lk_c::procBootsEquip() { - /* Nonmatching */ + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + if (frameCtrl.checkPass(11.0f)) { + if (checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS)) { + offNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); + } else { + onNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); + } + } + if (frameCtrl.getRate() < 0.01f) { + if (checkGrabAnime()) { + initGrabNextMode(); + } else { + checkNextMode(0); + } + } else { + if (frameCtrl.getFrame() > daPy_HIO_boots_c0::m.field_0xC) { + if (checkGrabAnime()) { + if (mStickDistance > 0.05f) { + initGrabNextMode(); + } + } else { + checkNextMode(1); + } + } else { + if ((frameCtrl.checkPass(15.0f)) && (checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS))) { + dComIfGp_getVibration().StartShock(5, -0x31, cXyz(0.0f, 1.0f, 0.0f)); + } + } + } + return true; } /* 80119A5C-80119BA0 .text procNotUse_init__9daPy_lk_cFi */ -BOOL daPy_lk_c::procNotUse_init(int) { - /* Nonmatching */ +BOOL daPy_lk_c::procNotUse_init(int param_1) { + if (!dComIfGp_event_compulsory(this)) { + return false; + } + mDemo.setDemoType(5); + commonProcInit(daPyProc_NOT_USE_e); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + setSingleMoveAnime(ANM_PRESENTATIONB, daPy_HIO_turn_c0::m.field_0x34, + daPy_HIO_turn_c0::m.field_0x38, daPy_HIO_turn_c0::m.field_0x10, + daPy_HIO_turn_c0::m.field_0x3C); + keepItemData(); + dComIfGp_setPlayerStatus1(0, daPyStts1_UNK800_e); + m3628 = fpcM_ERROR_PROCESS_ID_e; + mProcVar0.m3570 = param_1; + m3574 = 5; + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &m3574, 0); + if (isDaizaItem(mProcVar0.m3570)) { + m3624 = 0xf0c; + } else { + m3624 = 0x835; + } + m34D4 = 0; + return true; } /* 80119BA0-80119DA0 .text procNotUse__9daPy_lk_cFv */ BOOL daPy_lk_c::procNotUse() { - /* Nonmatching */ + if ((m34D4 == 0) && (!checkBottleItem((u16)mProcVar0.mBottleItem))) { + dComIfGp_event_setItemPartnerId( + fopAcM_createItemForPresentDemo(¤t.pos, mProcVar0.mBottleItem, 5, -1, + fopAcM_GetRoomNo(this), &shape_angle, &scale)); + m34D4 = 1; + } + if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { + daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(this); + if ((item != NULL) && + ((fopAcM_GetName(item) == PROC_ITEM || (fopAcM_GetName(item) == PROC_Demo_Item)))) + { + item->show(); + } + if ((m34D4 == 0) && (checkBottleItem((u16)mProcVar0.mBottleItem))) { + setBottleModel(mProcVar0.mBottleItem); + m34D4 = 1; + } + if (m3628 == fpcM_ERROR_PROCESS_ID_e) { + m3628 = fopMsgM_messageSet(m3624); + } else { + msg_class* msg_p = fopMsgM_SearchByID(m3628); + if (msg_p != 0) { + if (msg_p->mStatus == fopMsgStts_MSG_DISPLAYED_e) { + if ((m3624 == 0xf0c) && (msg_p->mSelectNum == 1)) { + msg_p->mStatus = fopMsgStts_MSG_CONTINUES_e; + m3624 = 0xf10; + fopMsgM_messageSet(m3624); + g_dComIfG_gameInfo.save.getPlayer().getBagItem().setReserveItemEmpty( + mReadyItemBtn); + } else { + msg_p->mStatus = fopMsgStts_MSG_ENDS_e; + } + } else if (msg_p->mStatus == fopMsgStts_BOX_CLOSED_e) { + msg_p->mStatus = fopMsgStts_MSG_DESTROYED_e; + if ((item != NULL) && ((fopAcM_GetName(item) == PROC_ITEM || + (fopAcM_GetName(item) == PROC_Demo_Item)))) + { + item->dead(); + } + dComIfGp_event_reset(); + dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); + endDemoMode(); + } + } + } + } + return true; } /* 80119DA0-80119EBC .text getGroundAngle__9daPy_lk_cFP13cBgS_PolyInfos */ -s16 daPy_lk_c::getGroundAngle(cBgS_PolyInfo*, s16) { - /* Nonmatching */ +s16 daPy_lk_c::getGroundAngle(cBgS_PolyInfo* param_1, s16 param_2) { + cM3dGPla* plane = dComIfG_Bgsp()->GetTriPla(*param_1); + if ((plane == NULL) || (!(plane->GetNP()->y >= 0.5f))) { + return 0; + } + f32 cos = cM_scos((cM_atan2s(plane->GetNP()->x, plane->GetNP()->z) - param_2)); + f32 xz = + (std::sqrtf(plane->GetNP()->x * plane->GetNP()->x + plane->GetNP()->z * plane->GetNP()->z)); + xz *= cos; + return cM_atan2s(xz, plane->GetNP()->y); } /* 80119EBC-8011A508 .text setLegAngle__9daPy_lk_cFfiPsPs */ @@ -2869,12 +4997,72 @@ void daPy_lk_c::footBgCheck() { /* 8011ABB0-8011AC78 .text setWaterY__9daPy_lk_cFv */ void daPy_lk_c::setWaterY() { - /* Nonmatching */ + if (!daSea_ChkArea(current.pos.x, current.pos.z)) { + if (mAcch.ChkWaterHit()) { + onNoResetFlg0(daPyFlg0_UNK80); + } else { + offNoResetFlg0(daPyFlg0_UNK80); + } + m35D0 = mAcch.m_wtr.GetHeight(); + dPa_control_c::offStatus(1); + } else { + onNoResetFlg0(daPyFlg0_UNK80); + m35D0 = daSea_calcWave(current.pos.x, current.pos.z); + if (mAcch.m_wtr.GetHeight() > m35D0) { + m35D0 = mAcch.m_wtr.GetHeight(); + dPa_control_c::offStatus(1); + } else { + dPa_control_c::onStatus(1); + } + } + return; } /* 8011AC78-8011AD9C .text autoGroundHit__9daPy_lk_cFv */ void daPy_lk_c::autoGroundHit() { - /* Nonmatching */ + /* Nonmatching - srwi uVar4 */ + u32 uVar4 = checkNoResetFlg0(daPyFlg0_UNK80000000); + offNoResetFlg0(daPyFlg0_UNK80000000); + if (mTinkleHoverTimer == 0) { + offNoResetFlg0(daPyFlg0_HOVER_BOOTS); + } + if ((!dComIfGp_event_runCheck()) && (mDemo.getDemoType() == 0)) { + if (mTinkleHoverTimer > 0) { + mTinkleHoverTimer--; + } + } + if (checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | + ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_CAUGHT)) + { + return; + } + f32 fVar1 = mAcch.GetGroundH(); + f32 fVar2 = fVar1 - current.pos.y; + if (mAcch.ChkGroundHit()) { + return; + } + if (fVar2 < 0.0f) { + if ((fVar2 >= -30.1f) && (uVar4 == 0)) { + current.pos.y = fVar1; + mAcch.SetGroundHit(); + speed.y = 0.0f; + return; + } + } + if (!checkNoResetFlg0(daPyFlg0_HOVER_BOOTS)) { + return; + } + if (!(mTinkleHoverTimer > 0)) { + return; + } + if ((dComIfGp_event_runCheck()) && (mDemo.getDemoType() != 5)) { + return; + } + current.pos.y = old.pos.y; + mAcch.SetGroundHit(); + speed.y = 0.0f; + onNoResetFlg0(daPyFlg0_UNK80000000); + return; } /* 8011AD9C-8011AE20 .text checkAttentionPosAngle__9daPy_lk_cFP10fopAc_ac_cPP4cXyz */ @@ -2900,7 +5088,16 @@ void daPy_lk_c::setNeckAngle() { /* 8011BE08-8011BEA4 .text checkOriginalHatAnimation__9daPy_lk_cFv */ void daPy_lk_c::checkOriginalHatAnimation() { - /* Nonmatching */ + if ((((checkModeFlg(ModeFlg_WHIDE | ModeFlg_SWIM | ModeFlg_CRAWL)) || + (mCurProc == daPyProc_VOMIT_WAIT_e)) || + (mCurProc == daPyProc_ELEC_DAMAGE_e)) || + ((mCurProc == daPyProc_DEMO_DOOR_OPEN_e || + ((!strcmp(dComIfGp_getStartStageName(), "GTower") && + (dComIfGp_getStartStageLayer() == 9)))))) + { + onResetFlg0(daPyRFlg0_UNK800000); + } + return; } /* 8011BEA4-8011CBA4 .text setHatAngle__9daPy_lk_cFv */ @@ -2910,12 +5107,58 @@ void daPy_lk_c::setHatAngle() { /* 8011CBA4-8011CCF4 .text setMoveSlantAngle__9daPy_lk_cFv */ void daPy_lk_c::setMoveSlantAngle() { - /* Nonmatching */ + f32 fVar1; + s16 sVar2; + + fVar1 = std::abs(speedF / mMaxNormalSpeed); + if (checkModeFlg(ModeFlg_02000000)) { + mBodyAngle.z = 0; + m351C = 0; + } else { + if ((mCurProc == 6) && (fVar1 > daPy_HIO_move_c0::m.field_0x4C)) { + cLib_addCalcAngleS(&m351C, + daPy_HIO_move_c0::m.field_0x50 * (s16)(m34DE - shape_angle.y) * + ((fVar1 - daPy_HIO_move_c0::m.field_0x4C) / + (1.0f - daPy_HIO_move_c0::m.field_0x4C)), + daPy_HIO_move_c0::m.field_0xC, daPy_HIO_move_c0::m.field_0x8, + daPy_HIO_move_c0::m.field_0xA); + } else { + sVar2 = (m351C * daPy_HIO_move_c0::m.field_0x54); + if (sVar2 == 0) { + m351C = 0; + } else { + m351C = m351C - sVar2; + } + } + shape_angle.z = m351C >> 1; + mBodyAngle.z = shape_angle.z; + return; + } } /* 8011CCF4-8011CDB4 .text setWaistAngle__9daPy_lk_cFv */ void daPy_lk_c::setWaistAngle() { - /* Nonmatching */ + float fVar1; + short sVar2; + + if (checkModeFlg(ModeFlg_00000001 | ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | + ModeFlg_IN_SHIP | ModeFlg_00008000 | ModeFlg_CLIMB | ModeFlg_SWIM | + ModeFlg_LADDER | ModeFlg_CAUGHT)) + { + sVar2 = 0; + } else { + fVar1 = std::abs(mVelocity / (mMaxNormalSpeed)); + if (fVar1 > 1.0f) { + fVar1 = 1.0f; + } + if (m3580 == 8) { + sVar2 = 0; + } else { + sVar2 = (0.7f * m34E2 * fVar1); + } + } + cLib_addCalcAngleS(&m34E0, sVar2, 2, 0x800, 0x200); + return; } /* 8011CDB4-8011D070 .text setWorldMatrix__9daPy_lk_cFv */ @@ -3246,7 +5489,47 @@ void daPy_lk_c::setWindAtPower() { /* 801216A8-80121870 .text checkRoofRestart__9daPy_lk_cFv */ void daPy_lk_c::checkRoofRestart() { - /* Nonmatching */ + /* Nonmatching - math */ + if ((mAcch.ChkRoofHit()) && (mAcch.ChkGroundHit())) { + if (((mCurProc != daPyProc_CRAWL_START_e)) && + ((mCurProc != daPyProc_CRAWL_END_e && (mCurProc != daPyProc_WHIDE_READY_e)))) + { + if ((dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) != dStageType_BOSS_e && + ((!dComIfG_Bgsp()->ChkMoveBG(mAcch.m_roof) || + (fopAcM_GetName(dComIfG_Bgsp()->GetActorPointer(mAcch.m_roof.GetBgIndex())) != + PROC_BRIDGE))))) + { + f32 dVar9 = mAcch.m_roof_y; + if (dVar9 > mAcch.GetGroundH()) { + f32 dVar10 = mHeadTopPos.y - 10.0f; + f32 fVar1 = current.pos.y; + f32 dVar8 = 10.0f + fVar1; + if (dVar10 < dVar8) { + dVar10 = dVar8; + } + if (dVar9 < dVar10) { + if (checkModeFlg(ModeFlg_WHIDE)) { + f32 fVar4 = 35.0f - + daPy_HIO_wall_c0::m.field_0x50 * cM_scos(shape_angle.y) + + current.pos.z; + cXyz local_8; + local_8.set(current.pos.x + fVar4 * cM_ssin(shape_angle.y), fVar1, + fVar4); + mRoofChk.SetPos(local_8); + dVar9 = dComIfG_Bgsp()->RoofChk(&mRoofChk); + if (dVar9 >= dVar10) { + return; + } + } + if (startRestartRoom(5, 0xC9, -1.0f, 0)) { + voiceStart(43); + } + } + } + } + } + } + return; } /* 80121870-80122D30 .text execute__9daPy_lk_cFv */ @@ -4143,13 +6426,25 @@ J3DModelData* daPy_lk_c::initModel(J3DModel** i_model, int i_fileIndex, u32 i_di } /* 80124B30-80124BE4 .text entryBtk__9daPy_lk_cFP12J3DModelDatai */ -J3DAnmTextureSRTKey* daPy_lk_c::entryBtk(J3DModelData*, int) { - /* Nonmatching */ +J3DAnmTextureSRTKey* daPy_lk_c::entryBtk(J3DModelData* param_1, int param_2) { + J3DAnmTextureSRTKey* btk_anm = + static_cast(dComIfG_getObjectRes(l_arcName, param_2)); + JUT_ASSERT(21373, btk_anm != 0); + btk_anm->searchUpdateMaterialID(param_1); + param_1->entryTexMtxAnimator(btk_anm); + btk_anm->setFrame(0.0f); + return btk_anm; } /* 80124BE4-80124C98 .text entryBrk__9daPy_lk_cFP12J3DModelDatai */ -J3DAnmTevRegKey* daPy_lk_c::entryBrk(J3DModelData*, int) { - /* Nonmatching */ +J3DAnmTevRegKey* daPy_lk_c::entryBrk(J3DModelData* param_1, int param_2) { + J3DAnmTevRegKey* brk_anm = + static_cast(dComIfG_getObjectRes(l_arcName, param_2)); + JUT_ASSERT(21395, brk_anm != 0); + brk_anm->searchUpdateMaterialID(param_1); + param_1->entryTevRegAnimator(brk_anm); + brk_anm->setFrame(0.0f); + return brk_anm; } /* 80124C98-80125CC8 .text playerInit__9daPy_lk_cFv */ @@ -4672,8 +6967,17 @@ void daPy_lk_c::animeUpdate() { } /* 801287E8-8012887C .text simpleAnmPlay__9daPy_lk_cFP10J3DAnmBase */ -void daPy_lk_c::simpleAnmPlay(J3DAnmBase*) { - /* Nonmatching */ +void daPy_lk_c::simpleAnmPlay(J3DAnmBase* i_anm) { + f32 frame = i_anm->getFrame() + 1.0f; + if (frame >= i_anm->getFrameMax()) { + if (i_anm->getAttribute() == 2) { + frame -= i_anm->getFrameMax(); + } else { + frame = i_anm->getFrameMax() - 0.001f; + } + } + i_anm->setFrame(frame); + return; } /* 8012887C-801288A0 .text setHandModel__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ @@ -4755,23 +7059,113 @@ BOOL daPy_lk_c::setThrowDamage(cXyz* r4, s16 r5, f32 f30, f32 f31, int r6) { } /* 80128B50-80128C10 .text setPlayerPosAndAngle__9daPy_lk_cFP4cXyzs */ -void daPy_lk_c::setPlayerPosAndAngle(cXyz*, s16) { - /* Nonmatching */ +void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, s16 param_2) { + if (!(dComIfGp_event_runCheck()) && (dComIfGp_getScopeType() != 1)) { + return; + } + if (param_1 != NULL) { + current.pos = *param_1; + old.pos = current.pos; + } + shape_angle.y = param_2; + current.angle.y = param_2; + m34DE = shape_angle.y; + l_debug_keep_pos = current.pos; + l_debug_shape_angle = shape_angle; + l_debug_current_angle = current.angle; + return; } /* 80128C10-80128CE4 .text setPlayerPosAndAngle__9daPy_lk_cFP4cXyzP5csXyz */ -void daPy_lk_c::setPlayerPosAndAngle(cXyz*, csXyz*) { - /* Nonmatching */ +void daPy_lk_c::setPlayerPosAndAngle(cXyz* param_1, csXyz* param_2) { + if (!(dComIfGp_event_runCheck())) { + return; + } + if (param_1 != NULL) { + current.pos = *param_1; + old.pos = current.pos; + } + if (param_2 != NULL) { + shape_angle = *param_2; + current.angle.y = shape_angle.y; + m34DE = shape_angle.y; + } + l_debug_keep_pos = current.pos; + l_debug_shape_angle = shape_angle; + l_debug_current_angle = current.angle; + return; } /* 80128CE4-80128DC0 .text setPlayerPosAndAngle__9daPy_lk_cFPA4_f */ -void daPy_lk_c::setPlayerPosAndAngle(MtxP) { - /* Nonmatching */ +void daPy_lk_c::setPlayerPosAndAngle(MtxP param_1) { + if (dComIfGp_event_runCheck()) { + current.pos.x = param_1[0][3]; + current.pos.y = param_1[1][3]; + current.pos.z = param_1[2][3]; + old.pos = current.pos; + mDoMtx_MtxToRot(param_1, &shape_angle); + current.angle.y = shape_angle.y; + m34DE = shape_angle.y; + l_debug_keep_pos = current.pos; + l_debug_shape_angle = shape_angle; + l_debug_current_angle = current.angle; + } + return; } /* 80128DC0-80128F8C .text endDemoMode__9daPy_lk_cFv */ void daPy_lk_c::endDemoMode() { - /* Nonmatching */ + /* Nonmatching - missing clrlwi instruction */ + if (mCurProc != daPyProc_LARGE_DAMAGE_e) { + current.angle.y = shape_angle.y; + } + offNoResetFlg0(daPyFlg0_UNK100000); + dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK10_e); + mDemo.setDemoType(0); + mDemo.setDemoMode(0); + mDemo.setParam0(0); + mDemo.setParam1(0); + mDemo.setStick(1.0f); + resetDemoTextureAnime(); + if ((mEquipItem == daPyItem_UNK104_e) || (mEquipItem == daPyItem_UNK10A_e)) { + deleteEquipItem(FALSE); + offNoResetFlg1(daPyFlg1_SHIP_TACT); + } + mDoAud_taktModeMuteOff(); + if ((((mAcch.ChkGroundHit()) && + (!checkModeFlg(ModeFlg_MIDAIR | ModeFlg_HANG | ModeFlg_ROPE | ModeFlg_IN_SHIP | + ModeFlg_CLIMB | ModeFlg_SWIM | ModeFlg_LADDER | ModeFlg_04000000 | + ModeFlg_CAUGHT))) && + (mCurProc != daPyProc_LARGE_DAMAGE_UP_e)) && + ((mCurProc != daPyProc_DEMO_DEAD_e && (mCurProc != daPyProc_DEMO_LAVA_DAMAGE_e)))) + { + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_TELESCOPE_LOOK_e)) { + procScope_init(0x20); + return; + } + changeWaitProc(); + return; + } + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + if (dComIfGp_getShipActor() == NULL) { + checkNextMode(0); + } else if (daPy_getPlayerActorClass() != this) { + procControllWait_init(); + } else if (dComIfGp_getShipActor()->mShipMode == 2) { + procShipCannon_init(); + } else if (dComIfGp_getShipActor()->mShipMode == 3) { + procShipCrane_init(); + } else if (dComIfGp_getShipActor()->mShipMode == 1) { + procShipSteer_init(); + } else { + procShipPaddle_init(); + } + } else { + if (mCurProc == daPyProc_DEMO_BOSS_WARP_e) { + procWait_init(); + } + } + return; } /* 80128F8C-8012901C .text getBokoFlamePos__9daPy_lk_cFP4cXyz */ diff --git a/src/d/actor/d_a_player_particle.inc b/src/d/actor/d_a_player_particle.inc index b528aee8d..5f4bab5e1 100644 --- a/src/d/actor/d_a_player_particle.inc +++ b/src/d/actor/d_a_player_particle.inc @@ -997,9 +997,9 @@ void daPy_lk_c::setFootEffect() { cXyz sp44 = m370C; mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x1), &m370C); - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { current.angle.y = shape_angle.y - 0x4000; - m3570 = 0; + mProcVar0.m3570 = 0; } else { cXyz sp38 = m370C - sp44; current.angle.y = cM_atan2s(sp38.x, sp38.z); diff --git a/src/d/actor/d_a_player_pushpull.inc b/src/d/actor/d_a_player_pushpull.inc index 5d9bb1221..67167c9ae 100644 --- a/src/d/actor/d_a_player_pushpull.inc +++ b/src/d/actor/d_a_player_pushpull.inc @@ -19,7 +19,7 @@ int daPy_lk_c::setPushPullKeepData(dBgW::PushPullLabel param_0) { if (dComIfGs_getSelectEquip(2) == dItem_POWER_BRACELETS_e) { cLib_onBit(param_0, dBgW::PP_UNK8_e); } - if (m3570) { + if (mProcVar0.m3570) { cLib_onBit(param_0, dBgW::PP_UNK4_e); } } @@ -48,7 +48,7 @@ int daPy_lk_c::setPushPullKeepData(dBgW::PushPullLabel param_0) { /* 80151644-801517C0 .text procPushPullWait_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procPushPullWait_init(int param_0) { commonProcInit(daPyProc_PUSH_PULL_WAIT_e); - m3570 = param_0; + mProcVar0.m3570 = param_0; mVelocity = 0.0f; if ((param_0 == 0) || (mEquipItem == daPyItem_NONE_e)) { if (checkEquipAnime()) { @@ -77,29 +77,28 @@ BOOL daPy_lk_c::procPushPullWait_init(int param_0) { /* 801517C0-8015198C .text procPushPullWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procPushPullWait() { - /* Nonmatching - "sVar1" if statement */ dComIfGp_setRStatus(0x11); setFrontWallType(); if (m34D6 != 0) { - if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) { + if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xFFFF) { setSingleMoveAnime( ANM_WAITPUSHPULL, daPy_HIO_pushpull_c0::m.field_0x0, 0.0f, -1, daPy_HIO_pushpull_c0::m.field_0x4 ); m34D6 = 0; } } else if ((spActionButton()) && (checkResetFlg0(daPyRFlg0_UNK8))) { - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { s16 sVar1 = cLib_addCalcAngleS(&shape_angle.y, m34D4, 3, 0x800, 0x100); current.angle.y = shape_angle.y; f32 dVar2 = cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 10.0f, 1.0f); dVar2 += cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 10.0f, 1.0f); - if (((!sVar1) && (dVar2 < 5.0f)) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff)) { + if (((!sVar1) && (dVar2 < 5.0f)) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xFFFF)) { current.pos.x = m370C.x; current.pos.z = m370C.z; - m3570 = 0; + mProcVar0.m3570 = 0; } } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (mStickDistance > 0.05f) { int direction = getDirectionFromShapeAngle(); if (direction == DIR_FORWARD) { @@ -126,7 +125,7 @@ BOOL daPy_lk_c::procPushMove_init() { setSingleMoveAnime( ANM_WALKPUSH, daPy_HIO_pushpull_c0::m.field_0x8, 0.0f, -1, daPy_HIO_pushpull_c0::m.field_0xC ); - m3570 = 1; + mProcVar0.m3570 = 1; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK4000000_e); } return true; @@ -152,10 +151,10 @@ BOOL daPy_lk_c::procPushMove() { } return procPushPullWait_init(0); } - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { voiceStart(19); } - m3570 = 0; + mProcVar0.m3570 = 0; setPushPullKeepData(dBgW::PP_UNK1_e); } return true; @@ -170,7 +169,7 @@ BOOL daPy_lk_c::procPullMove_init() { setSingleMoveAnime( ANM_WALKPULL, daPy_HIO_pushpull_c0::m.field_0x10, 0.0f, -1, daPy_HIO_pushpull_c0::m.field_0x14 ); - m3570 = 1; + mProcVar0.m3570 = 1; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK4000000_e); } return true; @@ -178,7 +177,6 @@ BOOL daPy_lk_c::procPullMove_init() { /* 80151BC8-80151E40 .text procPullMove__9daPy_lk_cFv */ BOOL daPy_lk_c::procPullMove() { - /* Nonmatching - floats */ dComIfGp_setRStatus(0x11); int direction = getDirectionFromShapeAngle(); setFrontWallType(); @@ -223,10 +221,10 @@ BOOL daPy_lk_c::procPullMove() { } return procPushPullWait_init(0); } - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { voiceStart(19); } - m3570 = 0; + mProcVar0.m3570 = 0; setPushPullKeepData(dBgW::PP_UNK2_e); } return true; diff --git a/src/d/actor/d_a_player_rope.inc b/src/d/actor/d_a_player_rope.inc index 739f0ed8b..416dbb4a9 100644 --- a/src/d/actor/d_a_player_rope.inc +++ b/src/d/actor/d_a_player_rope.inc @@ -57,7 +57,6 @@ f32 daPy_lk_c::checkRopeRoofHit(s16 param_0) { /* 80142E98-80142FC8 .text changeRopeSwingProc__9daPy_lk_cFv */ int daPy_lk_c::changeRopeSwingProc() { - /* Nonmatching - floats */ if (mCyl.ChkCoHit() != 0) { fopAc_ac_c* pfVar2 = mCyl.GetCoHitAc(); if (((pfVar2 != NULL)) && (fopAcM_GetName(pfVar2) == PROC_HIMO3)) { @@ -101,7 +100,7 @@ BOOL daPy_lk_c::checkSpecialRope() { /* 80143138-8014327C .text changeRopeToHangProc__9daPy_lk_cFv */ int daPy_lk_c::changeRopeToHangProc() { - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { return false; } f32 fVar1 = cM_ssin(shape_angle.y); @@ -135,7 +134,7 @@ BOOL daPy_lk_c::checkRopeSwingWall(cXyz*, cXyz*, s16*, f32*) { /* 80143694-80143A44 .text setBlendRopeMoveAnime__9daPy_lk_cFi */ void daPy_lk_c::setBlendRopeMoveAnime(int param_0) { - /* Nonmatching - floats, branching */ + /* Nonmatching - regalloc */ float fVar1; u16* puVar3; daPy_ANM dVar4; @@ -229,7 +228,6 @@ void daPy_lk_c::setBlendRopeMoveAnime(int param_0) { /* 80143A44-80143C5C .text throwRope__9daPy_lk_cFv */ int daPy_lk_c::throwRope() { - /* Nonmatching - floats */ himo2_class* rope = (himo2_class*)mActorKeepEquip.getActor(); setActAnimeUpper(LKANM_BCK_ROPETHROW, UPPER_MOVE2_e, daPy_HIO_rope_c0::m.field_0x44, daPy_HIO_rope_c0::m.field_0x48, daPy_HIO_rope_c0::m.field_0x8, -1.0f); @@ -271,48 +269,43 @@ int daPy_lk_c::throwRope() { /* 80143C5C-80143DF4 .text checkNextActionRopeReady__9daPy_lk_cFv */ BOOL daPy_lk_c::checkNextActionRopeReady() { - /* Nonmatching - branching */ himo2_class* pnVar3 = (himo2_class*)mActorKeepEquip.getActor(); u32 uVar2 = fopAcM_GetParam(pnVar3); if (uVar2 == 2) { - procRopeReady_init(); + return procRopeReady_init(); } else if (uVar2 == 0) { if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ROPETHROW) { if (mFrameCtrlUpper[UPPER_MOVE2_e].getRate() < 0.01f) { - procRopeThrowCatch_init(); + return procRopeThrowCatch_init(); } else { return true; } + } else if (!mpAttention->Lockon()) { + dComIfGp_setDoStatus(7); + } + if (((itemButton()) && (mEquipItem == getReadyItem())) && (m355C == 0)) { + m355E = 1; } else { - if (!mpAttention->Lockon()) { - g_dComIfG_gameInfo.play.mCurrButtonAAction = 7; - } - if (((itemButton()) && (mEquipItem == getReadyItem())) && (m355C == 0)) { - m355E = 1; - } else { - if ((!itemButton()) && (m355E != 0)) { - m355E = 0; - if (throwRope()) { - return true; - } + if ((!itemButton()) && (m355E != 0)) { + m355E = 0; + if (throwRope()) { + return true; } } - if ((cancelItemUpperReadyAnime())) { - return true; - } } - } else { - if (((pnVar3->field_0x2DC == 5) || (pnVar3->field_0x2DC == 8)) || - (pnVar3->field_0x2DC == 9)) - { - procRopeThrowCatch_init(); - } else { - checkNextRopeMode(); + if ((cancelItemUpperReadyAnime())) { return true; } - if (0 < m355C) { - m355C--; - } + } else if (((pnVar3->field_0x2DC == 5) || (pnVar3->field_0x2DC == 8)) || + (pnVar3->field_0x2DC == 9)) + { + return procRopeThrowCatch_init(); + } else { + checkNextRopeMode(); + return true; + } + if (0 < m355C) { + m355C--; } return false; } @@ -367,7 +360,7 @@ BOOL daPy_lk_c::procRopeSubject_init() { mDoAud_seStart(JA_SE_CAMERA_L_MOVE); - m3570 = 0; + mProcVar0.m3570 = 0; m3600 = -1.0f; m3604 = -1.0f; @@ -469,7 +462,6 @@ BOOL daPy_lk_c::procRopeReady_init() { /* 80144464-80144620 .text procRopeReady__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeReady() { - /* Nonmatching - floats */ if (!checkItemModeActorPointer()) { return true; } @@ -492,7 +484,7 @@ BOOL daPy_lk_c::procRopeReady() { /* 80144620-80144C58 .text procRopeSwing_init__9daPy_lk_cFP10fopAc_ac_cs */ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) { - /* Nonmatching - floats, regalloc */ + /* Nonmatching - regalloc */ float dVar8; float dVar9; cXyz local_84; @@ -591,7 +583,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) { /* 80144C58-801456D8 .text procRopeSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeSwing() { - /* Nonmatching - floats, regalloc, math */ + /* Nonmatching, regalloc, math */ fopAc_ac_c* pfVar5; short sVar8; short sVar9; @@ -858,8 +850,8 @@ BOOL daPy_lk_c::procRopeHangWait() { /* 80145B38-80145C3C .text specialRopeHangUp__9daPy_lk_cFv */ int daPy_lk_c::specialRopeHangUp() { - /* Nonmatching - floats, shape_angle.y */ - uint uVar1; + /* Nonmatching - shape_angle.y */ + u32 uVar1; int iVar2; if (checkSpecialRope()) { @@ -887,10 +879,9 @@ int daPy_lk_c::specialRopeHangUp() { /* 80145C3C-80145DBC .text procRopeUp_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeUp_init() { - /* Nonmatching - floats */ fopAc_ac_c* pfVar3 = mActorKeepRope.getActor(); mRopePos = pfVar3->current.pos; - m3570 = 0; + mProcVar0.m3570 = 0; f32 dVar4; if (checkBossGomaStage()) { dVar4 = (mRopePos.y - 200.0f); @@ -901,7 +892,7 @@ BOOL daPy_lk_c::procRopeUp_init() { if (dVar5 < dVar4) { dVar4 = dVar5; } else if ((fopAcM_GetName(pfVar3)) == PROC_HIMO2 || (checkSpecialRope())) { - m3570 = 1; + mProcVar0.m3570 = 1; } } if (dVar4 <= current.pos.y) { @@ -972,7 +963,6 @@ BOOL daPy_lk_c::procRopeUp() { /* 80145F64-801460EC .text procRopeDown_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeDown_init() { - /* Nonmatching - floats */ fopAc_ac_c* pfVar4 = mActorKeepRope.getActor(); mRopePos = pfVar4->current.pos; if (mActorKeepEquip.getActor() != NULL) { @@ -1042,7 +1032,6 @@ BOOL daPy_lk_c::procRopeDown() { /* 80146240-801463E8 .text procRopeSwingStart_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeSwingStart_init() { - /* Nonmatching - floats */ fopAc_ac_c* pfVar2 = mActorKeepRope.getActor(); mRopePos = pfVar2->current.pos; commonProcInit(daPyProc_ROPE_SWING_START_e); @@ -1066,7 +1055,6 @@ BOOL daPy_lk_c::procRopeSwingStart_init() { /* 801463E8-80146610 .text procRopeSwingStart__9daPy_lk_cFv */ BOOL daPy_lk_c::procRopeSwingStart() { - /* Nonmatching - floats */ dComIfGp_setRStatus(0x13); cXyz local_28; local_28.set(0.0f, -m35A0, 0.0f); diff --git a/src/d/actor/d_a_player_ship.inc b/src/d/actor/d_a_player_ship.inc index 8ec4311dd..1c14355be 100644 --- a/src/d/actor/d_a_player_ship.inc +++ b/src/d/actor/d_a_player_ship.inc @@ -60,10 +60,57 @@ BOOL daPy_lk_c::checkShipNotNormalMode() { } /* 8013F9B0-8013FE78 .text setShipRideArmAngle__9daPy_lk_cFiP16J3DTransformInfo */ -void daPy_lk_c::setShipRideArmAngle(int, J3DTransformInfo*) { - /* Nonmatching */ - static cXyz arm_pos; - static cXyz armA_offset; +void daPy_lk_c::setShipRideArmAngle(int param_1, J3DTransformInfo* param_2) { + /* Nonmatching - regalloc, math */ + static cXyz arm_pos(0.0f, 0.0f, 0.0f); + static cXyz armA_offset(17.0f, 0.0f, 0.0f); + cXyz local_74; + cXyz local_68; + + s32 uVar3 = (param_1 == 0xA) ? 1 : 0; + if (uVar3 != 0) { + f32 fVar1 = m_old_fdata->getOldFrameRate(); + f32 fVar2 = 1.0f / (1.0f - fVar1); + J3DTransformInfo* iVar4 = m_old_fdata->getOldFrameTransInfo(param_1); + param_2->mTranslate.x *= fVar2 - iVar4->mTranslate.x * fVar1; + param_2->mTranslate.y *= fVar2 - iVar4->mTranslate.y * fVar1; + param_2->mTranslate.z *= fVar2 - iVar4->mTranslate.z * fVar1; + local_74.set(param_2->mTranslate.x, param_2->mTranslate.y, param_2->mTranslate.z); + mDoMtx_multVec(J3DSys::mCurrentMtx, &local_74, &arm_pos); + } + local_68 = (dComIfGp_getShipActor()->m0438 - arm_pos); + f32 dVar10 = local_68.absXZ(); + u32 uVar5 = cM_atan2s(local_68.y, dVar10); + mDoMtx_stack_c::transS(arm_pos.x, arm_pos.y, arm_pos.z); + f32 dVar12 = (26.299999f * cM_scos((uVar5 & 0xffff))); + f32 dVar8 = local_68.absXZ(); + dVar10 = dVar8; + if (uVar3 == 0) { + mDoMtx_stack_c::YrotM(cM_atan2s(local_68.x, local_68.z) + -0x4000); + if (dVar10 >= dVar12) { + mDoMtx_stack_c::scaleM((dVar10 / dVar12), 1.0f, 1.0f); + } + } else { + f32 dVar9 = (17.0f * cM_scos(uVar5 & 0xffff)); + f32 dVar11 = (dVar12 + dVar9); + if (dVar10 >= dVar11) { + mDoMtx_stack_c::YrotM(cM_atan2s(local_68.x, local_68.z) + -0x4000); + mDoMtx_stack_c::scaleM((dVar10 / dVar11), 1.0f, 1.0f); + } else { + dVar12 = ((dVar8 + ((dVar9 * dVar9) - (dVar12 * dVar12))) / (2.0f * dVar8)); + mDoMtx_stack_c::YrotM( + (cM_atan2s(local_68.x, local_68.z) + -0x4000) - + cM_atan2s(std::sqrtf((dVar9 * dVar9) - (dVar12 * (dVar8 * dVar12))), + (dVar10 * dVar12))); + } + } + mDoMtx_stack_c::ZrotM(uVar5); + mDoMtx_stack_c::XrotM(0x4000); + mDoMtx_copy(mDoMtx_stack_c::now, J3DSys::mCurrentMtx); + if (uVar3 != 0) { + mDoMtx_stack_c::multVec(&armA_offset, &arm_pos); + } + return; } /* 8013FE78-8013FEF4 .text checkShipRideUseItem__9daPy_lk_cFi */ @@ -117,7 +164,7 @@ void daPy_lk_c::setShipRidePos(int param_0) { daShip_c* iVar1 = dComIfGp_getShipActor(); if (iVar1 != 0) { if (iVar1->mStateFlag & 0x4000) { - g_dComIfG_gameInfo.play.field_0x492d = 0x12; + dComIfGp_setRStatus(0x12); } if (param_0 != 0) { shape_angle.y = iVar1->shape_angle.y; @@ -130,10 +177,10 @@ void daPy_lk_c::setShipRidePos(int param_0) { m3542 = 0; } else { m353C = m353C + m3540; - m3540 = (s16)(int)((float)m3540 + 0.75f * (int)(short)(iVar1->shape_angle.x - m353C)); + m3540 = (s16)(m3540 + 0.75f * (s16)(iVar1->shape_angle.x - m353C)); cLib_addCalcAngleS(&m3540, 0, 5, 0x200, 0x100); m353E = m353E + m3542; - m3542 = m3542 + ((short)(iVar1->shape_angle.z - m353E) >> 1); + m3542 += ((s16)(iVar1->shape_angle.z - m353E) >> 1); cLib_addCalcAngleS(&m3542, 0, 5, 0x100, 0x30); } if (mCurProc == ANM_WARPOUT) { @@ -400,11 +447,11 @@ void daPy_lk_c::initShipCraneAnime() { if ((s16)dComIfGp_getShipActor()->m039A > 0) { dVar1 = ANM_SALVRWAIT; - m3570 = 3; + mProcVar0.m3570 = 3; m3574 = 3; } else { dVar1 = ANM_SALVLWAIT; - m3570 = 2; + mProcVar0.m3570 = 2; m3574 = 2; } daPy_matAnm_c::offMabaFlg(); @@ -434,7 +481,7 @@ BOOL daPy_lk_c::procShipReady_init() { m34D0 = 1; } current.angle.y = shape_angle.y; - m3570 = 0; + mProcVar0.m3570 = 0; iVar1->m034D = 3; dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1000000_e); swimOutAfter(1); @@ -454,14 +501,14 @@ BOOL daPy_lk_c::procShipReady() { return checkNextMode(0); } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (m34D0 == 0) { mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, ¤t.pos); } else { mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_redge, ¤t.pos); } if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { - m3570 = 1; + mProcVar0.m3570 = 1; mVelocity = 6.0f; setSingleMoveAnime(ANM_WALK, daPy_HIO_move_c0::m.field_0x40, 0.0f, -1, 5.0f); m34C2 = 10; @@ -800,9 +847,9 @@ BOOL daPy_lk_c::procShipHookshot_init() { setShipRidePos(0); m34D4 = ship->shape_angle.y; if (mpAttention->Lockon()) { - m3570 = 1; + mProcVar0.m3570 = 1; } else { - m3570 = 0; + mProcVar0.m3570 = 0; } return true; @@ -818,7 +865,7 @@ BOOL daPy_lk_c::procShipHookshot() { dComIfGp_setDoStatus(7); daHookshot_c* pfVar4 = (daHookshot_c*)mActorKeepEquip.getActor(); if (((doTrigger()) || (pfVar4 == NULL)) || - ((m3570 != 0) && (m355E == 0)) && (!mpAttention->Lockon())) + ((mProcVar0.m3570 != 0) && (m355E == 0)) && (!mpAttention->Lockon())) { procShipPaddle_init(); deleteEquipItem(TRUE); @@ -836,11 +883,11 @@ BOOL daPy_lk_c::procShipHookshot() { } else { m34DA = 0; } - m3570 = 1; + mProcVar0.m3570 = 1; } else { m34DA = 0; setBodyAngleToCamera(); - m3570 = 0; + mProcVar0.m3570 = 0; } if (mpAttnActorLockOn == NULL) { shape_angle.y += (s16)(ship->shape_angle.y - m34D4); @@ -884,9 +931,9 @@ BOOL daPy_lk_c::procShipBow_init() { m34D4 = ship->shape_angle.y; m34DA = 0; if (mpAttention->Lockon() && mDemo.getDemoMode() != 0x44) { - m3570 = 1; + mProcVar0.m3570 = 1; } else { - m3570 = 0; + mProcVar0.m3570 = 0; } return true; @@ -901,7 +948,7 @@ BOOL daPy_lk_c::procShipBow() { if (mDemo.getDemoMode() != 0x44) { dComIfGp_setDoStatus(7); if ((doTrigger()) || - (((!mpAttention->Lockon()) && (mActorKeepEquip.getActor() == NULL)) && (m3570 != 0))) + (((!mpAttention->Lockon()) && (mActorKeepEquip.getActor() == NULL)) && (mProcVar0.m3570 != 0))) { procShipPaddle_init(); deleteEquipItem(TRUE); @@ -916,11 +963,11 @@ BOOL daPy_lk_c::procShipBow() { } if ((mpAttention->Lockon()) && (mDemo.getDemoMode() != 0x44)) { setShipAttnetionBodyAngle(); - m3570 = 1; + mProcVar0.m3570 = 1; } else { m34DA = 0; setBodyAngleToCamera(); - m3570 = 0; + mProcVar0.m3570 = 0; } if (mpAttnActorLockOn == NULL) { shape_angle.y += (s16)(iVar1->shape_angle.y - m34D4); @@ -956,7 +1003,7 @@ BOOL daPy_lk_c::procShipCannon() { return true; } - g_dComIfG_gameInfo.play.field_0x492d = 0x2c; + dComIfGp_setRStatus(0x2c); if (dComIfGp_getDoStatus() == 0 && dComIfGp_getShipActor()->speedF >= 3.0f) { dComIfGp_setDoStatus(19); } @@ -1007,7 +1054,7 @@ BOOL daPy_lk_c::procShipGetOff_init() { gravity = 0.0f; shape_angle.y = iVar1->shape_angle.y + -0x4000; current.angle.y = shape_angle.y; - m3570 = 0; + mProcVar0.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; @@ -1023,7 +1070,7 @@ BOOL daPy_lk_c::procShipGetOff() { daShip_c* iVar1 = dComIfGp_getShipActor(); if (iVar1 == 0) { checkNextMode(0); - } else if (m3570 == 0) { + } else if (mProcVar0.m3570 == 0) { current.pos.y = current.pos.y + (iVar1->current.pos.y - m35A0); cLib_chaseF(¤t.pos.y, iVar1->current.pos.y + l_ship_ledge.y, 4.0f); m35A0 = iVar1->current.pos.y; @@ -1035,7 +1082,7 @@ BOOL daPy_lk_c::procShipGetOff() { gravity = daPy_HIO_autoJump_c0::m.field_0xC; mVelocity = daPy_HIO_ship_c0::m.field_0x10; speed.y = daPy_HIO_ship_c0::m.field_0x14; - m3570 = 1; + mProcVar0.m3570 = 1; m34C2 = 1; iVar1->m034D = 6; onModeFlg(ModeFlg_MIDAIR); diff --git a/src/d/actor/d_a_player_swim.inc b/src/d/actor/d_a_player_swim.inc index 17d771d08..090d98874 100644 --- a/src/d/actor/d_a_player_swim.inc +++ b/src/d/actor/d_a_player_swim.inc @@ -14,10 +14,6 @@ #include "d/actor/d_a_player_HIO.h" #include "f_op/f_op_kankyo_mng.h" -daPy_HIO_swim_c0 l_HIO_swim_c0; -daPy_HIO_wallCatch_c0 l_HIO_wallCatch_c0; -daPy_HIO_turn_c0 l_HIO_turn_c0; - /* 8013CC64-8013CF2C .text setSpeedAndAngleSwim__9daPy_lk_cFv */ void daPy_lk_c::setSpeedAndAngleSwim() { float fVar1; @@ -38,7 +34,7 @@ void daPy_lk_c::setSpeedAndAngleSwim() { current.angle.y = m34E8; } else { - cLib_addCalcAngleS(&shape_angle.y, m34E8, l_HIO_swim_c0.m.field_0x8, l_HIO_swim_c0.m.field_0x4, l_HIO_swim_c0.m.field_0x6); + cLib_addCalcAngleS(&shape_angle.y, m34E8, daPy_HIO_swim_c0::m.field_0x8, daPy_HIO_swim_c0::m.field_0x4, daPy_HIO_swim_c0::m.field_0x6); } fVar1 = mStickDistance * 3.0f * cM_scos(shape_angle.y - oldAngleY); @@ -49,7 +45,7 @@ void daPy_lk_c::setSpeedAndAngleSwim() { cLib_addCalcAngleS(¤t.angle.y, shape_angle.y, 2, 0x2000, 0x1000); - mMaxNormalSpeed = l_HIO_swim_c0.m.field_0xC; + mMaxNormalSpeed = daPy_HIO_swim_c0::m.field_0xC; } else { setShapeAngleToAtnActor(); @@ -65,7 +61,7 @@ void daPy_lk_c::setSpeedAndAngleSwim() { bVar3 = TRUE; } else { - cLib_addCalcAngleS(¤t.angle.y, m34E8, l_HIO_swim_c0.m.field_0x8, l_HIO_swim_c0.m.field_0x4, l_HIO_swim_c0.m.field_0x6); + cLib_addCalcAngleS(¤t.angle.y, m34E8, daPy_HIO_swim_c0::m.field_0x8, daPy_HIO_swim_c0::m.field_0x4, daPy_HIO_swim_c0::m.field_0x6); fVar1 = mStickDistance * 3.0f * cM_scos(current.angle.y - oldAngleY); } } @@ -73,15 +69,15 @@ void daPy_lk_c::setSpeedAndAngleSwim() { fVar1 = 0.0f; } - mMaxNormalSpeed = ((cM_scos(current.angle.y - shape_angle.y) + 1.0f) * 0.25f + 0.5f) * l_HIO_swim_c0.m.field_0xC; + mMaxNormalSpeed = ((cM_scos(current.angle.y - shape_angle.y) + 1.0f) * 0.25f + 0.5f) * daPy_HIO_swim_c0::m.field_0xC; } } else { fVar1 = 0.0f; - mMaxNormalSpeed = l_HIO_swim_c0.m.field_0xC; + mMaxNormalSpeed = daPy_HIO_swim_c0::m.field_0xC; } - setNormalSpeedF(fVar1, l_HIO_swim_c0.m.field_0x18, l_HIO_swim_c0.m.field_0x1C, l_HIO_swim_c0.m.field_0x20); + setNormalSpeedF(fVar1, daPy_HIO_swim_c0::m.field_0x18, daPy_HIO_swim_c0::m.field_0x1C, daPy_HIO_swim_c0::m.field_0x20); if (bVar3 && mVelocity < 5.0f) { current.angle.y = m34E8; @@ -117,7 +113,7 @@ BOOL daPy_lk_c::changeSwimProc() { BOOL res; cXyz local_18; - if (checkNoResetFlg0(daPyFlg0_UNK80) && !checkModeFlg(ModeFlg_IN_SHIP | ModeFlg_SWIM) && !checkNoControll() && mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK11_e && m35D0 - current.pos.y > l_HIO_swim_c0.m.field_0x24) { + if (checkNoResetFlg0(daPyFlg0_UNK80) && !checkModeFlg(ModeFlg_IN_SHIP | ModeFlg_SWIM) && !checkNoControll() && mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK11_e && m35D0 - current.pos.y > daPy_HIO_swim_c0::m.field_0x24) { dComIfGp_setItemTimeCount(900); dComIfGp_setItemTimeMax(900); @@ -128,7 +124,7 @@ BOOL daPy_lk_c::changeSwimProc() { offNoResetFlg0(daPyFlg0_UNK100); - mMaxNormalSpeed = l_HIO_swim_c0.m.field_0xC; + mMaxNormalSpeed = daPy_HIO_swim_c0::m.field_0xC; mVelocity *= 0.75f; if (mVelocity >= mMaxNormalSpeed) { @@ -140,11 +136,11 @@ BOOL daPy_lk_c::changeSwimProc() { setSwimTimerStartStop(); if (checkModeFlg(ModeFlg_MIDAIR)) { - current.pos.y += l_HIO_swim_c0.m.field_0x24; - speed.y = mOldSpeed.y * l_HIO_swim_c0.m.field_0x10; + current.pos.y += daPy_HIO_swim_c0::m.field_0x24; + speed.y = mOldSpeed.y * daPy_HIO_swim_c0::m.field_0x10; - if (speed.y < l_HIO_swim_c0.m.field_0x14) { - speed.y = l_HIO_swim_c0.m.field_0x14; + if (speed.y < daPy_HIO_swim_c0::m.field_0x14) { + speed.y = daPy_HIO_swim_c0::m.field_0x14; } else if (speed.y > 0.0f) { speed.y = 0.0f; @@ -175,16 +171,16 @@ BOOL daPy_lk_c::changeSwimProc() { /* 8013D1B0-8013D2AC .text changeSwimUpProc__9daPy_lk_cFv */ BOOL daPy_lk_c::changeSwimUpProc() { - if (speed.y < l_HIO_swim_c0.m.field_0x68) { - speed.y += l_HIO_swim_c0.m.field_0x64; - if (speed.y > l_HIO_swim_c0.m.field_0x68) { - speed.y = l_HIO_swim_c0.m.field_0x68; + if (speed.y < daPy_HIO_swim_c0::m.field_0x68) { + speed.y += daPy_HIO_swim_c0::m.field_0x64; + if (speed.y > daPy_HIO_swim_c0::m.field_0x68) { + speed.y = daPy_HIO_swim_c0::m.field_0x68; } if (speed.y > 0.0f && mEquipItem != daPyItem_NONE_e) { deleteEquipItem(TRUE); } } - if (m35D0 - current.pos.y < 40.1f + l_HIO_swim_c0.m.field_0x28 && speed.y >= 0.0f) { + if (m35D0 - current.pos.y < 40.1f + daPy_HIO_swim_c0::m.field_0x28 && speed.y >= 0.0f) { if (mCurProc == daPyProc_DEMO_DEAD_e) { onNoResetFlg0(daPyFlg0_UNK100); current.pos.y = m35D0; @@ -232,10 +228,10 @@ BOOL daPy_lk_c::changeSwimOutProc() { swimOutAfter(TRUE); - return procFall_init(1, l_HIO_wallCatch_c0.m.field_0x54); + return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54); } - if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && pcVar1->mNormal.y >= 0.5f && m35D0 - mAcch.GetGroundH() < l_HIO_swim_c0.m.field_0x24 - 5.0f)) { + if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && pcVar1->mNormal.y >= 0.5f && m35D0 - mAcch.GetGroundH() < daPy_HIO_swim_c0::m.field_0x24 - 5.0f)) { current.pos.y = m35D0; if (mCurProc == daPyProc_SWIM_MOVE_e && mDirection != DIR_FORWARD) { @@ -259,10 +255,10 @@ BOOL daPy_lk_c::changeSwimOutProc() { void daPy_lk_c::setSwimMoveAnime(daPy_ANM swimMoveAnm) { f32 startFrame = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); f32 endFrame = startFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd(); - f32 rate = (std::fabsf(mVelocity) * (l_HIO_swim_c0.m.field_0x54 - l_HIO_swim_c0.m.field_0x50) / mMaxNormalSpeed) + - l_HIO_swim_c0.m.field_0x50 + - (getSwimTimerRate() * l_HIO_swim_c0.m.field_0x74); - setSingleMoveAnime(swimMoveAnm, rate, 0.0f, -1, l_HIO_swim_c0.m.field_0x58); + f32 rate = (std::fabsf(mVelocity) * (daPy_HIO_swim_c0::m.field_0x54 - daPy_HIO_swim_c0::m.field_0x50) / mMaxNormalSpeed) + + daPy_HIO_swim_c0::m.field_0x50 + + (getSwimTimerRate() * daPy_HIO_swim_c0::m.field_0x74); + setSingleMoveAnime(swimMoveAnm, rate, 0.0f, -1, daPy_HIO_swim_c0::m.field_0x58); mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(endFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd()); mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); } @@ -295,15 +291,15 @@ void daPy_lk_c::setSwimTimerStartStop() { float swimTimerRate = getSwimTimerRate(); if (swimTimerRate > 0.5f) { - target = cM_scos(cM_rad2s((1.0f - swimTimerRate) * M_PI)) * -l_HIO_swim_c0.m.field_0x78; + target = cM_scos(cM_rad2s((1.0f - swimTimerRate) * M_PI)) * -daPy_HIO_swim_c0::m.field_0x78; if (mFrameCtrlUnder->checkPass(0.0f) && mCurProc != daPyProc_SWIM_UP_e) { - if (m3570 && !checkNoResetFlg0(daPyFlg0_UNK4000)) { + if (mProcVar0.m3570 && !checkNoResetFlg0(daPyFlg0_UNK4000)) { voiceStart(0x22); - m3570 = 0; + mProcVar0.m3570 = 0; } else { - m3570 = 1; + mProcVar0.m3570 = 1; } } } @@ -331,11 +327,11 @@ BOOL daPy_lk_c::procSwimUp_init(BOOL param_1) { current.pos.y = m35D0; - setSingleMoveAnime(ANM_SWIMP, l_HIO_swim_c0.m.field_0x2C, l_HIO_swim_c0.m.field_0x30, l_HIO_swim_c0.m.field_0x0, l_HIO_swim_c0.m.field_0x38); + setSingleMoveAnime(ANM_SWIMP, daPy_HIO_swim_c0::m.field_0x2C, daPy_HIO_swim_c0::m.field_0x30, daPy_HIO_swim_c0::m.field_0x0, daPy_HIO_swim_c0::m.field_0x38); dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e); - m35C4 = l_HIO_swim_c0.m.field_0x3C; + m35C4 = daPy_HIO_swim_c0::m.field_0x3C; onNoResetFlg0(daPyFlg0_UNK100); @@ -356,7 +352,7 @@ BOOL daPy_lk_c::procSwimUp_init(BOOL param_1) { } } - m3570 = 0; + mProcVar0.m3570 = 0; return TRUE; } @@ -371,7 +367,7 @@ BOOL daPy_lk_c::procSwimUp() { procSwimWait_init(FALSE); } else { - if (mFrameCtrl->getFrame() > l_HIO_swim_c0.m.field_0x34) { + if (mFrameCtrl->getFrame() > daPy_HIO_swim_c0::m.field_0x34) { if (mStickDistance > 0.05f) { procSwimMove_init(FALSE); } @@ -383,7 +379,7 @@ BOOL daPy_lk_c::procSwimUp() { seStartOnlyReverb(JA_SE_LK_SWIM); } else { - m35C4 = l_HIO_swim_c0.m.field_0x3C; + m35C4 = daPy_HIO_swim_c0::m.field_0x3C; current.pos.y = m35D0; } } @@ -405,14 +401,14 @@ BOOL daPy_lk_c::procSwimWait_init(BOOL param_1) { if (param_1) { fVar2 = mFrameCtrl->getFrame() / (float)mFrameCtrl->getEnd(); uVar3 = cM_rad2s(fVar2 * M_PI); - mVelocity = speedF * (1.0f - l_HIO_swim_c0.m.field_0x60) + speedF * std::fabsf(cM_scos(uVar3)) * l_HIO_swim_c0.m.field_0x60; + mVelocity = speedF * (1.0f - daPy_HIO_swim_c0::m.field_0x60) + speedF * std::fabsf(cM_scos(uVar3)) * daPy_HIO_swim_c0::m.field_0x60; } else { fVar2 = 0.0f; } gravity = 0.0f; - setSingleMoveAnime(ANM_SWIMWAIT, (float)(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x70) + l_HIO_swim_c0.m.field_0x40, 0.0f, -1, l_HIO_swim_c0.m.field_0x44); + setSingleMoveAnime(ANM_SWIMWAIT, (float)(getSwimTimerRate() * daPy_HIO_swim_c0::m.field_0x70) + daPy_HIO_swim_c0::m.field_0x40, 0.0f, -1, daPy_HIO_swim_c0::m.field_0x44); mFrameCtrl->setFrame(fVar2 * mFrameCtrl->getEnd()); mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrl->getFrame()); dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e); @@ -425,17 +421,17 @@ BOOL daPy_lk_c::procSwimWait_init(BOOL param_1) { speed.y = 0.0f; } - m35C4 = l_HIO_swim_c0.m.field_0x48; + m35C4 = daPy_HIO_swim_c0::m.field_0x48; m34D4 = 0; - m3570 = 0; + mProcVar0.m3570 = 0; return TRUE; } /* 8013DCDC-8013DE8C .text procSwimWait__9daPy_lk_cFv */ BOOL daPy_lk_c::procSwimWait() { setSpeedAndAngleSwim(); - m34D4 += (short)((cM_rndF(0.3f) + 0.85f) * l_HIO_swim_c0.m.field_0x2); - m35C4 = cM_ssin(m34D4) * l_HIO_swim_c0.m.field_0x4C + l_HIO_swim_c0.m.field_0x48; + m34D4 += (short)((cM_rndF(0.3f) + 0.85f) * daPy_HIO_swim_c0::m.field_0x2); + m35C4 = cM_ssin(m34D4) * daPy_HIO_swim_c0::m.field_0x4C + daPy_HIO_swim_c0::m.field_0x48; if (changeSwimOutProc()) { return TRUE; @@ -458,12 +454,12 @@ BOOL daPy_lk_c::procSwimWait() { fopAc_ac_c* talkEventPartner = fopAcM_getTalkEventPartner(this); if (talkEventPartner) { short targetAngleY = cLib_targetAngleY(¤t.pos, &talkEventPartner->eyePos); - cLib_addCalcAngleS(&shape_angle.y, targetAngleY, l_HIO_turn_c0.m.field_0x6, l_HIO_turn_c0.m.field_0x8, l_HIO_turn_c0.m.field_0xA); + cLib_addCalcAngleS(&shape_angle.y, targetAngleY, daPy_HIO_turn_c0::m.field_0x6, daPy_HIO_turn_c0::m.field_0x8, daPy_HIO_turn_c0::m.field_0xA); current.angle.y = shape_angle.y; } } - mFrameCtrlUnder[UNDER_MOVE0_e].setRate((getSwimTimerRate() * l_HIO_swim_c0.m.field_0x70) + l_HIO_swim_c0.m.field_0x40); + mFrameCtrlUnder[UNDER_MOVE0_e].setRate((getSwimTimerRate() * daPy_HIO_swim_c0::m.field_0x70) + daPy_HIO_swim_c0::m.field_0x40); if (mStickDistance > 0.05f) { procSwimMove_init(TRUE); @@ -501,8 +497,8 @@ BOOL daPy_lk_c::procSwimMove_init(BOOL param_1) { dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e); - m35C4 = l_HIO_swim_c0.m.field_0x5C; - m3570 = 0; + m35C4 = daPy_HIO_swim_c0::m.field_0x5C; + mProcVar0.m3570 = 0; return TRUE; } @@ -532,7 +528,7 @@ BOOL daPy_lk_c::procSwimMove() { if (mDirection == DIR_FORWARD) { anm = ANM_SWIMING; - m35C4 = l_HIO_swim_c0.m.field_0x5C; + m35C4 = daPy_HIO_swim_c0::m.field_0x5C; } else { m35C4 = -80.0f; @@ -563,7 +559,7 @@ BOOL daPy_lk_c::procSwimMove() { } } else { - mFrameCtrl[0].setRate((std::fabsf(mVelocity) * (l_HIO_swim_c0.m.field_0x54 - l_HIO_swim_c0.m.field_0x50)) / mMaxNormalSpeed + l_HIO_swim_c0.m.field_0x50 + (float)(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x74)); + mFrameCtrl[0].setRate((std::fabsf(mVelocity) * (daPy_HIO_swim_c0::m.field_0x54 - daPy_HIO_swim_c0::m.field_0x50)) / mMaxNormalSpeed + daPy_HIO_swim_c0::m.field_0x50 + (float)(getSwimTimerRate() * daPy_HIO_swim_c0::m.field_0x74)); } if (mDirection == DIR_BACKWARD) { diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index 680f606bb..4059a48a1 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -126,7 +126,6 @@ void daPy_lk_c::setSwordModel(BOOL r28) { /* 80154FBC-80155490 .text setLightSaver__9daPy_lk_cFv */ void daPy_lk_c::setLightSaver() { - /* Nonmatching - floats, .sdata2, branching */ static JGeometry::TVec3 d_scale(1.4f, 1.4f, 1.4f); static JGeometry::TVec3 p_scale(1.6f, 1.4f, 1.4f); static const GXColor g_prm0 = {0x09, 0x14, 0x06, 0xFF}; @@ -142,92 +141,93 @@ void daPy_lk_c::setLightSaver() { const GXColor* pbVar8; const GXColor* pbVar9; - if ((((mEquipItem == daPyItem_SWORD_e) && (mpEquipItemBrk != NULL)) && (mpSwordBtk != NULL)) && - ((mpSwordModel1 != NULL && (mpEquipItemModel == NULL)))) + if ((((mEquipItem != daPyItem_SWORD_e) || (mpEquipItemBrk == NULL)) || (mpSwordBtk == NULL)) || + ((mpSwordModel1 == NULL || (mpEquipItemModel == NULL)))) { - if (checkChanceMode()) { - mpEquipItemBrk->setFrame(1.0f); + return; + } + if (checkChanceMode()) { + mpEquipItemBrk->setFrame(1.0f); + } else { + if (checkNoResetFlg1(daPyFlg1_UNK8000)) { + mpEquipItemBrk->setFrame(0.0f); } else { - if (checkNoResetFlg1(daPyFlg1_UNK8000)) { - mpEquipItemBrk->setFrame(0.0f); - } else { - mpEquipItemBrk->setFrame(2.0f); - } + mpEquipItemBrk->setFrame(2.0f); } - mpSwordModel1->setBaseTRMtx(mpEquipItemModel->getBaseTRMtx()); - if ((!checkDemoSwordNoDraw(0)) && - (((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000))) || - (checkFinalMasterSwordEquip())))) + } + mpSwordModel1->setBaseTRMtx(mpEquipItemModel->getBaseTRMtx()); + if ((!checkDemoSwordNoDraw(0)) && + (((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000))) || + (checkFinalMasterSwordEquip())))) + { + simpleAnmPlay(mpSwordBtk); + if (((m3454).mpEmitter == NULL) && + ((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000))))) { - simpleAnmPlay(mpSwordBtk); - if (((m3454).mpEmitter == NULL) && - ((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000))))) - { - pJVar7 = m3454.makeEmitter(dPa_name::ID_COMMON_0309, mpSwordModel1->getAnmMtx(2), - ¤t.pos, NULL); - if (pJVar7 != 0) { - if (checkMasterSwordEquip()) { - pJVar7->setGlobalDynamicsScale(d_scale); - pJVar7->setGlobalParticleScale(p_scale); - } - } - } else { - if ((!checkChanceMode()) && - ((!checkNoResetFlg1(daPyFlg1_UNK8000) && (checkFinalMasterSwordEquip())))) - { - m3454.end(); - } - } - if (checkChanceMode()) { - pbVar8 = &g_prm0; - pbVar9 = &g_env0; - } else { - pbVar8 = &y_prm0; - pbVar9 = &y_env0; - } - pJVar7 = (m3454).mpEmitter; - if (pJVar7 != NULL) { - pJVar7->setGlobalPrmColor(pbVar8->r, pbVar8->g, pbVar8->b); - pJVar7->setGlobalEnvColor(pbVar9->r, pbVar9->g, pbVar9->b); - } - if (((dComIfGp_getDoStatus() == 26) && (m355C == 0)) || - (((checkNoResetFlg1(daPyFlg1_UNK8000) || (checkFinalMasterSwordEquip())) && - (!checkNoResetFlg1(daPyFlg1_UNK200000))))) - { - if ((dComIfGp_getDoStatus() == 26) && (m355C == 0)) { - pbVar9 = &g_prm1; - pbVar8 = pbVar9; - dComIfGp_getVibration().StartShock(6, 1, cXyz(0.0f, 1.0f, 0.0f)); - } else if (checkNoResetFlg1(daPyFlg1_UNK8000)) { - pbVar9 = &y_prm1; - pbVar8 = &y_env1; - } else { - pbVar9 = &s_prm1; - pbVar8 = &s_env1; - } - pJVar7 = dComIfGp_particle_setP1(dPa_name::ID_COMMON_030A, ¤t.pos, NULL, NULL, - 0xff, NULL, -1, pbVar9, pbVar8, NULL); - if (pJVar7 != 0) { - JPASetRMtxTVecfromMtx(mpEquipItemModel->getAnmMtx(2), pJVar7->mGlobalRotation, - pJVar7->mGlobalTranslation); - if (checkMasterSwordEquip()) { - pJVar7->setGlobalDynamicsScale(d_scale); - pJVar7->setGlobalParticleScale(p_scale); - } - if (pbVar9 == &g_prm1) { - m355C = 0x1e; - } else { - onNoResetFlg1(daPyFlg1_UNK200000); - } + pJVar7 = m3454.makeEmitter(dPa_name::ID_COMMON_0309, mpSwordModel1->getAnmMtx(2), + ¤t.pos, NULL); + if (pJVar7 != 0) { + if (checkMasterSwordEquip()) { + pJVar7->setGlobalDynamicsScale(d_scale); + pJVar7->setGlobalParticleScale(p_scale); } } } else { - m3454.end(); - mpSwordBtk->setFrame(0.0f); + if ((!checkChanceMode()) && + ((!checkNoResetFlg1(daPyFlg1_UNK8000) && (checkFinalMasterSwordEquip())))) + { + m3454.end(); + } } - if ((m355C > 0) && (!checkChanceMode())) { - m355C--; + if (checkChanceMode()) { + pbVar8 = &g_prm0; + pbVar9 = &g_env0; + } else { + pbVar8 = &y_prm0; + pbVar9 = &y_env0; } + pJVar7 = (m3454).mpEmitter; + if (pJVar7 != NULL) { + pJVar7->setGlobalPrmColor(pbVar8->r, pbVar8->g, pbVar8->b); + pJVar7->setGlobalEnvColor(pbVar9->r, pbVar9->g, pbVar9->b); + } + if (((dComIfGp_getDoStatus() == 26) && (m355C == 0)) || + (((checkNoResetFlg1(daPyFlg1_UNK8000) || (checkFinalMasterSwordEquip())) && + (!checkNoResetFlg1(daPyFlg1_UNK200000))))) + { + if ((dComIfGp_getDoStatus() == 26) && (m355C == 0)) { + pbVar9 = &g_prm1; + pbVar8 = pbVar9; + dComIfGp_getVibration().StartShock(6, 1, cXyz(0.0f, 1.0f, 0.0f)); + } else if (checkNoResetFlg1(daPyFlg1_UNK8000)) { + pbVar9 = &y_prm1; + pbVar8 = &y_env1; + } else { + pbVar9 = &s_prm1; + pbVar8 = &s_env1; + } + pJVar7 = dComIfGp_particle_setP1(dPa_name::ID_COMMON_030A, ¤t.pos, NULL, NULL, + 0xFF, NULL, -1, pbVar9, pbVar8, NULL); + if (pJVar7 != 0) { + JPASetRMtxTVecfromMtx(mpEquipItemModel->getAnmMtx(2), pJVar7->mGlobalRotation, + pJVar7->mGlobalTranslation); + if (checkMasterSwordEquip()) { + pJVar7->setGlobalDynamicsScale(d_scale); + pJVar7->setGlobalParticleScale(p_scale); + } + if (pbVar9 == &g_prm1) { + m355C = 0x1e; + } else { + onNoResetFlg1(daPyFlg1_UNK200000); + } + } + } + } else { + m3454.end(); + mpSwordBtk->setFrame(0.0f); + } + if ((m355C > 0) && (!checkChanceMode())) { + m355C--; } } @@ -454,12 +454,11 @@ int daPy_lk_c::changeCutProc() { /* 80155C3C-80156034 .text changeCutReverseProc__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ int daPy_lk_c::changeCutReverseProc(daPy_ANM param_0) { - /* Nonmatching - floats, branching */ if ((mEquipItem != dItem_SKULL_HAMMER_e) && (((mAtCps[0].ChkAtShieldHit() || (mAtCps[1].ChkAtShieldHit())) || (mAtCps[2].ChkAtShieldHit())))) { - procCutReverse_init(param_0); + return procCutReverse_init(param_0); } else if (checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { cXyz local_24; local_24.x = current.pos.x; @@ -525,7 +524,7 @@ int daPy_lk_c::changeCutReverseProc(daPy_ANM param_0) { } } dKy_Sound_set(current.pos, 100, fopAcM_GetID(this), 5); - procCutReverse_init(param_0); + return procCutReverse_init(param_0); } else if (mCurProc == daPyProc_HAMMER_FRONT_SWING_e) { return true; } @@ -1281,7 +1280,6 @@ BOOL daPy_lk_c::procCutExB() { /* 80157D3C-80158220 .text procCutTurn_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procCutTurn_init(int param_0) { - /* Nonmatching - floats */ float fVar1; commonProcInit(daPyProc_CUT_TURN_e); @@ -1377,10 +1375,10 @@ BOOL daPy_lk_c::procCutTurn_init(int param_0) { m35A0 = 21.0f; } } - m3570 = 0; + mProcVar0.m3570 = 0; if (m34C4 == 6) { onNoResetFlg0(daPyFlg0_UNK4); - m3570 = 1; + mProcVar0.m3570 = 1; } else { mCutCount = 0; } @@ -1394,7 +1392,7 @@ BOOL daPy_lk_c::procCutTurn_init(int param_0) { BOOL daPy_lk_c::procCutTurn() { J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; m35EC = frameCtrl.getFrame(); - if (((m3570 != 0) && (swordButton())) && (m34C5 == 0)) { + if (((mProcVar0.m3570 != 0) && (swordButton())) && (m34C5 == 0)) { onNoResetFlg0(daPyFlg0_UNK4); } else { offNoResetFlg0(daPyFlg0_UNK4); @@ -1832,7 +1830,7 @@ BOOL daPy_lk_c::procJumpCut_init(int param_0) { gravity = daPy_HIO_cutJump_c0::m.field_0x1C; } current.angle.y = shape_angle.y; - m3570 = 0; + mProcVar0.m3570 = 0; voiceStart(1); dComIfGp_setPlayerStatus0(0, daPyStts0_SWORD_SWING_e); if (mEquipItem == daPyItem_BOKO_e) { @@ -1896,7 +1894,7 @@ BOOL daPy_lk_c::procJumpCutLand_init() { daPy_HIO_cutJump_c0::m.field_0x40 ); if (mEquipItem == daPyItem_NONE_e) { - m3570 = 0; + mProcVar0.m3570 = 0; } else { onResetFlg0(daPyRFlg0_UNK2); if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { @@ -1910,7 +1908,7 @@ BOOL daPy_lk_c::procJumpCutLand_init() { onNoResetFlg0(daPyFlg0_CUT_AT_FLG); } setJumpCutAtParam(); - m3570 = 1; + mProcVar0.m3570 = 1; } m34D0 = daPy_HIO_cutJump_c0::m.field_0x4; current.angle.y = shape_angle.y + 0x8000; @@ -1931,7 +1929,7 @@ BOOL daPy_lk_c::procJumpCutLand_init() { BOOL daPy_lk_c::procJumpCutLand() { current.angle.y = shape_angle.y; resetFootEffect(); - if (m3570 != 0 && changeCutReverseProc(ANM_CUTRER)) { + if (mProcVar0.m3570 != 0 && changeCutReverseProc(ANM_CUTRER)) { return true; } @@ -1946,8 +1944,8 @@ BOOL daPy_lk_c::procJumpCutLand() { if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_cutJump_c0::m.field_0x44) { checkNextMode(1); } else { - if (m3570 != 0) { - m3570 = 0; + if (mProcVar0.m3570 != 0) { + mProcVar0.m3570 = 0; if (abs(m3578) > 0xf800 && (daPy_dmEcallBack_c::m_type != 1) && (mEquipItem == daPyItem_SWORD_e || mEquipItem == daPyItem_BOKO_e)) { diff --git a/src/d/actor/d_a_player_tact.inc b/src/d/actor/d_a_player_tact.inc index 1bab7cae7..23f53b58b 100644 --- a/src/d/actor/d_a_player_tact.inc +++ b/src/d/actor/d_a_player_tact.inc @@ -136,7 +136,7 @@ BOOL daPy_lk_c::getTactTopPos(cXyz* out) { /* 8014DACC-8014DB00 .text getTactNormalWait__9daPy_lk_cCFv */ BOOL daPy_lk_c::getTactNormalWait() const { - if (mCurProc == daPyProc_TACT_WAIT_e && m3570 == -1 && m34D2 == -1) { + if (mCurProc == daPyProc_TACT_WAIT_e && mProcVar0.m3570 == -1 && m34D2 == -1) { return TRUE; } return FALSE; @@ -145,7 +145,7 @@ BOOL daPy_lk_c::getTactNormalWait() const { /* 8014DB00-8014DB2C .text getTactMusic__9daPy_lk_cCFv */ s32 daPy_lk_c::getTactMusic() const { if (mCurProc == daPyProc_TACT_PLAY_e) - return m3570; + return mProcVar0.m3570; if (mCurProc == daPyProc_TACT_WAIT_e) return m3574; return -1; @@ -185,13 +185,13 @@ void daPy_lk_c::resetTactCount() { /* 8014DBEC-8014E100 .text procTactWait_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procTactWait_init(int r30) { if (mCurProc == daPyProc_TACT_WAIT_e) { - if (m3570 != r30) { + if (mProcVar0.m3570 != r30) { m34D8 = 0; m34DA = 0; m34D2 = -1; } - m3570 = r30; - if (m3570 != -4) { + mProcVar0.m3570 = r30; + if (mProcVar0.m3570 != -4) { g_dComIfG_gameInfo.play.field_0x4947 = 1; } else { g_dComIfG_gameInfo.play.field_0x4947 = 0; @@ -269,7 +269,7 @@ BOOL daPy_lk_c::procTactWait_init(int r30) { m34D2 = -1; m32E4.makeEmitter(dPa_name::ID_COMMON_0050, mpEquipItemModel->getBaseTRMtx(), ¤t.pos, NULL); - m3570 = r30; + mProcVar0.m3570 = r30; m34D8 = 0; m3574 = -1; m35A0 = 0.0f; @@ -277,7 +277,7 @@ BOOL daPy_lk_c::procTactWait_init(int r30) { m3624 = 0; m35A4 = 0.0f; m35A8 = 0.0f; - if (m3570 == 6 || m3570 == 7) { + if (mProcVar0.m3570 == 6 || mProcVar0.m3570 == 7) { m35AC = 600.0f; } else { m35AC = 900.0f; @@ -285,7 +285,7 @@ BOOL daPy_lk_c::procTactWait_init(int r30) { m34D0 = -1; setTactZev(-1, -1, NULL); - if (m3570 != -4) { + if (mProcVar0.m3570 != -4) { g_dComIfG_gameInfo.play.field_0x4947 = 1; } mDoAud_taktModeMute(); @@ -297,35 +297,35 @@ BOOL daPy_lk_c::procTactWait_init(int r30) { BOOL daPy_lk_c::procTactWait() { setShipRidePosUseItem(); mDoAud_tact_ambientPlay(); - if (m3570 == -4) { + if (mProcVar0.m3570 == -4) { dComIfGp_evmng_cutEnd(mStaffIdx); return TRUE; } if (m34D2 > 0) { m34D2--; - if (m3570 == -5) { + if (mProcVar0.m3570 == -5) { m35A0 += 1.0f; } if (m34D2 == 0) { - if (m3570 == -5 || m3570 == 6 || m3570 == 7) { + if (mProcVar0.m3570 == -5 || mProcVar0.m3570 == 6 || mProcVar0.m3570 == 7) { dComIfGp_evmng_cutEnd(mStaffIdx); g_dComIfG_gameInfo.play.field_0x4947 = 0; - } else if (m3570 == -1 || m3570 == -3 || m3570 >= 0) { - procTactPlay_init(m3574, m3570 == -1, m3570 >= 0); + } else if (mProcVar0.m3570 == -1 || mProcVar0.m3570 == -3 || mProcVar0.m3570 >= 0) { + procTactPlay_init(m3574, mProcVar0.m3570 == -1, mProcVar0.m3570 >= 0); } } return TRUE; } - if (m3570 == 5 || m3570 == 1 || m3570 == 6 || m3570 == 7) { + if (mProcVar0.m3570 == 5 || mProcVar0.m3570 == 1 || mProcVar0.m3570 == 6 || mProcVar0.m3570 == 7) { if (m35AC >= 0.0f) { m35AC -= 1.0f; } - if (m3570 == 5) { + if (mProcVar0.m3570 == 5) { dComIfGp_setAStatus(7); } - } else if (m3570 != -5) { + } else if (mProcVar0.m3570 != -5) { dComIfGp_setAStatus(7); } @@ -338,11 +338,11 @@ BOOL daPy_lk_c::procTactWait() { g_dComIfG_gameInfo.play.field_0x4947 = 0; - if (cancelTrigger() && m3570 == 5) { + if (cancelTrigger() && mProcVar0.m3570 == 5) { m35AC = -1000.0f; } - if (m3570 == -1) { + if (mProcVar0.m3570 == -1) { dComIfGp_event_reset(); dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); endDemoMode(); @@ -354,7 +354,7 @@ BOOL daPy_lk_c::procTactWait() { } int rightDir, leftDir; - if (m3570 != -5) { + if (mProcVar0.m3570 != -5) { rightDir = mDoAud_getTactDirection(1, m34D4); leftDir = mDoAud_getTactDirection(0, m34D6); mDoAud_tact_setVolume(mStickDistance * cM_scos(m34DC)); @@ -457,20 +457,20 @@ BOOL daPy_lk_c::procTactWait() { onResetFlg0(daPyRFlg0_TACT_INPUT); m34D0 = -1; - if ((m3570 >= 0 && m3570 == m3574) || - ((m3570 == -1 || m3570 == -3) && (m3574 >= 0 && m3574 != 6 && m3574 != 7 && dComIfGs_isTact(m3574)))) + if ((mProcVar0.m3570 >= 0 && mProcVar0.m3570 == m3574) || + ((mProcVar0.m3570 == -1 || mProcVar0.m3570 == -3) && (m3574 >= 0 && m3574 != 6 && m3574 != 7 && dComIfGs_isTact(m3574)))) { m34D2 = 30; mDoAud_seStart(JA_SE_WTAKT_MATCH_SIGNAL); m35A0 = 0.0f; } else { m3574 = -1; - if (m3570 == -5) { + if (mProcVar0.m3570 == -5) { m34D8++; if (m34D8 == 6) { m34D2 = 15; } - } else if (m3570 == -2) { + } else if (mProcVar0.m3570 == -2) { m34D8++; if (m34D8 == 5) { m34D2 = 30; @@ -508,7 +508,7 @@ BOOL daPy_lk_c::procTactPlay_init(s32 r27, int r30, int r31) { int r28 = checkShipRideUseItem(0); commonProcInit(daPyProc_TACT_PLAY_e); dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e); - m3570 = r27; + mProcVar0.m3570 = r27; if (r31 == 0) { m3628 = fopMsgM_messageSet(0x5AD + r27); } else { @@ -537,7 +537,7 @@ BOOL daPy_lk_c::procTactPlay_init(s32 r27, int r30, int r31) { initShipRideUseItem(r28, 2); - if (r28 != 0 && m3570 == 1) { + if (r28 != 0 && mProcVar0.m3570 == 1) { stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); if (dStage_stagInfo_GetSTType(stag_info) == dStageType_SEA_e && m34CC != 1 && r30 != 0) { daShip_c* ship = dComIfGp_getShipActor(); @@ -575,7 +575,7 @@ BOOL daPy_lk_c::procTactPlay() { } else if (m34DA > 0) { m34DA--; if (m34DA == 0) { - mDoAud_tact_melodyPlay(m3570); + mDoAud_tact_melodyPlay(mProcVar0.m3570); } } @@ -596,7 +596,7 @@ BOOL daPy_lk_c::procTactPlay() { m3628 = fpcM_ERROR_PROCESS_ID_e; } - if (mTactZevPartnerId != fpcM_ERROR_PROCESS_ID_e && m34CC == m3570) { + if (mTactZevPartnerId != fpcM_ERROR_PROCESS_ID_e && m34CC == mProcVar0.m3570) { tactZevPartner = fopAcM_SearchByID(mTactZevPartnerId); } @@ -617,23 +617,23 @@ BOOL daPy_lk_c::procTactPlay() { } } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { if (dKyw_gbwind_use_check()) { - return procTactPlayEnd_init(m3570); + return procTactPlayEnd_init(mProcVar0.m3570); } m3624 = 0x14A5; - } else if (m3570 == 1) { + } else if (mProcVar0.m3570 == 1) { daShip_c* ship = dComIfGp_getShipActor(); if (ship != NULL && ship->getTactWarpID() != fpcM_ERROR_PROCESS_ID_e) { - return procTactPlayEnd_init(m3570); + return procTactPlayEnd_init(mProcVar0.m3570); } m3624 = 0x14A6; - } else if (m3570 == 2) { + } else if (mProcVar0.m3570 == 2) { if (checkNpcStatus() && !dComIfGp_checkPlayerStatus0(0, daPyStts1_UNK10000_e)) { - return procTactPlayEnd_init(m3570); + return procTactPlayEnd_init(mProcVar0.m3570); } m3624 = 0x14A8; - } else if (m3570 == 5) { + } else if (mProcVar0.m3570 == 5) { if (dKy_daynighttact_stop_chk()) { m3624 = 0x14A7; } else { @@ -642,7 +642,7 @@ BOOL daPy_lk_c::procTactPlay() { if (dStage_FileList_dt_GetSongOk(fili_p)) { m3624 = 0x14AA; } else { - return procTactPlayEnd_init(m3570); + return procTactPlayEnd_init(mProcVar0.m3570); } } } else { @@ -670,7 +670,7 @@ BOOL daPy_lk_c::procTactPlayEnd_init(int r30) { commonProcInit(daPyProc_TACT_PLAY_END_e); dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e); initShipRideUseItem(r28, 2); - m3570 = r30; + mProcVar0.m3570 = r30; mVelocity = 0.0f; setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); @@ -701,16 +701,16 @@ BOOL daPy_lk_c::procTactPlayEnd_init(int r30) { BOOL daPy_lk_c::procTactPlayEnd() { if (dComIfGp_checkPlayerStatus0(0, daPyStts1_UNK10000_e)) { setShipRidePos(0); - if (m3570 == 0 && !dComIfGp_evmng_startCheck(l_tact_wind_change_event_label) && + if (mProcVar0.m3570 == 0 && !dComIfGp_evmng_startCheck(l_tact_wind_change_event_label) && !dComIfGp_evmng_startCheck(l_tact_wind_change_event_label2)) { cLib_addCalcAngleS(&shape_angle.y, m34D6, 5, 0x1000, 0x100); } } - if (m3570 == 0) { + if (mProcVar0.m3570 == 0) { dComIfGp_setAStatus(0x07); - } else if (m3570 == 5) { + } else if (mProcVar0.m3570 == 5) { if (dComIfGp_evmng_endCheck(l_tact_night_event_label) && !checkNoResetFlg0(daPyFlg0_UNK4000)) { onNoResetFlg0(daPyFlg0_UNK4000); fopAc_ac_c* ship; @@ -737,13 +737,13 @@ BOOL daPy_lk_c::procTactPlayEnd() { dStage_turnRestart(); mDoAud_taktModeMuteOff(); } - } else if (m3570 == 2) { + } else if (mProcVar0.m3570 == 2) { if (dComIfGp_evmng_endCheck(l_tact_event_label)) { dComIfGp_event_reset(); changePlayer(dComIfGp_getCb1Player()); endDemoMode(); } - } else if (m3570 == 1) { + } else if (mProcVar0.m3570 == 1) { if (m3574 == 0) { if (dComIfGp_getMesgStatus() == 0) { dComIfGp_fmapOpenOn(); @@ -783,8 +783,8 @@ BOOL daPy_lk_c::procTactPlayOriginal_init() { daPy_matAnm_c::offMabaFlg(); setSingleMoveAnime(ANM_WAITTAKT, daPy_HIO_tact_c0::m.mAnmRate, 0.0f, -1, daPy_HIO_tact_c0::m.field_0x4); - m3570 = dComIfGp_event_getTactFreeMStick(m34D0); - setActAnimeUpper(getTactPlayRightArmAnm(m3570), UPPER_MOVE1_e, 0.0f, 0.0f, -1, -1.0f); + mProcVar0.m3570 = dComIfGp_event_getTactFreeMStick(m34D0); + setActAnimeUpper(getTactPlayRightArmAnm(mProcVar0.m3570), UPPER_MOVE1_e, 0.0f, 0.0f, -1, -1.0f); mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f); m3574 = dComIfGp_event_getTactFreeCStick(m34D0); @@ -793,8 +793,8 @@ BOOL daPy_lk_c::procTactPlayOriginal_init() { setTextureAnime(0, 0); m3530 = 3; - mDoAud_tact_setStickPos(m3570, m3574); - mDoAud_tact_playArmSwing(m3570, m3574); + mDoAud_tact_setStickPos(mProcVar0.m3570, m3574); + mDoAud_tact_playArmSwing(mProcVar0.m3570, m3574); setTactModel(); m32E4.makeEmitter(dPa_name::ID_COMMON_0051, mpEquipItemModel->getBaseTRMtx(), ¤t.pos, NULL); m34D6 = 0xF; @@ -820,12 +820,12 @@ BOOL daPy_lk_c::procTactPlayOriginal() { } else { m34D6 = 0xF; - m3570 = dComIfGp_event_getTactFreeMStick(m34D0); + mProcVar0.m3570 = dComIfGp_event_getTactFreeMStick(m34D0); setActAnimeUpper( - getTactPlayRightArmAnm(m3570), UPPER_MOVE1_e, daPy_HIO_tact_c0::m.mRightArmAnmRate, 0.0f, -1, 5.0f + getTactPlayRightArmAnm(mProcVar0.m3570), UPPER_MOVE1_e, daPy_HIO_tact_c0::m.mRightArmAnmRate, 0.0f, -1, 5.0f ); mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f); - if (m3570 == 0 || m3570 == 2 || m3570 == 4) { + if (mProcVar0.m3570 == 0 || mProcVar0.m3570 == 2 || mProcVar0.m3570 == 4) { mFrameCtrlUpper[UPPER_MOVE1_e].setRate(daPy_HIO_tact_c0::m.mAnmRate); mFrameCtrlUpper[UPPER_MOVE1_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); } @@ -835,8 +835,8 @@ BOOL daPy_lk_c::procTactPlayOriginal() { mAnmRatioUpper[UPPER_MOVE2_e].setRatio(0.0f); mFrameCtrlUpper[UPPER_MOVE2_e].setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); - mDoAud_tact_setStickPos(m3570, m3574); - mDoAud_tact_playArmSwing(m3570, m3574); + mDoAud_tact_setStickPos(mProcVar0.m3570, m3574); + mDoAud_tact_playArmSwing(mProcVar0.m3570, m3574); } } diff --git a/src/d/actor/d_a_player_vomit.inc b/src/d/actor/d_a_player_vomit.inc index 3b44dea43..91da147a5 100644 --- a/src/d/actor/d_a_player_vomit.inc +++ b/src/d/actor/d_a_player_vomit.inc @@ -147,7 +147,7 @@ BOOL daPy_lk_c::procVomitJump_init(int param_0) { } else { fVar1 = -1.0f; } - m3570 = param_0; + mProcVar0.m3570 = param_0; setSingleMoveAnime(ANM_VOMITJMP, 1.0f, 0.0f, -1, fVar1); dComIfGp_setPlayerStatus0(0, daPyStts0_UNK80000000_e); mStts.ClrCcMove(); @@ -171,7 +171,7 @@ BOOL daPy_lk_c::procVomitJump_init(int param_0) { voiceStart(0); if (param_0 == 3) { speed.y = 46.0f; - m3570 = 1; + mProcVar0.m3570 = 1; } else { speed.y = daPy_HIO_vomit_c0::m.field_0x1C; } @@ -206,7 +206,7 @@ BOOL daPy_lk_c::procVomitJump() { if (sVar1 < 0 && 0 < shape_angle.x) { seStartOnlyReverb(JA_SE_LK_JUMP_FLOWER_OUT); } - if (m3570 == 1) { + if (mProcVar0.m3570 == 1) { cLib_addCalc(&mVelocity, daPy_HIO_vomit_c0::m.field_0x20, 0.5f, 2.0f, 0.1f); } else { f32 fVar2; @@ -245,7 +245,7 @@ BOOL daPy_lk_c::procVomitLand_init() { daPy_HIO_vomit_c0::m.field_0x2C ); m34D0 = daPy_HIO_vomit_c0::m.field_0x6; - m3570 = 0; + mProcVar0.m3570 = 0; m34BE = 5; return true; } @@ -253,7 +253,7 @@ BOOL daPy_lk_c::procVomitLand_init() { /* 80150164-8015023C .text procVomitLand__9daPy_lk_cFv */ BOOL daPy_lk_c::procVomitLand() { resetFootEffect(); - if (m3570 != 0) { + if (mProcVar0.m3570 != 0) { if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) { checkNextMode(0); } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_vomit_c0::m.field_0x3C) { @@ -270,7 +270,7 @@ BOOL daPy_lk_c::procVomitLand() { daPy_HIO_vomit_c0::m.field_0x8, daPy_HIO_vomit_c0::m.field_0x38 ); - m3570 = 1; + mProcVar0.m3570 = 1; } } return true; diff --git a/src/d/actor/d_a_player_weapon.inc b/src/d/actor/d_a_player_weapon.inc index b6662ddbb..f0fb389b7 100644 --- a/src/d/actor/d_a_player_weapon.inc +++ b/src/d/actor/d_a_player_weapon.inc @@ -362,7 +362,6 @@ BOOL daPy_lk_c::procWeaponThrow_init() { /* 8015411C-80154334 .text procWeaponThrow__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponThrow() { - /* Nonmatching - floats */ J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; if ((frameCtrl.getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) { diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index c6159e1e6..4c3f0db07 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -284,11 +284,11 @@ BOOL daPy_lk_c::procWHideReady_init(cM3dGPla* param_0, cXyz* param_1) { resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); } setSingleMoveAnime(ANM_WALL, 0.0f, daPy_HIO_wall_c0::m.field_0x24, -1, daPy_HIO_wall_c0::m.field_0x34); - m3570 = 1; + mProcVar0.m3570 = 1; } else { setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC); setAnimeUnequip(); - m3570 = 0; + mProcVar0.m3570 = 0; } if (uVar1 != 0) { dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e); @@ -301,10 +301,10 @@ BOOL daPy_lk_c::procWHideReady() { if (changeWHideEndProc(NULL)) { return true; } - if (m3570 == 0) { + if (mProcVar0.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; + mProcVar0.m3570 = 1; } return true; }