From c130095d7fece88718f172cdcdd9b8ffb89c70df Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sun, 19 Nov 2023 22:33:45 -0500 Subject: [PATCH] player_main work, player_ship start --- include/d/actor/d_a_player.h | 1 + include/d/actor/d_a_player_main.h | 66 ++++++---- include/d/actor/d_a_ship.h | 7 +- include/d/d_cc_d.h | 4 +- include/d/d_com_inf_game.h | 8 ++ include/m_Do/m_Do_audio.h | 4 + include/m_Do/m_Do_ext.h | 2 +- src/d/actor/d_a_kytag04.cpp | 5 +- src/d/actor/d_a_kytag06.cpp | 5 +- src/d/actor/d_a_player_battle.inc | 2 +- src/d/actor/d_a_player_boomerang.inc | 2 +- src/d/actor/d_a_player_bottle.inc | 2 +- src/d/actor/d_a_player_bow.inc | 2 +- src/d/actor/d_a_player_climb.inc | 2 +- src/d/actor/d_a_player_crawl.inc | 2 +- src/d/actor/d_a_player_dproc.inc | 2 +- src/d/actor/d_a_player_fan.inc | 2 +- src/d/actor/d_a_player_food.inc | 2 +- src/d/actor/d_a_player_grab.inc | 2 +- src/d/actor/d_a_player_hammer.inc | 2 +- src/d/actor/d_a_player_hang.inc | 2 +- src/d/actor/d_a_player_hook.inc | 2 +- src/d/actor/d_a_player_ladder.inc | 2 +- src/d/actor/d_a_player_main.cpp | 175 +++++++++++++++++++++------ src/d/actor/d_a_player_particle.inc | 2 +- src/d/actor/d_a_player_pushpull.inc | 2 +- src/d/actor/d_a_player_rope.inc | 2 +- src/d/actor/d_a_player_ship.inc | 38 +++++- src/d/actor/d_a_player_swim.inc | 2 +- src/d/actor/d_a_player_sword.inc | 2 +- src/d/actor/d_a_player_tact.inc | 2 +- src/d/actor/d_a_player_vomit.inc | 2 +- src/d/actor/d_a_player_weapon.inc | 2 +- src/d/actor/d_a_player_whide.inc | 2 +- 34 files changed, 261 insertions(+), 100 deletions(-) diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index b3e5f19e0..50c2114a7 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -114,6 +114,7 @@ public: daPyFlg1_FORCE_VOMIT_JUMP_SHORT = 0x00010000, daPyFlg1_FOREST_WATER_USE = 0x00020000, daPyFlg1_WATER_DROP = 0x00080000, + daPyFlg1_UNK200000 = 0x00200000, daPyFlg1_UNK800000 = 0x00800000, daPyFlg1_UNK1000000 = 0x01000000, daPyFlg1_VINE_CATCH = 0x02000000, diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 103c17d50..db7f2052b 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -110,7 +110,7 @@ public: class daPy_swimTailEcallBack_c : public dPa_levelEcallBack { public: void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8); - void getMaxWaterY(JGeometry::TVec3*); + void getMaxWaterY(JGeometry::TVec3*); void remove(); void execute(JPABaseEmitter*); void draw(JPABaseEmitter*); @@ -176,7 +176,7 @@ public: class daPy_swBlur_c : public J3DPacket { public: - void initSwBlur(MtxP, int, float, int); + void initSwBlur(MtxP, int, f32, int); void copySwBlur(MtxP, int); void draw(); ~daPy_swBlur_c() {} @@ -212,7 +212,10 @@ struct daPy_aura_c { f32 getFrame() { return mFrame; } }; -class daPy_anmIndex_c; +class daPy_anmIndex_c { +public: + +}; enum LINK_RES_FILE_ID { // IDs and indexes are synced /* BCK */ @@ -1506,13 +1509,13 @@ public: void initSeAnime(); void resetSeAnime(); void setMoveAnime(f32, f32, f32, daPy_lk_c::daPy_ANM, daPy_lk_c::daPy_ANM, int, f32); - void setSingleMoveAnime(daPy_lk_c::daPy_ANM, float, float, short, float); + BOOL setSingleMoveAnime(daPy_lk_c::daPy_ANM, f32, f32, s16, f32); void setActAnimeUpper(u16, daPy_lk_c::daPy_UPPER, f32, f32, s16, f32); - void resetActAnimeUpper(daPy_lk_c::daPy_UPPER, float); + void resetActAnimeUpper(daPy_lk_c::daPy_UPPER, f32); void animeUpdate(); void simpleAnmPlay(J3DAnmBase*); void setHandModel(daPy_lk_c::daPy_ANM); - void getAnmData(daPy_lk_c::daPy_ANM) const; + daPy_anmIndex_c* getAnmData(daPy_lk_c::daPy_ANM) const; BOOL checkGrabWeapon(int); void endDemoMode(); void setAuraEffect(); @@ -2066,7 +2069,6 @@ public: void getIceWaterParticleBtk() {} void getShadowID() const {} void npcStartRestartRoom() {} - void offModeFlg(u32) {} void setDaiokutaEnd() {} void setWhirlId(unsigned int) {} @@ -2074,6 +2076,10 @@ public: int getStartMode() { return (fopAcM_GetParam(this) >> 0x0C) & 0xF; } int getStartEvent() { return (fopAcM_GetParam(this) >> 0x18) & 0xFF; } + void onModeFlg(u32 flag) { mModeFlg |= flag; } + void offModeFlg(u32 flag) { mModeFlg &= ~flag; } + BOOL checkModeFlg(u32 flag) const { return mModeFlg & flag; } + request_of_phase_process_class* getPhase() { return &mPhsLoad; } virtual MtxP getLeftHandMatrix() { return mpCLModel->getAnmMtx(0x08); } // cl_LhandA joint @@ -2083,7 +2089,7 @@ public: virtual int getTactTimerCancel() const; virtual BOOL checkPlayerGuard() const; virtual fopAc_ac_c* getGrabMissActor(); - virtual BOOL checkPlayerFly() const { return mProcFlags & 0x10452822; } // TODO add enum + virtual BOOL checkPlayerFly() const { return checkModeFlg(0x10452822); } // TODO add enum virtual BOOL checkFrontRoll() const { return mCurProcID == PROC_FRONT_ROLL_e; } virtual BOOL checkBottleSwing() const { return mCurProcID == PROC_BOTTLE_SWING_e; } virtual BOOL checkCutCharge() const { return mCurProcID == PROC_CUT_TURN_MOVE_e; } @@ -2109,7 +2115,7 @@ public: virtual BOOL setHookshotCarryOffset(unsigned int, const cXyz*); virtual void setPlayerPosAndAngle(cXyz*, s16); virtual void setPlayerPosAndAngle(cXyz*, csXyz*); - virtual void setPlayerPosAndAngle(float (*)[4]); + virtual void setPlayerPosAndAngle(MtxP); virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int); virtual void changeTextureAnime(u16, u16, int); virtual void cancelChangeTextureAnime(); @@ -2165,7 +2171,7 @@ public: /* 0x2E90 */ JKRSolidHeap* mpItemHeaps[2]; /* 0x2E98 */ J3DModel* mpHeldItemModel; /* 0x2E9C */ mDoExt_bckAnm mSwordAnim; - /* 0x2EAC */ u8 m2EAC[0x2EB0 - 0x2EAC]; + /* 0x2EAC */ mDoExt_McaMorf* m2EAC; /* 0x2EB0 */ J3DAnmTevRegKey* mpBombBrk; /* 0x2EB4 */ J3DAnmTevRegKey* mpGwp00BrkData; /* 0x2EB8 */ J3DAnmTextureSRTKey* mpGwp00BtkData; @@ -2284,7 +2290,10 @@ public: /* 0x34C9 */ u8 m34C9; /* 0x34CA */ u8 m34CA; /* 0x34CB */ u8 mDekuSpRestartPoint; - /* 0x34CC */ u8 m34CC[0x34D0 - 0x34CC]; + /* 0x34CC */ u8 m34CC; + /* 0x34CD */ u8 m34CD; + /* 0x34CE */ u8 m34CE; + /* 0x34CF */ u8 m34CF[0x34D0 - 0x34CF]; /* 0x34D0 */ s16 m34D0; /* 0x34D2 */ s16 m34D2; /* 0x34D4 */ s16 m34D4; @@ -2342,16 +2351,20 @@ public: /* 0x353C */ s16 m353C; /* 0x353E */ s16 m353E; /* 0x3540 */ s16 m3540; - /* 0x3542 */ u8 m3542[0x3544 - 0x3542]; + /* 0x3542 */ s16 m3542; /* 0x3544 */ s16 m3544; /* 0x3546 */ s16 mShieldFrontRangeYAngle; - /* 0x3548 */ u8 m3548[0x354C - 0x3548]; + /* 0x3548 */ s16 m3548; + /* 0x354A */ u8 m354A[0x354C - 0x354A]; /* 0x354C */ s16 m354C; /* 0x354E */ s16 mTinkleShieldTimer; - /* 0x3550 */ u8 m3550[0x3552 - 0x3550]; + /* 0x3550 */ s16 m3550; /* 0x3552 */ u16 mKeepItemType; /* 0x3554 */ s16 m3554; - /* 0x3556 */ u8 m3556[0x355E - 0x3556]; + /* 0x3556 */ u8 m3556[0x3558 - 0x3556]; + /* 0x3558 */ s16 m3558; + /* 0x355A */ s16 m355A; + /* 0x355C */ s16 m355C; /* 0x355E */ u16 m355E; /* 0x3560 */ u16 mHeldItemType; /* 0x3562 */ u8 m3562[0x3564 - 0x3562]; @@ -2362,7 +2375,8 @@ public: /* 0x356C */ int mCameraInfoIdx; /* 0x3570 */ int m3570; /* 0x3574 */ int m3574; - /* 0x3578 */ u8 m3578[0x3580 - 0x3578]; + /* 0x3578 */ int m3578; + /* 0x357C */ u8 m357C[0x3580 - 0x357C]; /* 0x3580 */ int m3580; /* 0x3584 */ int mCurrentGroundAttributeCode; /* 0x3588 */ u8 m3588[0x358C - 0x3588]; @@ -2373,7 +2387,9 @@ public: /* 0x359C */ u8 m359C[0x35A0 - 0x359C]; /* 0x35A0 */ f32 m35A0; /* 0x35A4 */ f32 m35A4; - /* 0x35A8 */ u8 m35A8[0x35BC - 0x35A8]; + /* 0x35A8 */ u8 m35A8[0x35B0 - 0x35A8]; + /* 0x35B0 */ f32 m35B0; + /* 0x35B4 */ u8 m35B4[0x35BC - 0x35B4]; /* 0x35BC */ f32 mVelocity; /* 0x35C0 */ u8 m35C0[0x35C4 - 0x35C0]; /* 0x35C4 */ f32 m35C4; @@ -2396,7 +2412,7 @@ public: /* 0x360C */ f32 mSeAnmRate; /* 0x3610 */ f32 m3610; /* 0x3614 */ int m3614; - /* 0x3618 */ u32 mProcFlags; + /* 0x3618 */ u32 mModeFlg; /* 0x361C */ u32 mMtrlSndId; /* 0x3620 */ u32 m3620; /* 0x3624 */ int m3624; @@ -2409,9 +2425,8 @@ public: /* 0x3640 */ s16 m3640; /* 0x3642 */ u8 m3642[0x3644 - 0x3642]; /* 0x3644 */ f32 m3644; - /* 0x3648 */ u8 m3648[0x3654 - 0x3648]; - /* 0x3654 */ f32 m3654; - /* 0x3658 */ u8 m3658[0x3668 - 0x3658]; + /* 0x3648 */ Quaternion m3648; + /* 0x3658 */ Quaternion m3658; /* 0x3668 */ J3DTransformInfo m3668; /* 0x3688 */ cXyz m3688; /* 0x3694 */ cXyz mOldSpeed; @@ -2422,15 +2437,16 @@ public: /* 0x36D0 */ cXyz m36D0; /* 0x36DC */ cXyz m36DC; /* 0x36E8 */ cXyz mHookshotRootPos; - /* 0x36F4 */ u8 m36F4[0x3700 - 0x36F4]; + /* 0x36F4 */ cXyz m36F4; /* 0x3700 */ cXyz m3700; /* 0x370C */ cXyz m370C; - /* 0x3718 */ u8 m3718[0x3724 - 0x3718]; + /* 0x3718 */ cXyz m3718; /* 0x3724 */ cXyz m3724; /* 0x3730 */ cXyz m3730; - /* 0x373C */ u8 m373C[0x3748 - 0x373C]; + /* 0x373C */ cXyz m373C; /* 0x3748 */ cXyz m3748; - /* 0x3754 */ u8 m3754[0x37E4 - 0x3754]; + /* 0x3754 */ u8 m3754[0x37B4 - 0x3754]; + /* 0x37B4 */ Mtx m37B4; /* 0x37E4 */ daPy_swBlur_c mSwBlur; /* 0x3DB8 */ daPy_footData_c mFootData[2]; /* 0x3FE8 */ dCcD_Stts mStts; diff --git a/include/d/actor/d_a_ship.h b/include/d/actor/d_a_ship.h index cd2f3dedb..49a34ec68 100644 --- a/include/d/actor/d_a_ship.h +++ b/include/d/actor/d_a_ship.h @@ -100,10 +100,11 @@ public: /* 0x0304 */ J3DModel* mpSalvageArmModel; /* 0x0308 */ J3DModel* field_0x308; /* 0x030C */ mDoExt_3DlineMat1_c mRopeLine; - /* 0x0341 */ u8 field_0x0348[0x034d - 0x0341]; - /* 0x034d */ u8 field_0x034d; + /* 0x0348 */ u8 field_0x0348[0x034D - 0x0348]; + /* 0x034D */ u8 field_0x034D; /* 0x034E */ u8 mShipMode; - /* 0x0358 */ u32 field_0x0358; //showing 390 + /* 0x034F */ u8 field_0x034F[0x0358 - 0x034F]; + /* 0x0358 */ u32 field_0x0358; /* 0x035C */ int mNextMessageID; /* 0x0360 */ int mShadowId; /* 0x0364 */ u8 field_0x0364[0x183C - 0x0364]; diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 674bbe32b..f2660581e 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -292,7 +292,6 @@ public: void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); } void SetTgMtrl(u8 mtrl) { mGObjTg.SetMtrl(mtrl); } fopAc_ac_c* GetAtHitAc() { return mGObjAt.GetAc(); } - bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); } cXyz* GetAtVecP() { return mGObjAt.GetVecP(); } cXyz* GetTgVecP() { return mGObjTg.GetVecP(); } cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); } @@ -361,9 +360,10 @@ public: void SubtractCoEffCounter() { mGObjCo.SubtractEffCounter(); } void OnTgShieldHit() { mGObjTg.OnRPrm(2); } void OffTgShieldHit() { mGObjTg.OffRPrm(2); } + bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); } void OnAtShieldHit() { mGObjAt.OnRPrm(1); } void OffAtShieldHit() { mGObjAt.OffRPrm(1); } - void OffTgMagneHit() { mGObjTg.OffRPrm(4); } + bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); } void SetTgRVec(cXyz& vec) { mGObjTg.SetRVec(vec); } void SetAtRVec(cXyz& vec) { mGObjAt.SetRVec(vec); } void SetTgHitPos(cXyz& pos) { mGObjTg.SetHitPos(pos); } diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 817513edd..c04dfc10f 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1851,6 +1851,14 @@ inline bool dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); } +inline void dComIfGp_setPlayerStatus0(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 0, flag); +} + +inline void dComIfGp_setPlayerStatus1(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 1, flag); +} + inline void dComIfGp_clearPlayerStatus0(int param_0, u32 flag) { g_dComIfG_gameInfo.play.clearPlayerStatus(param_0, 0, flag); } diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index 12380f2b2..e99bd8a92 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -97,6 +97,10 @@ inline void mDoAud_seStart(u32 i_sfxID, Vec* i_sePos, u32 param_2, s8 i_reverb) mDoAud_zelAudio_c::getInterface()->seStart(i_sfxID, i_sePos, param_2, i_reverb, 1.0f, 1.0f, -1.0f, -1.0f, 0); } +inline void mDoAud_bgmSetSwordUsing(s32 param_1) { + mDoAud_zelAudio_c::getInterface()->bgmSetSwordUsing(param_1); +} + inline void mDoAud_seStop(u32 i_sfxID, s32 param_2) { mDoAud_zelAudio_c::getInterface()->seStop(i_sfxID, param_2); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index c8c4cd954..b414a5fc8 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -619,7 +619,7 @@ JKRSolidHeap * mDoExt_createSolidHeapFromSystem(u32 i_size, u32 i_alignment); void mDoExt_restoreCurrentHeap(); s32 mDoExt_adjustSolidHeap(JKRSolidHeap * pHeap); void mDoExt_destroySolidHeap(JKRSolidHeap * pHeap); -JKRHeap* mDoExt_setCurrentHeap(JKRHeap*); +JKRHeap* mDoExt_setCurrentHeap(JKRHeap* pHeap); JUTFont* mDoExt_getMesgFont(); JUTFont* mDoExt_getRubyFont(); diff --git a/src/d/actor/d_a_kytag04.cpp b/src/d/actor/d_a_kytag04.cpp index 850568fe1..9683d93b0 100644 --- a/src/d/actor/d_a_kytag04.cpp +++ b/src/d/actor/d_a_kytag04.cpp @@ -1,6 +1,7 @@ /** -* d_a_kytag04.cpp -*/ + * d_a_kytag04.cpp + */ + #include "JSystem/JKernel/JKRHeap.h" #include "f_op/f_op_actor_mng.h" #include "d/d_com_inf_game.h" diff --git a/src/d/actor/d_a_kytag06.cpp b/src/d/actor/d_a_kytag06.cpp index 77515469e..a280b5d68 100644 --- a/src/d/actor/d_a_kytag06.cpp +++ b/src/d/actor/d_a_kytag06.cpp @@ -1,6 +1,7 @@ /** -* d_a_kytag06.cpp -*/ + * d_a_kytag06.cpp + */ + #include "JSystem/JKernel/JKRHeap.h" #include "f_op/f_op_actor.h" #include "f_op/f_op_actor_mng.h" diff --git a/src/d/actor/d_a_player_battle.inc b/src/d/actor/d_a_player_battle.inc index d1f150d57..37bedbd76 100644 --- a/src/d/actor/d_a_player_battle.inc +++ b/src/d/actor/d_a_player_battle.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_boomerang.inc b/src/d/actor/d_a_player_boomerang.inc index 5b9e87663..e47e7b5c2 100644 --- a/src/d/actor/d_a_player_boomerang.inc +++ b/src/d/actor/d_a_player_boomerang.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_bottle.inc b/src/d/actor/d_a_player_bottle.inc index 4822ac5a0..7a9e67481 100644 --- a/src/d/actor/d_a_player_bottle.inc +++ b/src/d/actor/d_a_player_bottle.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_bow.inc b/src/d/actor/d_a_player_bow.inc index 27cfca84f..4558dfdd9 100644 --- a/src/d/actor/d_a_player_bow.inc +++ b/src/d/actor/d_a_player_bow.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_climb.inc b/src/d/actor/d_a_player_climb.inc index b94635c15..fa72041b9 100644 --- a/src/d/actor/d_a_player_climb.inc +++ b/src/d/actor/d_a_player_climb.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_crawl.inc b/src/d/actor/d_a_player_crawl.inc index ecc299e6b..c12e0d0e0 100644 --- a/src/d/actor/d_a_player_crawl.inc +++ b/src/d/actor/d_a_player_crawl.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 396ef70f7..5656e14d6 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_fan.inc b/src/d/actor/d_a_player_fan.inc index eaf4b3e0c..ae487f589 100644 --- a/src/d/actor/d_a_player_fan.inc +++ b/src/d/actor/d_a_player_fan.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_food.inc b/src/d/actor/d_a_player_food.inc index 29a5d5cf0..f93002c27 100644 --- a/src/d/actor/d_a_player_food.inc +++ b/src/d/actor/d_a_player_food.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" #include "f_op/f_op_camera.h" diff --git a/src/d/actor/d_a_player_grab.inc b/src/d/actor/d_a_player_grab.inc index 16df6dc1b..1fee7f574 100644 --- a/src/d/actor/d_a_player_grab.inc +++ b/src/d/actor/d_a_player_grab.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_hammer.inc b/src/d/actor/d_a_player_hammer.inc index 99cd6a8e3..35a22c3ec 100644 --- a/src/d/actor/d_a_player_hammer.inc +++ b/src/d/actor/d_a_player_hammer.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_hang.inc b/src/d/actor/d_a_player_hang.inc index d28541cda..8ad358a2a 100644 --- a/src/d/actor/d_a_player_hang.inc +++ b/src/d/actor/d_a_player_hang.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_hook.inc b/src/d/actor/d_a_player_hook.inc index d9d2502ce..7340875be 100644 --- a/src/d/actor/d_a_player_hook.inc +++ b/src/d/actor/d_a_player_hook.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_ladder.inc b/src/d/actor/d_a_player_ladder.inc index f2c01bc92..1e1fd58d3 100644 --- a/src/d/actor/d_a_player_ladder.inc +++ b/src/d/actor/d_a_player_ladder.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 8e7408f71..192cb6a24 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -6,7 +6,7 @@ * Much of Link's code is spread across various `.inc` files and included directly * into this one to make the file size more managable. * The original split locations are indicated in the map file. -*/ + */ #include "d/actor/d_a_player_main.h" #include "d/d_com_inf_game.h" @@ -2716,17 +2716,26 @@ void daPy_lk_c::setAtnList() { /* 8010841C-8010848C .text setActor__16daPy_actorKeep_cFv */ void daPy_actorKeep_c::setActor() { - /* Nonmatching */ + if (mID != -1) { + mActor = fopAcM_SearchByID(mID); + if (mActor == NULL) { + mID = -1; + } + } else { + mActor = NULL; + } } /* 8010848C-801084AC .text setData__16daPy_actorKeep_cFP10fopAc_ac_c */ -void daPy_actorKeep_c::setData(fopAc_ac_c*) { - /* Nonmatching */ +void daPy_actorKeep_c::setData(fopAc_ac_c* actor) { + mActor = actor; + mID = fopAcM_GetID(actor); } /* 801084AC-801084C0 .text clearData__16daPy_actorKeep_cFv */ void daPy_actorKeep_c::clearData() { - /* Nonmatching */ + mID = -1; + mActor = NULL; } /* 801084C0-80108564 .text setActorPointer__9daPy_lk_cFv */ @@ -2910,8 +2919,53 @@ BOOL daPy_lk_c::checkEquipAnime() const { } /* 8010C570-8010C71C .text deleteEquipItem__9daPy_lk_cFi */ -void daPy_lk_c::deleteEquipItem(int) { - /* Nonmatching */ +void daPy_lk_c::deleteEquipItem(int param_1) { + fopAc_ac_c* equipActor = mActorKeepEquip.getActor(); + if (param_1 != 0 && (mHeldItemType != 0x100 && mHeldItemType != 0x101)) { + if (mHeldItemType == 0x103) { + seStartOnlyReverb(JA_SE_LK_SW_PUTIN_S); + } else { + seStartOnlyReverb(JA_SE_LK_ITEM_TAKEOUT); + } + } + + if (mHeldItemType == 0x103) { + mDoAud_bgmSetSwordUsing(0); + } else if (mHeldItemType == 0x101) { + if (equipActor != NULL) { + fopAcM_cancelCarryNow(equipActor); + } + } else if (equipActor != NULL) { + fopAcM_delete(equipActor); + } + + if ((mHeldItemType == ROPE && checkRopeAnime()) || + (mHeldItemType == BOOMERANG && checkBoomerangAnime()) || + (mHeldItemType == HOOKSHOT && m_anm_heap_upper[2].mIdx == LKANM_BCK_HOOKSHOTWAIT) || + (checkBowItem(mHeldItemType) && checkBowAnime())) + { + resetActAnimeUpper(UPPER_UNK2, -1.0f); + } + + mActorKeepEquip.clearData(); + mHeldItemType = 0x100; + mpHeldItemModel = NULL; + if (mSwordAnim.getBckAnm() != NULL) { + mSwordAnim.changeBckOnly(NULL); + } + m2EAC = NULL; + mpHeldItemModelAnimTexEx = NULL; + mpBottleContentsModel = NULL; + mpBottleCapModel = NULL; + mpHeldItemAnimBRK = NULL; + mpSwordAnimBTK = NULL; + mpSwordModel1 = NULL; + m3454.end(); + mpSwordTipStabModel = NULL; + m2EF8 = 0; + m2EF4 = 0; + m2EF0 = 0; + offNoResetFlg1(daPyFlg1_UNK200000); } /* 8010C71C-8010C7F4 .text setFallVoice__9daPy_lk_cFv */ @@ -3180,7 +3234,7 @@ BOOL daPy_lk_c::checkSubjectEnd(int) { /* 80112280-80112330 .text checkGuardAccept__9daPy_lk_cFv */ BOOL daPy_lk_c::checkGuardAccept() { - if (mProcFlags & 0x40 && !checkBowAnime()) { + if (checkModeFlg(0x40) && !checkBowAnime()) { u32 stageType = dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()); if (stageType != 2 || strcmp(dComIfGp_getStartStageName(), "Ojhous") == 0 || @@ -3250,28 +3304,28 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC procID) { returnKeepItemData(); - temp_r28 = (mProcFlags & 0x40000) >> 0x12; + temp_r28 = checkModeFlg(0x40000) >> 0x12; - if (mProcFlags & 0x10040820) { + if (checkModeFlg(0x10040820)) { m34C2 = 0xA; } - temp_r29 = ((mProcFlags & 0x2) >> 1) ^ 1; + temp_r29 = (checkModeFlg(0x2) >> 1) ^ 1; mCurProcID = procID; mCurProcFunc = procInit.mProcFunc; m3598 = 0.0f; - mProcFlags = procInit.mProcFlags; + mModeFlg = procInit.mProcFlags; if (m34C2 == 1) { m34C2 = 2; } - if (mProcFlags & 0x10040820) { + if (checkModeFlg(0x10040820)) { m34C2 = 0xB; } - if (mProcFlags & 0x20) { + if (checkModeFlg(0x20)) { mAcch.OffLineCheck(); } else { mAcch.OnLineCheck(); @@ -3298,20 +3352,20 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC procID) { shape_angle.z = 0; m34EC = 0; - if (!(checkEquipAnime() && (mProcFlags & 0x4)) && !(mProcFlags & 0x1000)) { - if (!(checkGrabAnime() || checkBoomerangThrowAnime()) || !(mProcFlags & 0x4000)) { + if (!(checkEquipAnime() && checkModeFlg(0x4)) && !checkModeFlg(0x1000)) { + if (!(checkGrabAnime() || checkBoomerangThrowAnime()) || !checkModeFlg(0x4000)) { resetActAnimeUpper(UPPER_UNK2, -1.0f); - if (!(mProcFlags & 0x00100000)) { + if (!checkModeFlg(0x00100000)) { freeGrabItem(); } } } - if (!(mProcFlags & 0x00100000) && !checkGrabAnime() && mActorKeepGrab.getActor()) { + if (!checkModeFlg(0x00100000) && !checkGrabAnime() && mActorKeepGrab.getActor()) { freeGrabItem(); } - if (temp_r29 && (mProcFlags & 2)) { + if (temp_r29 && checkModeFlg(0x2)) { m3688 = current.pos; m35F0 = m3688.y; m35F4 = m3688.y; @@ -3322,7 +3376,7 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC procID) { mSwimTailEcallBack[1].onEnd(); } - if (!(mProcFlags & 0x40000)) { + if (!checkModeFlg(0x40000)) { m3608 = 0.0f; } @@ -3354,13 +3408,13 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC procID) { m35E8 = 0.0f; - if (!(mProcFlags & 0x800) && mCurProcID != PROC_ROPE_SUBJECT_e && mCurProcID != PROC_ROPE_MOVE_e) { + if (!checkModeFlg(0x800) && mCurProcID != PROC_ROPE_SUBJECT_e && mCurProcID != PROC_ROPE_MOVE_e) { freeRopeItem(); } - if (!(mProcFlags & 0x200)) { + if (!checkModeFlg(0x200)) { freeHookshotItem(); } - if (temp_r28 && !(mProcFlags & 0x40000)) { + if (temp_r28 && !checkModeFlg(0x40000)) { swimOutAfter(0); } @@ -3981,26 +4035,26 @@ void daPy_lk_c::setBgCheckParam() { mAcchCir[0].SetWallH(-125.0f); mAcchCir[1].SetWallH(-89.9f); mAcchCir[2].SetWallH(0.0f); - } else if (mCurProcID == PROC_LARGE_DAMAGE_WALL_e || mProcFlags & 0x410000) { + } else if (mCurProcID == PROC_LARGE_DAMAGE_WALL_e || checkModeFlg(0x410000)) { mAcchCir[0].SetWallR(5.0f); - } else if (mProcFlags & 0x200000) { + } else if (checkModeFlg(0x200000)) { mAcchCir[0].SetWallR(40.0f); - } else if (mProcFlags & 0x10) { + } else if (checkModeFlg(0x10)) { mAcchCir[0].SetWallR(daPy_HIO_wall_c0::m.field_0x50); if (checkNoResetFlg0(daPyFlg0_UNK10000)) { mAcchCir[2].SetWallH(89.9f); } - } else if (mProcFlags & 0x40000) { + } else if (checkModeFlg(0x40000)) { mAcchCir[0].SetWallR(67.5f); mAcchCir[0].SetWallH(-5.0f); mAcchCir[1].SetWallH(0.0f); mAcchCir[2].SetWallH(20.0f); - } else if (mProcFlags & 0x1000000 && mCurProcID != PROC_CRAWL_END_e) { + } else if (checkModeFlg(0x1000000) && mCurProcID != PROC_CRAWL_END_e) { mAcchCir[0].SetWallR(30.0f); mAcchCir[0].SetWallH(10.0f); mAcchCir[1].SetWallH(50.0f); mAcchCir[2].SetWallH(50.0f); - } else if (mProcFlags & 0x20) { + } else if (checkModeFlg(0x20)) { mAcchCir[0].SetWallR(12.5f); mAcchCir[0].SetWallH(25.0f); mAcchCir[1].SetWallH(25.0f); @@ -4161,8 +4215,11 @@ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int } /* 80120BBC-80120BE0 .text checkSuccessGuard__9daPy_lk_cFi */ -BOOL daPy_lk_c::checkSuccessGuard(int) { - /* Nonmatching */ +BOOL daPy_lk_c::checkSuccessGuard(int param_1) { + if (!mCyl.ChkTgShieldHit() || param_1 >= 8) { + return FALSE; + } + return TRUE; } /* 80120BE0-80120F94 .text setShapeAngleOnGround__9daPy_lk_cFv */ @@ -4425,8 +4482,13 @@ void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_lk_c::daPy_HEAP_TYPE) { } /* 80124A40-80124B30 .text initModel__9daPy_lk_cFPP8J3DModeliUl */ -J3DModelData* daPy_lk_c::initModel(J3DModel**, int, u32) { - /* Nonmatching */ +J3DModelData* daPy_lk_c::initModel(J3DModel** i_model, int i_fileIndex, u32 i_differedDlistFlag) { + J3DModelData* tmp_modelData; + tmp_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, i_fileIndex); + JUT_ASSERT(21340, tmp_modelData != 0); + *i_model = mDoExt_J3DModel__create(tmp_modelData, 0x00080000, i_differedDlistFlag); + JUT_ASSERT(21344, *i_model != 0); + return tmp_modelData; } /* 80124B30-80124BE4 .text entryBtk__9daPy_lk_cFP12J3DModelDatai */ @@ -4619,7 +4681,7 @@ void daPy_lk_c::playerInit() { current.angle.z = 0; shape_angle.z = 0; m3526 = 8; - m3654 = 1.0f; + m3648.w = 1.0f; resetSeAnime(); ResTIMG* tmp_tex = (ResTIMG*)dComIfG_getObjectRes("Always", ALWAYS_I4_BALL128B); @@ -4831,8 +4893,47 @@ void daPy_lk_c::setMoveAnime(f32, f32, f32, daPy_lk_c::daPy_ANM, daPy_lk_c::daPy } /* 8012821C-80128494 .text setSingleMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANMffsf */ -void daPy_lk_c::setSingleMoveAnime(daPy_lk_c::daPy_ANM, f32, f32, s16, f32) { - /* Nonmatching */ +BOOL daPy_lk_c::setSingleMoveAnime(daPy_lk_c::daPy_ANM param_1, f32 param_2, f32 param_3, s16 param_4, f32 param_5) { + const daPy_anmIndex_c* anmData = getAnmData(param_1); + J3DAnmTransform* under_bck; + J3DAnmTransform* upper_bck; + getUnderUpperAnime(anmData, &under_bck, &upper_bck, 0, 0xB400); + m_anm_heap_under[1].mIdx = -1; + m_anm_heap_upper[1].mIdx = -1; + mAnmRatioUpper[0].setRatio(1.0f); + mAnmRatioUpper[1].setRatio(0.0f); + mAnmRatioUnder[0].setRatio(1.0f); + mAnmRatioUnder[1].setRatio(0.0f); + mAnmRatioUnder[0].setAnmTransform(under_bck); + mAnmRatioUnder[1].setAnmTransform(NULL); + + s16 maxFrame = param_4 < 0 ? under_bck->getFrameMax() : param_4; + f32 f29 = param_2 < 0.0f ? maxFrame-0.001f : param_3; + setFrameCtrl(&mFrameCtrlUnder[0], under_bck->getAttribute(), param_3, maxFrame, param_2, f29); + under_bck->setFrame(f29); + + if (upper_bck) { + mAnmRatioUpper[0].setAnmTransform(upper_bck); + maxFrame = param_4 < 0 ? upper_bck->getFrameMax() : param_4; + f29 = param_2 < 0.0f ? maxFrame-0.001f : param_3; + // Note: It uses under_bck->getAttribute() again here instead of using upper_bck->getAttribute(). + setFrameCtrl(&mFrameCtrlUpper[0], under_bck->getAttribute(), param_3, maxFrame, param_2, f29); + upper_bck->setFrame(f29); + } else { + mAnmRatioUpper[0].setAnmTransform(under_bck); + } + mAnmRatioUpper[1].setAnmTransform(NULL); + + if (param_5 >= 0.0f) { + m_old_fdata->initOldFrameMorf(param_5, 0, 0x2A); + } + + setTextureAnime(mAnmDataTable[param_1].mTexAnmIdx, 0); + setHandModel(param_1); + setSeAnime(&m_anm_heap_under[0], &mFrameCtrlUnder[0]); + m34C3 = 0; + + return TRUE; } /* 80128494-801285F8 .text setActAnimeUpper__9daPy_lk_cFUsQ29daPy_lk_c10daPy_UPPERffsf */ @@ -4862,7 +4963,7 @@ void daPy_lk_c::setHandModel(daPy_lk_c::daPy_ANM anmIdx) { } /* 801288A0-8012894C .text getAnmData__9daPy_lk_cCFQ29daPy_lk_c8daPy_ANM */ -void daPy_lk_c::getAnmData(daPy_lk_c::daPy_ANM) const { +daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_lk_c::daPy_ANM) const { /* Nonmatching */ } diff --git a/src/d/actor/d_a_player_particle.inc b/src/d/actor/d_a_player_particle.inc index 588c5982a..cd741efc5 100644 --- a/src/d/actor/d_a_player_particle.inc +++ b/src/d/actor/d_a_player_particle.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_pushpull.inc b/src/d/actor/d_a_player_pushpull.inc index 9848899f1..75a00d226 100644 --- a/src/d/actor/d_a_player_pushpull.inc +++ b/src/d/actor/d_a_player_pushpull.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_rope.inc b/src/d/actor/d_a_player_rope.inc index ba28a12df..b8c826cbb 100644 --- a/src/d/actor/d_a_player_rope.inc +++ b/src/d/actor/d_a_player_rope.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_ship.inc b/src/d/actor/d_a_player_ship.inc index 91fbc7264..44423de5d 100644 --- a/src/d/actor/d_a_player_ship.inc +++ b/src/d/actor/d_a_player_ship.inc @@ -8,9 +8,10 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" +#include "d/actor/d_a_ship.h" /* 8013F848-8013F8AC .text shipSpecialDemoStart__9daPy_lk_cFv */ void daPy_lk_c::shipSpecialDemoStart() { @@ -33,13 +34,40 @@ void daPy_lk_c::setShipRideArmAngle(int, J3DTransformInfo*) { } /* 8013FE78-8013FEF4 .text checkShipRideUseItem__9daPy_lk_cFi */ -int daPy_lk_c::checkShipRideUseItem(int) { - /* Nonmatching */ +int daPy_lk_c::checkShipRideUseItem(int param_1) { + if (dComIfGp_checkPlayerStatus0(0, 0x10000) && dComIfGp_getShipActor() != NULL) { + if (param_1 != 0) { + deleteEquipItem(0); + } + if (checkShipNotNormalMode()) { + return 2; + } else { + return 1; + } + } + return 0; } /* 8013FEF4-8013FFC0 .text initShipRideUseItem__9daPy_lk_cFii */ -void daPy_lk_c::initShipRideUseItem(int, int) { - /* Nonmatching */ +void daPy_lk_c::initShipRideUseItem(int param_1, int param_2) { + if (param_1 == 0) { + return; + } + dComIfGp_getShipActor()->field_0x034D = 2; // TODO probably inline setter + mGravity = 0.0f; + speed.y = 0.0f; + if (param_1 == 1) { + setOldRootQuaternion(0, 0x4000, 0); + } + dComIfGp_setPlayerStatus0(0, 0x10000); + if (param_2 == 2) { + setShipRidePosUseItem(); + } else if (param_2 == 1) { + setShipRidePos(1); + } else { + setShipRidePos(0); + } + onModeFlg(0x2000); } /* 8013FFC0-80140018 .text setShipRidePosUseItem__9daPy_lk_cFv */ diff --git a/src/d/actor/d_a_player_swim.inc b/src/d/actor/d_a_player_swim.inc index a3e4e268c..663ea0599 100644 --- a/src/d/actor/d_a_player_swim.inc +++ b/src/d/actor/d_a_player_swim.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index 6ce02ba21..808885dfb 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -8,7 +8,7 @@ * * The original name of this file is known because of an assert contained within * a function from this file. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_tact.inc b/src/d/actor/d_a_player_tact.inc index 3b20cc1e7..a6f83fbdf 100644 --- a/src/d/actor/d_a_player_tact.inc +++ b/src/d/actor/d_a_player_tact.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_vomit.inc b/src/d/actor/d_a_player_vomit.inc index c7752470a..c8e2be0d6 100644 --- a/src/d/actor/d_a_player_vomit.inc +++ b/src/d/actor/d_a_player_vomit.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_weapon.inc b/src/d/actor/d_a_player_weapon.inc index 105d0c9f9..83562082b 100644 --- a/src/d/actor/d_a_player_weapon.inc +++ b/src/d/actor/d_a_player_weapon.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h" diff --git a/src/d/actor/d_a_player_whide.inc b/src/d/actor/d_a_player_whide.inc index 0bced3fab..7461ab4df 100644 --- a/src/d/actor/d_a_player_whide.inc +++ b/src/d/actor/d_a_player_whide.inc @@ -8,7 +8,7 @@ * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. -*/ + */ #include "d/actor/d_a_player_main.h"