d_a_player_main

This commit is contained in:
LagoLunatic
2024-01-16 14:44:21 -05:00
parent 338d89aeda
commit 2a27075530
30 changed files with 865 additions and 196 deletions
@@ -5,9 +5,6 @@
#include "JSystem/JUtility/JUTNameTab.h"
#include "JSystem/JUtility/JUTDataHeader.h"
typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10;
struct J3DAnmKeyTableBase {
/* 0x00 */ u16 mMaxFrame;
/* 0x02 */ u16 mOffset;
@@ -418,7 +415,7 @@ public:
void searchUpdateMaterialID(J3DMaterialTable*);
void searchUpdateMaterialID(J3DModelData*);
virtual ~J3DAnmTextureSRTKey();
virtual ~J3DAnmTextureSRTKey() {}
void getTransform(u16 idx, J3DTextureSRTInfo* pSRTInfo) const {
calcTransform(getFrame(), idx, pSRTInfo);
@@ -515,7 +512,7 @@ public:
J3DAnmTexPatternFullTable * getAnmTable() const { return mAnmTable; }
virtual ~J3DAnmTexPattern();
virtual ~J3DAnmTexPattern() {}
private:
/* 0x10 */ u16* mTextureIndex;
@@ -3,9 +3,6 @@
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
typedef struct _GXColor GXColor;
typedef struct _GXColorS10 GXColorS10;
class J3DMatColorAnm {
public:
~J3DMatColorAnm() {}
@@ -70,7 +67,7 @@ public:
mAnmIndex = 0;
mAnmTransform = NULL;
}
J3DTexMtxAnm(J3DAnmTextureSRTKey * pAnm, u16 anmIdx) {
J3DTexMtxAnm(J3DAnmTextureSRTKey* pAnm, u16 anmIdx) {
mAnmIndex = anmIdx;
mAnmTransform = pAnm;
}
@@ -100,7 +97,7 @@ public:
mAnmTevReg = NULL;
mAnmIndex = 0;
}
J3DTevKColorAnm(J3DAnmTevRegKey * pAnm, u16 anmIdx) {
J3DTevKColorAnm(J3DAnmTevRegKey* pAnm, u16 anmIdx) {
mAnmTevReg = pAnm;
mAnmIndex = anmIdx;
}
@@ -130,7 +127,7 @@ public:
mAnmTevReg = NULL;
mAnmIndex = 0;
}
J3DTevColorAnm(J3DAnmTevRegKey * pAnm, u16 anmIdx) {
J3DTevColorAnm(J3DAnmTevRegKey* pAnm, u16 anmIdx) {
mAnmTevReg = pAnm;
mAnmIndex = anmIdx;
}
@@ -164,17 +161,17 @@ public:
inline void setTevColorAnm(int i, J3DTevColorAnm* pAnm) { mTevColorAnm[i] = pAnm; }
inline void setTevKColorAnm(int i, J3DTevKColorAnm* pAnm) { mTevKColorAnm[i] = pAnm; }
virtual ~J3DMaterialAnm() {};
virtual ~J3DMaterialAnm() {}
virtual void calc(J3DMaterial*) const;
const J3DTexMtxAnm* getTexMtxAnm(int i) const { return mTexMtxAnm[i]; }
private:
/* 0x04 */ J3DMatColorAnm * mMatColorAnm[2];
/* 0x0C */ J3DTexMtxAnm * mTexMtxAnm[8];
/* 0x2C */ J3DTexNoAnm * mTexNoAnm[8];
/* 0x4C */ J3DTevColorAnm * mTevColorAnm[4];
/* 0x5C */ J3DTevKColorAnm * mTevKColorAnm[4];
/* 0x04 */ J3DMatColorAnm* mMatColorAnm[2];
/* 0x0C */ J3DTexMtxAnm* mTexMtxAnm[8];
/* 0x2C */ J3DTexNoAnm* mTexNoAnm[8];
/* 0x4C */ J3DTevColorAnm* mTevColorAnm[4];
/* 0x5C */ J3DTevKColorAnm* mTevKColorAnm[4];
}; // Size: 0x6C
#endif /* J3DMATERIALANM_H */
@@ -142,6 +142,7 @@ public:
// Appears in TP debug maps but not TWW debug maps.
Vec* getBaseScale() { return &mBaseScale; }
/* 0x000 */ /* vtable */
/* 0x004 */ J3DModelData* mModelData;
/* 0x008 */ u32 mFlags;
/* 0x00C */ u32 mDiffFlag;
+18 -3
View File
@@ -86,15 +86,19 @@ public:
daPyFlg0_HOVER_BOOTS = 0x00001000,
daPyFlg0_UNK4000 = 0x00004000,
daPyFlg0_UNK10000 = 0x00010000,
daPyFlg0_UNK20000 = 0x00020000,
daPyFlg0_NO_FALL_VOICE = 0x00040000,
daPyFlg0_SCOPE_CANCEL = 0x00080000,
daPyFlg0_PHOTO_BOX_CANCEL = 0x00080000, // Same as scope cancel
daPyFlg0_UNK200000 = 0x00200000,
daPyFlg0_UNK400000 = 0x00400000,
daPyFlg0_UNK1000000 = 0x01000000,
daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000,
daPyFlg0_NO_DRAW = 0x08000000,
daPyFlg0_UNK10000000 = 0x10000000,
daPyFlg0_UNK20000000 = 0x20000000,
daPyFlg0_HEAVY_STATE = 0x40000000,
daPyFlg0_UNK80000000 = 0x80000000,
};
enum daPy_FLG1 {
@@ -106,6 +110,7 @@ public:
daPyFlg1_NPC_NOT_CHANGE = 0x00000040,
daPyFlg1_UNK80 = 0x00000080,
daPyFlg1_CONFUSE = 0x00000100,
daPyFlg1_UNK200 = 0x00000200,
daPyFlg1_UNK400 = 0x00000400,
daPyFlg1_FREEZE_STATE = 0x00000800,
daPyFlg1_SHIP_TACT = 0x00001000,
@@ -114,13 +119,16 @@ public:
daPyFlg1_UNK8000 = 0x00008000,
daPyFlg1_FORCE_VOMIT_JUMP_SHORT = 0x00010000,
daPyFlg1_FOREST_WATER_USE = 0x00020000,
daPyFlg1_UNK40000 = 0x00040000,
daPyFlg1_WATER_DROP = 0x00080000,
daPyFlg1_UNK200000 = 0x00200000,
daPyFlg1_UNK800000 = 0x00800000,
daPyFlg1_UNK1000000 = 0x01000000,
daPyFlg1_VINE_CATCH = 0x02000000,
daPyFlg1_UNK8000000 = 0x08000000,
daPyFlg1_UNK10000000 = 0x10000000,
daPyFlg1_LAST_COMBO_WAIT = 0x20000000,
daPyFlg1_UNK40000000 = 0x40000000,
};
enum daPy_RFLG0 {
@@ -129,6 +137,7 @@ public:
daPyRFlg0_GRAB_UP_END = 0x00000020,
daPyRFlg0_AUTO_JUMP_LAND = 0x00000040,
daPyRFlg0_UNK80 = 0x00000080,
daPyRFlg0_UNK200 = 0x00000200,
daPyRFlg0_RIGHT_FOOT_ON_GROUND = 0x00000400,
daPyRFlg0_LEFT_FOOT_ON_GROUND = 0x00000800,
daPyRFlg0_FRONT_ROLL_CRASH = 0x00002000,
@@ -142,6 +151,7 @@ public:
daPyRFlg0_TACT_USE = 0x01000000,
daPyRFlg0_FAIRY_USE = 0x02000000,
daPyRFlg0_UNK8000000 = 0x08000000,
daPyRFlg0_UNK10000000 = 0x10000000,
daPyRFlg0_ARROW_SHOOT = 0x20000000,
// 0x00000001 and 0x00000002 set in daPy_lk_c::dProcLastCombo
// 0x00001000 set in daPy_lk_c::procCrawlMove_init, checked in checkNoCollisionCorret__9daPy_lk_cFv
@@ -437,11 +447,16 @@ public:
bool checkGrabWear() const { return field_0x2b0 < 0.0f; }
bool checkNormalSwordEquip() const {
return dComIfGs_getSelectEquip(0) == SWORD || dComIfGp_getMiniGameType() == 2;
return dComIfGs_getSelectEquip(0) == SWORD ||
dComIfGp_getMiniGameType() == 2;
}
bool checkMasterSwordEquip() const {
return dComIfGs_getSelectEquip(0) == MASTER_SWORD ||
dComIfGs_getSelectEquip(0) == LV3_SWORD ||
dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX;
}
void setFace(daPy_FACE face) { mFace = face; }
void checkMasterSwordEquip() const {}
void checkFinalMasterSwordEquip() const {}
void checkBowMiniGame() const {}
void checkSwordMiniGame() const {}
@@ -493,7 +508,7 @@ public:
void changePlayer(fopAc_ac_c*);
void objWindHitCheck(dCcD_Cyl*);
void setDoButtonQuake();
void stopDoButtonQuake(int);
void stopDoButtonQuake(BOOL);
}; // Size: 0x320
#endif /* D_A_PLAYER */
+56 -44
View File
@@ -143,7 +143,8 @@ public:
/* 0x04 */ JPABaseEmitter* mpEmitter;
/* 0x08 */ cXyz field_0x08;
/* 0x14 */ u8 field_0x14[0x1C - 0x14];
/* 0x14 */ csXyz field_0x14;
/* 0x1A */ u8 field_0x1A[0x1C - 0x1A];
}; // Size: 0x1C
class daPy_waterDropEcallBack_c : public daPy_followEcallBack_c {
@@ -165,18 +166,26 @@ public:
~daPy_dmEcallBack_c() {}
daPy_dmEcallBack_c() {}
static int getTimer() { return m_timer; }
static void setTimer(s16 timer) { m_timer = timer; }
static void setType(u16 type) { m_type = type; }
static void decTimer() { m_timer--; }
static bool checkFlame() { return m_type == 0; }
static bool checkCurse() { return m_type == 1; }
static bool checkElec() { return m_type == 2; }
static void checkFlame() {}
static void decTimer() {}
static void getTimer() {}
static void setCurse(s16) {}
static void setElec(s16) {}
static void setFlame(s16) {}
static void setType(u16 type) { m_type = type; }
static void setFlame(s16 timer) {
setType(0);
setTimer(timer);
}
static void setCurse(s16 timer) {
setType(1);
setTimer(timer);
}
static void setElec(s16 timer) {
setType(2);
setTimer(timer);
}
static s16 m_timer;
static u16 m_type;
@@ -206,8 +215,8 @@ public:
static void onMabaFlg() { m_maba_flg = 1; }
static void offMabaFlg() { m_maba_flg = 0; }
static void decMabaTimer() {}
static void decMorfFrame() {}
static void decMabaTimer() { cLib_calcTimer(&m_maba_timer); }
static void decMorfFrame() { cLib_calcTimer(&m_morf_frame); }
static void getEyeMoveFlg() {}
static void getMabaFlg() {}
static void getMabaTimer() {}
@@ -1258,7 +1267,7 @@ public:
HEAP_TYPE_UNDER_UPPER_e = 0,
HEAP_TYPE_TEXTURE_ANIME_e = 1,
HEAP_TYPE_TEXTURE_SCROLL_e = 2,
HEAP_TYPE_UNK3_e = 3,
HEAP_TYPE_ITEM_ANIME_e = 3,
};
enum daPy_ANM {
@@ -1644,7 +1653,7 @@ public:
void changeDragonShield(int);
BOOL checkNewItemChange(u8);
BOOL checkItemChangeFromButton();
BOOL checkItemAction();
void checkItemAction();
void getSlidePolygon();
BOOL checkJumpCutFromButton();
void orderTalk();
@@ -1666,9 +1675,9 @@ public:
BOOL checkElecReturnDamage(dCcD_GObjInf*, cXyz*);
s32 checkWallAtributeDamage(dBgS_AcchCir*);
BOOL changeDamageProc();
void changeAutoJumpProc();
void changeDemoProc();
void changeDeadProc();
BOOL changeAutoJumpProc();
BOOL changeDemoProc();
BOOL changeDeadProc();
cXyz* getDamageVec(dCcD_GObjInf*);
void setOldRootQuaternion(s16, s16, s16);
BOOL checkRestHPAnime();
@@ -1783,39 +1792,39 @@ public:
BOOL procBootsEquip();
BOOL procNotUse_init(int);
BOOL procNotUse();
void getGroundAngle(cBgS_PolyInfo*, s16);
s16 getGroundAngle(cBgS_PolyInfo*, s16);
void setLegAngle(f32, int, s16*, s16*);
void footBgCheck();
void setWaterY();
void autoGroundHit();
BOOL checkAttentionPosAngle(fopAc_ac_c*, cXyz**);
void setNeckAngle();
BOOL checkOriginalHatAnimation();
void checkOriginalHatAnimation();
void setHatAngle();
void setMoveSlantAngle();
void setWaistAngle();
void setWorldMatrix();
void setAtParam(u32, int, dCcG_At_Spl, u8, u8, u8, f32);
void resetCurse();
BOOL checkLightHit();
void checkLightHit();
void setSwordAtCollision();
void getBlurTopRate();
void setCollision();
void setAttentionPos();
void setRoomInfo();
int setRoomInfo();
void setDemoData();
void setStickData();
void setBgCheckParam();
u32 setParamData(int, int, int, int);
BOOL checkLavaFace(cXyz*, int);
BOOL checkFallCode();
void checkFallCode();
BOOL startRestartRoom(u32, int, f32, int);
BOOL checkSuccessGuard(int);
void setShapeAngleOnGround();
void setStepsOffset();
void setBeltConveyerPower();
void setWindAtPower();
BOOL checkRoofRestart();
void checkRoofRestart();
BOOL execute();
BOOL playerDelete();
void initTextureAnime();
@@ -1877,7 +1886,7 @@ public:
BOOL dProcOpenTreasure_init();
BOOL dProcOpenTreasure();
void setGetItemSound(u16, int);
void setGetDemo();
BOOL setGetDemo();
BOOL dProcGetItem_init();
BOOL dProcGetItem();
BOOL dProcUnequip_init();
@@ -2398,7 +2407,7 @@ public:
}
void onShipTact() { onNoResetFlg1(daPyFlg1_SHIP_TACT); }
void offShipTact() { offNoResetFlg1(daPyFlg1_SHIP_TACT); }
void checkShipGetOff() {}
bool checkShipGetOff() { return mCurProc == daPyProc_SHIP_GET_OFF_e; }
void onShipDrop(s16 param_1) {
onNoResetFlg0(daPyFlg0_SHIP_DROP);
m3550 = param_1;
@@ -2422,6 +2431,10 @@ public:
mActivePlayerBombs--;
}
}
bool checkSwordEquip() const {
return dComIfGs_getSelectEquip(0) != NO_ITEM ||
dComIfGp_getMiniGameType() == 2;
}
int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
int getStartMode() { return (fopAcM_GetParam(this) >> 0x0C) & 0xF; }
@@ -2455,7 +2468,6 @@ public:
void checkRopeThrowAnime() const {}
void checkShieldEquip() const {}
void checkSpecialDemoMode() const {}
void checkSwordEquip() const {}
void checkSwordEquipAnime() const {}
void checkUpperAnime(u16) const {}
void doButton() const {}
@@ -2486,6 +2498,12 @@ public:
void swordTrigger() const {}
void talkTrigger() const {}
virtual void setPlayerPosAndAngle(cXyz*, s16);
virtual void setPlayerPosAndAngle(cXyz*, csXyz*);
virtual void setPlayerPosAndAngle(MtxP);
virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int);
virtual void changeTextureAnime(u16, u16, int);
virtual MtxP getLeftHandMatrix() { return mpCLModel->getAnmMtx(0x08); } // cl_LhandA joint
virtual MtxP getRightHandMatrix() { return mpCLModel->getAnmMtx(0x0C); } // cl_RhandA joint
virtual f32 getGroundY() { return mAcch.GetGroundH(); }
@@ -2529,11 +2547,6 @@ public:
virtual MtxP getModelJointMtx(u16 idx) { return mpCLModel->getAnmMtx(idx); }
virtual f32 getOldSpeedY() { return mOldSpeed.y; }
virtual BOOL setHookshotCarryOffset(unsigned int, const cXyz*);
virtual void setPlayerPosAndAngle(cXyz*, s16);
virtual void setPlayerPosAndAngle(cXyz*, csXyz*);
virtual void setPlayerPosAndAngle(MtxP);
virtual BOOL setThrowDamage(cXyz*, s16, f32, f32, int);
virtual void changeTextureAnime(u16, u16, int);
virtual void cancelChangeTextureAnime() { resetDemoTextureAnime(); }
public:
@@ -2563,7 +2576,7 @@ public:
/* 0x07C8 */ dBgS_LinkRoofChk mRoofChk;
/* 0x0814 */ dBgS_ArrowLinChk mArrowLinChk;
/* 0x0880 */ dBgS_MirLightLinChk mMirLightLinChk;
/* 0x08EC */ dBgS_ObjGndChk_Spl m08EC;
/* 0x08EC */ dBgS_ObjGndChk_Spl mLavaGndChk;
/* 0x0940 */ cBgS_PolyInfo mPolyInfo;
/* 0x0950 */ daPy_HIO_c* m_HIO;
/* 0x0954 */ J3DModel* mpHandsModel;
@@ -2587,7 +2600,7 @@ public:
/* 0x2E90 */ JKRSolidHeap* mpItemHeaps[2];
/* 0x2E98 */ J3DModel* mpHeldItemModel;
/* 0x2E9C */ mDoExt_bckAnm mSwordAnim;
/* 0x2EAC */ mDoExt_McaMorf* m2EAC;
/* 0x2EAC */ mDoExt_McaMorf* mpParachuteFanMorf;
/* 0x2EB0 */ J3DAnmTevRegKey* mpBombBrk;
/* 0x2EB4 */ J3DAnmTevRegKey* mpGwp00BrkData;
/* 0x2EB8 */ J3DAnmTextureSRTKey* mpGwp00BtkData;
@@ -2595,7 +2608,7 @@ public:
/* 0x2EC0 */ J3DAnmTextureSRTKey* mpIceArrowBtk;
/* 0x2EC4 */ J3DAnmTextureSRTKey* mpLightArrowBtk;
/* 0x2EC8 */ J3DAnmTextureSRTKey* mpGicer01Btk;
/* 0x2ECC */ JKRSolidHeap* m2ECC;
/* 0x2ECC */ JKRSolidHeap* mpItemAnimeHeap;
/* 0x2ED0 */ void* m_item_bck_buffer;
/* 0x2ED4 */ J3DAnmTextureSRTKey* mpHeldItemBtk;
/* 0x2ED8 */ J3DAnmTextureSRTKey* mpSwordBtk;
@@ -2606,7 +2619,7 @@ public:
/* 0x2EEC */ J3DModel* mpSwordTipStabModel;
/* 0x2EF0 */ J3DAnmColor* mpCutfBpk;
/* 0x2EF4 */ J3DAnmTextureSRTKey* mpCutfBtk;
/* 0x2EF8 */ J3DAnmTevRegKey* mpCutfBrk2EF8;
/* 0x2EF8 */ J3DAnmTevRegKey* mpCutfBrk;
/* 0x2EFC */ mDoExt_brkAnm m2EFC;
/* 0x2F14 */ J3DModel* mpSuimenMunyaModel;
/* 0x2F18 */ J3DAnmTextureSRTKey* mpSuimenMunyaBtk;
@@ -2660,7 +2673,7 @@ public:
/* 0x336C */ daPy_waterDropEcallBack_c m336C;
/* 0x338C */ daPy_followEcallBack_c m338C;
/* 0x33A8 */ daPy_mtxPosFollowEcallBack_c m33A8;
/* 0x33B8 */ daPy_dmEcallBack_c m33B8[4];
/* 0x33B8 */ daPy_dmEcallBack_c mDmEcallBack[4];
/* 0x33E8 */ daPy_mtxFollowEcallBack_c m33E8;
/* 0x33F4 */ daPy_fanSwingEcallBack_c mFanSwingCb;
/* 0x3400 */ daPy_mtxPosFollowEcallBack_c m3400;
@@ -2699,7 +2712,6 @@ public:
/* 0x34CC */ u8 m34CC;
/* 0x34CD */ u8 m34CD;
/* 0x34CE */ u8 m34CE;
/* 0x34CF */ u8 m34CF[0x34D0 - 0x34CF];
/* 0x34D0 */ s16 m34D0;
/* 0x34D2 */ s16 m34D2;
/* 0x34D4 */ s16 m34D4;
@@ -2777,35 +2789,36 @@ public:
/* 0x3564 */ s16 m3564;
/* 0x3566 */ s16 m3566;
/* 0x3568 */ s16 m3568;
/* 0x356A */ u8 m356A[0x356C - 0x356A];
/* 0x356C */ int mCameraInfoIdx;
/* 0x3570 */ s32 m3570;
/* 0x3574 */ s32 m3574;
/* 0x3578 */ int m3578;
/* 0x357C */ u8 m357C[0x3580 - 0x357C];
/* 0x357C */ int m357C;
/* 0x3580 */ int m3580;
/* 0x3584 */ int mCurrAttributeCode;
/* 0x3588 */ u8 m3588[0x358C - 0x3588];
/* 0x3588 */ int m3588;
/* 0x358C */ int mStaffIdx;
/* 0x3590 */ int mEventIdx;
/* 0x3594 */ int mRestartPoint;
/* 0x3598 */ f32 m3598;
/* 0x359C */ u8 m359C[0x35A0 - 0x359C];
/* 0x359C */ f32 m359C;
/* 0x35A0 */ f32 m35A0;
/* 0x35A4 */ f32 m35A4;
/* 0x35A8 */ f32 m35A8;
/* 0x35AC */ f32 m35AC;
/* 0x35B0 */ f32 m35B0;
/* 0x35B4 */ u8 m35B4[0x35BC - 0x35B4];
/* 0x35B4 */ f32 m35B4;
/* 0x35B8 */ f32 m35B8;
/* 0x35BC */ f32 mVelocity;
/* 0x35C0 */ u8 m35C0[0x35C4 - 0x35C0];
/* 0x35C4 */ f32 m35C4;
/* 0x35C8 */ f32 m35C8;
/* 0x35CC */ u8 m35CC[0x35D0 - 0x35CC];
/* 0x35CC */ f32 m35CC;
/* 0x35D0 */ f32 m35D0;
/* 0x35D4 */ f32 m35D4;
/* 0x35D8 */ f32 m35D8;
/* 0x35DC */ u8 m35DC[0x35E4 - 0x35DC];
/* 0x35DC */ f32 m35DC;
/* 0x35E0 */ f32 m35E0;
/* 0x35E4 */ f32 m35E4;
/* 0x35E8 */ f32 m35E8;
/* 0x35EC */ f32 m35EC;
@@ -2830,7 +2843,6 @@ public:
/* 0x3638 */ int mMsgId;
/* 0x363C */ J3DFrameCtrl* mpSeAnmFrameCtrl;
/* 0x3640 */ s16 m3640;
/* 0x3642 */ u8 m3642[0x3644 - 0x3642];
/* 0x3644 */ f32 m3644;
/* 0x3648 */ Quaternion m3648;
/* 0x3658 */ Quaternion m3658;
+3 -1
View File
@@ -28,6 +28,8 @@ public:
void init();
void proc();
fopAc_ac_c* getZHintTarget() { return convPId(field_0x8); }
private:
/* 0x0 */ u32 mHintActorID;
/* 0x4 */ int mPriority;
@@ -176,6 +178,7 @@ public:
fopAc_ac_c* getLookTarget() { return mLook[0].convPId(mLook[0].getLookTarget()); }
fopAc_ac_c* getLook2Target() { return mLook[1].convPId(mLook[1].getLookTarget()); }
fopAc_ac_c* getZHintTarget() { return mHint.getZHintTarget(); }
static s32 loc_type_num;
static u32 act_type_num;
@@ -200,7 +203,6 @@ public:
void chkEnemySound() {}
u8 getCatchChgItem() { return mCatch.getChangeItem(); }
void getCatghTarget() {}
void getZHintTarget() {}
void offAleart() {}
void revivalAleart() {}
void LookRequest(fopAc_ac_c*, f32, f32, f32, s16, int) {}
+9
View File
@@ -485,6 +485,7 @@ public:
void setAStatus(u8 status) { mCurrButtonBAction = status; }
u8 getDoStatus() { return mCurrButtonAAction; }
void setDoStatus(u8 status) { mCurrButtonAAction = status; }
void setRStatus(u8 status) { field_0x492d = status; }
u8 getRStatusForce() { return field_0x4930; }
void setRStatusForce(u8 status) { field_0x4930 = status; }
inline u8 getPictureStatus() { return mPictureStatus; }
@@ -992,6 +993,10 @@ inline void dComIfGs_setPictureNum(u8 num) {
g_dComIfG_gameInfo.save.getPlayer().getItemRecord().setPictureNum(num);
}
inline u16 dComIfGs_getFwaterTimer() {
return g_dComIfG_gameInfo.save.getPlayer().getItemRecord().getTimer();
}
inline u8 dComIfGs_getBeastNum(int i_idx) {
return g_dComIfG_gameInfo.save.getPlayer().getBagItemRecord().getBeastNum(i_idx);
}
@@ -2281,6 +2286,10 @@ inline void dComIfGp_setDoStatus(u8 status) {
g_dComIfG_gameInfo.play.setDoStatus(status);
}
inline void dComIfGp_setRStatus(u8 status) {
g_dComIfG_gameInfo.play.setRStatus(status);
}
inline u8 dComIfGp_getRStatusForce() {
return g_dComIfG_gameInfo.play.getRStatusForce();
}
+6 -1
View File
@@ -295,8 +295,13 @@ public:
virtual void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
void end();
void getAlpha() {}
void remove() {}
void setAlpha(u8) {}
void setPosArray(cXyz*, s16) {}
public:
/* 0x04 */ u8 field_0x04[0x0C];
/* 0x04 */ u8 field_0x04[0x10 - 0x04];
}; // Size: 0x10
STATIC_ASSERT(sizeof(dPa_cutTurnEcallBack_c) == 0x10);
+3
View File
@@ -1085,6 +1085,9 @@ void dStage_restartRoom(u32 roomParam, u32 mode);
BOOL dStage_checkRestart();
class cBgS_GndChk;
int dStage_RoomCheck(cBgS_GndChk* i_gndChk);
static inline u8 IkadaGetRoomNoArg0(fopAc_ac_c* i_actor) {
return (fopAcM_GetParam(i_actor) >> 4) & 0x3F;
}
+1
View File
@@ -132,6 +132,7 @@ enum dEvt_Condition_e {
dEvtCnd_UNK2_e = 0x0002,
dEvtCnd_CANDOOR_e = 0x0004,
dEvtCnd_CANGETITEM_e = 0x0008,
dEvtCnd_UNK10_e = 0x0010,
dEvtCnd_CANTALKITEM_e = 0x0020,
dEvtCnd_CANCATCH_e = 0x0040,
};
+1
View File
@@ -102,5 +102,6 @@ void fopMsgM_setAlpha(fopMsgM_pane_alpha_class*);
u32 fopMsgM_searchMessageNumber(u32);
void fopMsgM_messageSendOn();
u32 fopMsgM_tactMessageSet();
void fopMsgM_demoMsgFlagOn();
#endif
+12
View File
@@ -141,6 +141,18 @@ inline void mDoAud_linkVoiceStart(u32 param_0, Vec* i_sePos, u8 param_3, s8 para
mDoAud_zelAudio_c::getInterface()->linkVoiceStart(param_0, i_sePos, param_3, param_4);
}
inline void mDoAud_setLinkGroupInfo(u8 param_0) {
mDoAud_zelAudio_c::getInterface()->setLinkGroupInfo(param_0);
}
inline void mDoAud_setLinkOnBoard(s32 param_0) {
mDoAud_zelAudio_c::getInterface()->setLinkOnBoard(param_0);
}
inline void mDoAud_setLinkHp(s32 param_0, s32 param_1) {
mDoAud_zelAudio_c::getInterface()->setLinkHp(param_0, param_1);
}
inline void mDoAud_monsSeStart(u32 i_seNum, Vec* param_1, u32 param_2, u32 param_3, s8 i_reverb) {
mDoAud_zelAudio_c::getInterface()->monsSeStart(i_seNum, param_1, param_2, param_3, i_reverb);
}
+1
View File
@@ -237,6 +237,7 @@ public:
u16 getOldFrameStartJoint() { return mOldFrameStartJoint; }
u16 getOldFrameEndJoint() { return mOldFrameEndJoint; }
Quaternion* getOldFrameQuaternion(int i_no) { return &mOldFrameQuaternion[i_no]; }
f32 getOldFrameMorfCounter() { return mOldFrameMorfCounter; }
private:
/* 0x00 */ bool mOldFrameFlg;
+1 -1
View File
@@ -57,9 +57,9 @@ public:
static void endRender() { JFWDisplay::getManager()->endRender(); }
static GXTexObj* getZbufferTexObj() { return &mZbufferTexObj; }
static GXTexObj* getFrameBufferTexObj() { return &mFrameBufferTexObj; }
static void fadeIn(f32 rate, GXColor& color) { fadeOut(-rate, color); }
static void alloc32(u32) {}
static void fadeIn(f32, _GXColor&) {}
static void getFrameBufferMemory() {}
static void getFrameBufferSize() {}
static void getMonotoneRate() {}
+1 -1
View File
@@ -7,7 +7,7 @@
#include "dolphin/types.h"
/* 802AC830-802AC888 .text setAnimSound__11JAIZelAnimeFP3VecffUlSc */
void JAIZelAnime::setAnimSound(Vec*, f32, f32, u32, s8) {
void JAIZelAnime::setAnimSound(Vec* pos, f32 frame, f32 rate, u32 mtrlSndId, s8 reverb) {
/* Nonmatching */
}
+2 -2
View File
@@ -95,7 +95,7 @@ void daPy_py_c::setDoButtonQuake() {
}
/* 80102D90-80102E18 .text stopDoButtonQuake__9daPy_py_cFi */
void daPy_py_c::stopDoButtonQuake(int param_1) {
void daPy_py_c::stopDoButtonQuake(BOOL param_1) {
if (mQuakeTimer > 0) {
mQuakeTimer--;
if (mQuakeTimer == 0) {
@@ -103,6 +103,6 @@ void daPy_py_c::stopDoButtonQuake(int param_1) {
}
}
if (param_1 && mQuakeTimer == 0) {
mNoResetFlg0 &= ~0x00200000;
offNoResetFlg0(daPyFlg0_UNK200000);
}
}
+2
View File
@@ -45,6 +45,8 @@ BOOL daPy_lk_c::procBottleOpen_init(u16) {
/* 801527CC-80152ED0 .text procBottleOpen__9daPy_lk_cFv */
BOOL daPy_lk_c::procBottleOpen() {
/* Nonmatching */
static const Vec splash_scale = {0.3f, 0.3f, 0.3f};
static const Vec ripple_scale = {0.5f, 0.5f, 0.5f};
}
/* 80152ED0-80153064 .text procBottleSwing_init__9daPy_lk_cFi */
+9 -1
View File
@@ -113,7 +113,7 @@ void daPy_lk_c::setGetItemSound(u16, int) {
}
/* 8012E418-8012E6B4 .text setGetDemo__9daPy_lk_cFv */
void daPy_lk_c::setGetDemo() {
BOOL daPy_lk_c::setGetDemo() {
/* Nonmatching */
}
@@ -155,6 +155,13 @@ BOOL daPy_lk_c::dProcLavaDamage() {
/* 8012EF78-8012F0DC .text dProcFreezeDamage_init_sub__9daPy_lk_cFi */
void daPy_lk_c::dProcFreezeDamage_init_sub(int) {
/* Nonmatching */
static const u16 eff_joint[] = {
0x0007,
0x000B,
0x001A,
0x000E,
0x001E,
};
}
/* 8012F0DC-8012F174 .text dProcFreezeDamage_init__9daPy_lk_cFv */
@@ -175,6 +182,7 @@ void daPy_lk_c::dProcDead_init_sub() {
/* 8012F288-8012F38C .text dProcDead_init_sub2__9daPy_lk_cFv */
void daPy_lk_c::dProcDead_init_sub2() {
/* Nonmatching */
static const Vec ripple_scale = {0.75f, 0.75f, 0.75f};
}
/* 8012F38C-8012F3B8 .text checkGameOverStart__9daPy_lk_cFv */
+39 -6
View File
@@ -28,8 +28,15 @@ void daPy_lk_c::fanJointCB(int) {
}
/* 8014BBE8-8014BC2C .text daPy_fanJointCallback__FP7J3DNodei */
void daPy_fanJointCallback(J3DNode*, int) {
/* Nonmatching */
BOOL daPy_fanJointCallback(J3DNode* node, int param_1) {
if (!param_1) {
J3DJoint* joint = static_cast<J3DJoint*>(node);
s32 jntNo = joint->getJntNo();
J3DModel* model = j3dSys.getModel();
daPy_lk_c* i_this = reinterpret_cast<daPy_lk_c*>(model->getUserArea());
i_this->fanJointCB(jntNo);
}
return TRUE;
}
/* 8014BC2C-8014BD08 .text parachuteJointCB__9daPy_lk_cFi */
@@ -38,8 +45,15 @@ void daPy_lk_c::parachuteJointCB(int) {
}
/* 8014BD08-8014BD4C .text daPy_parachuteJointCallback__FP7J3DNodei */
void daPy_parachuteJointCallback(J3DNode*, int) {
/* Nonmatching */
BOOL daPy_parachuteJointCallback(J3DNode* node, int param_1) {
if (!param_1) {
J3DJoint* joint = static_cast<J3DJoint*>(node);
s32 jntNo = joint->getJntNo();
J3DModel* model = j3dSys.getModel();
daPy_lk_c* i_this = reinterpret_cast<daPy_lk_c*>(model->getUserArea());
i_this->parachuteJointCB(jntNo);
}
return TRUE;
}
/* 8014BD4C-8014BE50 .text setShapeFanLeaf__9daPy_lk_cFv */
@@ -63,8 +77,27 @@ void daPy_lk_c::setSmallFanModel() {
}
/* 8014C0C0-8014C254 .text setParachuteFanModel__9daPy_lk_cFf */
void daPy_lk_c::setParachuteFanModel(f32) {
/* Nonmatching */
void daPy_lk_c::setParachuteFanModel(f32 f31) {
J3DAnmTransform* bck = getItemAnimeResource(LKANM_BCK_FANBA);
JKRHeap* oldHeap = setItemHeap();
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcName, LINK_BDL_FANB));
mpParachuteFanMorf = new mDoExt_McaMorf(
modelData, NULL, NULL, bck,
J3DFrameCtrl::LOOP_ONCE_e, daPy_HIO_fan_c0::m.field_0x20, f31, daPy_HIO_fan_c0::m.field_0x4, 0,
NULL,
0x00000000,
0x11020203
);
if (mpParachuteFanMorf == NULL || mpParachuteFanMorf->getModel() == NULL) { JUT_ASSERT(323, 0); }
mpHeldItemModel = mpParachuteFanMorf->getModel();
mDoExt_setCurrentHeap(oldHeap);
mpHeldItemModel->setUserArea(reinterpret_cast<u32>(this));
modelData->getJointNodePointer(0x01)->setCallBack(daPy_parachuteJointCallback); // skeleton_root_Lroot joint
modelData->getJointNodePointer(0x07)->setCallBack(daPy_parachuteJointCallback); // skeleton_root_Rroot joint
modelData->getJointNodePointer(0x03)->setCallBack(daPy_parachuteJointCallback); // skeleton_root_LarmB joint
modelData->getJointNodePointer(0x09)->setCallBack(daPy_parachuteJointCallback); // skeleton_root_RarmB joint
}
/* 8014C254-8014C34C .text procFanSwing_init__9daPy_lk_cFv */
+1
View File
@@ -35,6 +35,7 @@ BOOL daPy_lk_c::checkGrabBarrelSearch(int) {
/* 8013A97C-8013AF84 .text setGrabItemPos__9daPy_lk_cFv */
void daPy_lk_c::setGrabItemPos() {
/* Nonmatching */
static f32 magtail_offset = 40.0f;
}
/* 8013AF84-8013B05C .text freeGrabItem__9daPy_lk_cFv */
+3
View File
@@ -20,6 +20,9 @@ void daPy_lk_c::setHammerModel() {
/* 80150324-801508FC .text setHammerQuake__9daPy_lk_cFP13cBgS_PolyInfoPC4cXyzi */
void daPy_lk_c::setHammerQuake(cBgS_PolyInfo*, const cXyz*, int) {
/* Nonmatching */
static JGeometry::TVec3<f32> smoke_kusa_particle_scale;
static JGeometry::TVec3<f32> emitter_scale;
static JGeometry::TVec3<f32> emitter_trans;
}
/* 801508FC-80150B60 .text setHammerWaterSplash__9daPy_lk_cFv */
+3
View File
@@ -40,6 +40,9 @@ void daPy_lk_c::freeHookshotItem() {
/* 8014B05C-8014B2B8 .text checkNextActionHookshotReady__9daPy_lk_cFv */
BOOL daPy_lk_c::checkNextActionHookshotReady() {
/* Nonmatching */
static JGeometry::TVec3<f32> eff_scale;
static JGeometry::TVec3<f32> eff_dscale;
static JGeometry::TVec3<f32> eff_pscale;
}
/* 8014B2B8-8014B350 .text checkNextHookshotMode__9daPy_lk_cFv */
+589 -108
View File
@@ -28,9 +28,9 @@
#include "d/actor/d_a_ship.h"
#include "d/actor/d_a_boko.h"
#include "SSystem/SComponent/c_counter.h"
#include "m_Do/m_Do_graphic.h"
Vec dummy_3569;
JGeometry::TVec3<f32> l_hammer_splash_particle_scale(0.00002f, 0.00002f, 0.00002f);
cXyz l_hammer_splash_particle_scale(0.00002f, 0.00002f, 0.00002f);
cXyz l_debug_keep_pos;
csXyz l_debug_current_angle;
@@ -63,37 +63,6 @@ static u8 l_sightDL[] ALIGN_DECL(32) = {
0x00, 0x00, 0x00,
};
static Vec waterfall_ripple_scale_5702 = {0.75f, 0.75f, 0.75f};
static Vec grass_scale_6038 = {1.5f, 1.5f, 1.5f};
static Vec smoke_scale_6039 = {1.25f, 1.25f, 1.25f};
static Vec eff_scale_24884 = {1.5f, 1.5f, 1.5f};
static Quaternion norm_quat_25648 = {0.0f, 0.0f, 0.0f, 1.0f};
static Vec top_vec_29499 = {0.0f, 70.0f, 0.0f};
const u16 aura_emitter_joint_5412[] = {
0x0007, 0x000B,
0x0008, 0x000C,
0x0021, 0x0026,
0x0022, 0x0027,
0x0000, 0x000F,
};
const u16 aura_model_joint_5413[] = {
0x0000, 0x000F,
0x0008, 0x000C,
0x0021, 0x0026,
};
const Vec wave_offset_5635 = {0.0f, 18.0f, 0.0f};
const Vec swim_offset_5636 = {0.0f, 30.0f, 0.0f};
const Vec swim_side_offset_5637 = {0.0f, 0.0f, 30.0f};
const u16 eff_joint_8128[] = {
0x0007, 0x000B,
0x001A, 0x000E,
0x001E,
};
const Vec ripple_scale_8193 = {0.75f, 0.75f, 0.75f};
const Vec splash_scale_21927 = {0.3f, 0.3f, 0.3f};
const Vec ripple_scale_21928 = {0.5f, 0.5f, 0.5f};
static void dummydatafunc(f32* temp, f64* temp2) {
// temporary hack to improve diffs until sdata2 offsets are figured out
*temp = 2.0f;
@@ -278,43 +247,6 @@ u8 daPy_matAnm_c::m_morf_frame;
#include "d/actor/d_a_player_sword.inc"
u8 normal_ripple_scale_5638[0xC];
u8 small_ripple_scale_5641[0xC];
u8 waterfall_splash_trans_5699[0xC];
u8 run_splash_scale_6040[0xC];
u8 run_grass_scale_6043[0xC];
u8 heavy_emit_smoke_scale_6046[0xC];
u8 heavy_dyn_smoke_scale_6049[0xC];
u8 heavy_pat_smoke_scale_6052[0xC];
u8 tail_scale_6508[0xC];
u8 arm_flame_scale_6651[0xC];
u8 _6785[0xC];
u8 eff_scale0_6784[0xC];
u8 _6789[0xC];
u8 eff_scale2_6788[0xC];
u8 direction_6792[0xC];
u8 splash_scale_14445[0xC];
u8 ripple_scale_14448[0xC];
u8 _15293[0xC];
u8 arm_pos_15292[0xC];
u8 _15297[0xC];
u8 armA_offset_15296[0xC];
u8 dynamic_scale_16750[0xC];
u8 particle_scale_16753[0xC];
u8 _17480[0xC];
u8 local_height_offset_17479[0xC];
u8 eff_scale_18886[0xC];
u8 eff_dscale_18889[0xC];
u8 eff_pscale_18892[0xC];
u8 smoke_kusa_particle_scale_21005[0xC];
u8 emitter_scale_21008[0xC];
u8 emitter_trans_21011[0xC];
u8 d_scale_23162[0xC];
u8 p_scale_23165[0xC];
u8 emitter_trans_24824[0xC];
u8 particle_scale_24827[0xC];
u8 root_mtx_25647[0x30];
/* 80102E8C-80102EAC .text daPy_createHeap__FP10fopAc_ac_c */
static BOOL daPy_createHeap(fopAc_ac_c* i_this) {
return static_cast<daPy_lk_c*>(i_this)->createHeap();
@@ -467,6 +399,8 @@ static BOOL daPy_auraCallback(J3DNode* node, int param_1) {
/* 80103494-80103A88 .text jointBeforeCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */
BOOL daPy_lk_c::jointBeforeCB(int, J3DTransformInfo*, Quaternion*) {
/* Nonmatching */
static Mtx root_mtx;
static Quaternion norm_quat = {0.0f, 0.0f, 0.0f, 1.0f};
}
/* 80103A88-80103AAC .text daPy_jointBeforeCallback__FUlUsP16J3DTransformInfoP10Quaternion */
@@ -487,6 +421,7 @@ static BOOL daPy_jointAfterCallback(u32 userArea, u16 param_1, J3DTransformInfo*
/* 80103C40-80103EE4 .text jointCB0__9daPy_lk_cFi */
BOOL daPy_lk_c::jointCB0(int) {
/* Nonmatching */
static f32 guard_rate = 0.0f;
}
/* 80103EE4-80103F28 .text daPy_jointCallback0__FP7J3DNodei */
@@ -544,7 +479,7 @@ void daPy_lk_c::setBlurPosResource(u16 index) {
/* 80104280-80104364 .text getItemAnimeResource__9daPy_lk_cFUs */
J3DAnmTransform* daPy_lk_c::getItemAnimeResource(u16 index) {
JKRReadIdxResource(m_item_bck_buffer, 0x1000, index, dComIfGp_getAnmArchive());
JKRHeap* oldHeap = setAnimeHeap(m2ECC);
JKRHeap* oldHeap = setAnimeHeap(mpItemAnimeHeap);
mDoExt_transAnmBas* bas = new mDoExt_transAnmBas(NULL);
J3DAnmLoaderDataBase::setResource(bas, m_item_bck_buffer);
mDoExt_setCurrentHeap(oldHeap);
@@ -1046,9 +981,7 @@ BOOL daPy_lk_c::draw() {
if (dComIfGs_getSelectEquip(2) == PWR_GROOVE) {
entryDLSetLight(mpPringModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE);
}
// TODO this may be an inline
bool r4 = dComIfGs_getSelectEquip(0) == MASTER_SWORD || dComIfGs_getSelectEquip(0) == LV3_SWORD || dComIfGs_getSelectEquip(0) == MASTER_SWORD_EX;
if (r4 && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) {
if (checkMasterSwordEquip() && !checkCaughtShapeHide() && !checkDemoShieldNoDraw()) {
updateDLSetLight(mpPodmsModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE);
}
}
@@ -1081,8 +1014,7 @@ BOOL daPy_lk_c::draw() {
mDoExt_modelUpdateDL(mpSuimenMunyaModel);
}
if (!r24 && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) {
bool r4 = dComIfGs_getSelectEquip(0) != NO_ITEM || dComIfGp_getMiniGameType() == 2; // TODO this may be an inline
if (r4 && !checkDemoSwordNoDraw(1)) {
if (checkSwordEquip() && !checkDemoSwordNoDraw(1)) {
entryDLSetLight(mpEquippedSwordModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE);
}
}
@@ -1283,6 +1215,7 @@ void daPy_lk_c::cancelItemUpperReadyAnime() {
/* 80109F4C-8010A204 .text checkBodyAngleX__9daPy_lk_cFs */
BOOL daPy_lk_c::checkBodyAngleX(s16) {
/* Nonmatching */
static Vec top_vec = {0.0f, 70.0f, 0.0f};
}
/* 8010A204-8010A2F4 .text setBodyAngleToCamera__9daPy_lk_cFv */
@@ -1467,7 +1400,7 @@ void daPy_lk_c::deleteEquipItem(BOOL param_1) {
if (mSwordAnim.getBckAnm() != NULL) {
mSwordAnim.changeBckOnly(NULL);
}
m2EAC = NULL;
mpParachuteFanMorf = NULL;
mpHeldItemBtk = NULL;
mpBottleContentsModel = NULL;
mpBottleCapModel = NULL;
@@ -1476,7 +1409,7 @@ void daPy_lk_c::deleteEquipItem(BOOL param_1) {
mpSwordModel1 = NULL;
m3454.end();
mpSwordTipStabModel = NULL;
mpCutfBrk2EF8 = 0;
mpCutfBrk = 0;
mpCutfBtk = 0;
mpCutfBpk = 0;
offNoResetFlg1(daPyFlg1_UNK200000);
@@ -1618,12 +1551,7 @@ BOOL daPy_lk_c::checkItemChangeFromButton() {
!checkPlayerGuard()
) {
if (!daPy_dmEcallBack_c::checkCurse()) {
bool r4;
if (mPressedButtons & 0x02 &&
// TODO inline (e.g. checkSwordMiniGame?)
(r4 = dComIfGs_getSelectEquip(0) != NO_ITEM || dComIfGp_getMiniGameType() == 2, r4) &&
mHeldItemType != 0x103
) {
if (mPressedButtons & 0x02 && checkSwordEquip() && mHeldItemType != 0x103) {
setAnimeEquipSword(1);
} else if (mPressedButtons & 0x04) {
if (checkNewItemChange(0)) {
@@ -1671,7 +1599,7 @@ BOOL daPy_lk_c::checkItemChangeFromButton() {
}
/* 8010D26C-8010D754 .text checkItemAction__9daPy_lk_cFv */
BOOL daPy_lk_c::checkItemAction() {
void daPy_lk_c::checkItemAction() {
/* Nonmatching */
}
@@ -2014,18 +1942,18 @@ BOOL daPy_lk_c::changeDamageProc() {
}
/* 80110F3C-80111424 .text changeAutoJumpProc__9daPy_lk_cFv */
void daPy_lk_c::changeAutoJumpProc() {
BOOL daPy_lk_c::changeAutoJumpProc() {
/* Nonmatching */
}
/* 80111424-80111A80 .text changeDemoProc__9daPy_lk_cFv */
void daPy_lk_c::changeDemoProc() {
BOOL daPy_lk_c::changeDemoProc() {
/* Nonmatching */
static const Vec tact_scale = {2.5f, 2.5f, 2.5f};
}
/* 80111A80-80111B80 .text changeDeadProc__9daPy_lk_cFv */
void daPy_lk_c::changeDeadProc() {
BOOL daPy_lk_c::changeDeadProc() {
/* Nonmatching */
}
@@ -2785,7 +2713,7 @@ BOOL daPy_lk_c::procNotUse() {
}
/* 80119DA0-80119EBC .text getGroundAngle__9daPy_lk_cFP13cBgS_PolyInfos */
void daPy_lk_c::getGroundAngle(cBgS_PolyInfo*, s16) {
s16 daPy_lk_c::getGroundAngle(cBgS_PolyInfo*, s16) {
/* Nonmatching */
}
@@ -2831,7 +2759,7 @@ void daPy_lk_c::setNeckAngle() {
}
/* 8011BE08-8011BEA4 .text checkOriginalHatAnimation__9daPy_lk_cFv */
BOOL daPy_lk_c::checkOriginalHatAnimation() {
void daPy_lk_c::checkOriginalHatAnimation() {
/* Nonmatching */
}
@@ -2884,12 +2812,11 @@ void daPy_lk_c::resetCurse() {
}
}
u8 normal_scale_38064[0xC];
u8 boss_scale_38067[0xC];
/* 8011D110-8011D4D0 .text checkLightHit__9daPy_lk_cFv */
BOOL daPy_lk_c::checkLightHit() {
void daPy_lk_c::checkLightHit() {
/* Nonmatching */
static JGeometry::TVec3<f32> normal_scale;
static JGeometry::TVec3<f32> boss_scale;
}
/* 8011D4D0-8011D6C4 .text setSwordAtCollision__9daPy_lk_cFv */
@@ -2915,7 +2842,7 @@ void daPy_lk_c::setAttentionPos() {
}
/* 8011EEBC-8011EF94 .text setRoomInfo__9daPy_lk_cFv */
void daPy_lk_c::setRoomInfo() {
int daPy_lk_c::setRoomInfo() {
/* Nonmatching */
}
@@ -2986,13 +2913,13 @@ BOOL daPy_lk_c::checkLavaFace(cXyz* param_1, int attributeCode) {
if (param_1) {
cXyz pos(current.pos.x, param_1->y + 20.0f, current.pos.z);
m08EC.SetPos(&pos);
m35D4 = dComIfG_Bgsp()->GroundCross(&m08EC);
mLavaGndChk.SetPos(&pos);
m35D4 = dComIfG_Bgsp()->GroundCross(&mLavaGndChk);
if (mAcch.GetGroundH() > m35D4) {
m35D4 = -1000000000.0f;
}
if (m35D4 > current.pos.y) {
attributeCode = dComIfG_Bgsp()->GetAttributeCode(m08EC);
attributeCode = dComIfG_Bgsp()->GetAttributeCode(mLavaGndChk);
} else {
return FALSE;
}
@@ -3015,7 +2942,7 @@ BOOL daPy_lk_c::checkLavaFace(cXyz* param_1, int attributeCode) {
}
/* 8012024C-80120724 .text checkFallCode__9daPy_lk_cFv */
BOOL daPy_lk_c::checkFallCode() {
void daPy_lk_c::checkFallCode() {
/* Nonmatching */
}
@@ -3149,13 +3076,403 @@ void daPy_lk_c::setWindAtPower() {
}
/* 801216A8-80121870 .text checkRoofRestart__9daPy_lk_cFv */
BOOL daPy_lk_c::checkRoofRestart() {
void daPy_lk_c::checkRoofRestart() {
/* Nonmatching */
}
/* 80121870-80122D30 .text execute__9daPy_lk_cFv */
BOOL daPy_lk_c::execute() {
/* Nonmatching */
/* Nonmatching - regalloc */
if (setGetDemo()) {
return TRUE;
}
if (checkNoResetFlg1(daPyFlg1_UNK200)) {
fopMsgM_demoMsgFlagOn();
if (checkEndMessage(0x14A3)) {
offNoResetFlg1(daPyFlg1_UNK200);
dComIfGs_setEventReg(0x9EFF, 0);
dComIfGp_event_reset();
mDemo.setDemoType(0);
}
return TRUE;
}
if (dComIfGs_checkBottle(FWATER_BOTTLE)) {
if (dComIfGs_getFwaterTimer() == 0) {
if (dComIfGp_event_compulsory(this)) {
onNoResetFlg1(daPyFlg1_UNK200);
dComIfGs_setBottleItemIn(FWATER_BOTTLE, BIN_IN_WATER);
mDemo.setDemoType(5);
m3628 = -1;
if (mCurProc == daPyProc_SCOPE_e) {
procWait_init();
}
}
}
}
if (checkNoControll()) {
mAttentionInfo.mFlags = 0;
fopAcM_SetStatusMap(this, 0x10);
if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
mStts.SetWeight(0xFF);
mStts.ClrCcMove();
} else {
mStts.SetWeight(120);
}
} else {
mAttentionInfo.mFlags = ~0;
fopAcM_SetStatusMap(this, 0x01);
mStts.SetWeight(120);
}
if (checkEquipHeavyBoots() &&
dComIfGp_getSelectItem(0) != HVY_BOOTS &&
dComIfGp_getSelectItem(1) != HVY_BOOTS &&
dComIfGp_getSelectItem(2) != HVY_BOOTS
) {
offNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS);
} else if (checkEquipDragonShield() &&
dComIfGp_getSelectItem(0) != DRGN_SHIELD &&
dComIfGp_getSelectItem(1) != DRGN_SHIELD &&
dComIfGp_getSelectItem(2) != DRGN_SHIELD
) {
offNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD);
}
// Using the dComIfGp_event_runCheck inline breaks the match
// if (dComIfGp_event_runCheck()) {
if (g_dComIfG_gameInfo.play.getEvent().runCheck()) {
mStaffIdx = dComIfGp_evmng_getMyStaffId("Link", this);
// Using the dComIfGp_event_chkEventFlag inline breaks the match
// if (mEvtInfo.checkCommandDoor() && !dComIfGp_event_chkEventFlag(0x4) && mHeldItemType == 0x101) {
if (mEvtInfo.checkCommandDoor() && !g_dComIfG_gameInfo.play.getEvent().chkEventFlag(0x4) && mHeldItemType == 0x101) {
fopAc_ac_c* equipActor = mActorKeepEquip.getActor();
if (equipActor) {
s16 angle = shape_angle.y + 0x8000;
equipActor->speed.y = 0.0f;
equipActor->speedF = 5.0f;
equipActor->current.angle.y = angle;
}
deleteEquipItem(FALSE);
}
}
current.pos = l_debug_keep_pos;
shape_angle = l_debug_shape_angle;
current.angle = l_debug_current_angle;
mCameraInfoIdx = dComIfGp_getPlayerCameraID(0);
m3748 = current.pos;
if (mCurProc != daPyProc_HOOKSHOT_FLY_e &&
!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) &&
!checkModeFlg(ModeFlg_ROPE | ModeFlg_CLIMB | ModeFlg_LADDER) &&
mCurProc != daPyProc_DEMO_TOOL_e &&
mAcch.GetGroundH() != -1e9f &&
!checkNoResetFlg0((daPy_FLG0)(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)) &&
dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd) &&
dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd)
) {
dComIfG_Bgsp()->MoveBgCrrPos(mAcch.m_gnd, mAcch.ChkGroundHit(), &current.pos, &current.angle, &shape_angle);
dComIfG_Bgsp()->MoveBgCrrPos(mAcch.m_gnd, mAcch.ChkGroundHit(), &next.pos, NULL, NULL);
}
cXyz sp20 = next.pos;
m34DE = shape_angle.y;
m35B4 = m35B0;
m34EA = m34DC;
dComIfGp_setDoStatus(0);
dComIfGp_setRStatus(0);
if (mHeldItemType == 0x101) {
dComIfGp_setAStatus(0x2F);
} else if (checkSwordEquip()) {
dComIfGp_setAStatus(0x35);
} else {
dComIfGp_setAStatus(0x00);
}
mFrontWallType = 0;
if (checkResetFlg0(daPyRFlg0_POISON_CURSE)) {
setDamageCurseEmitter();
}
if (checkResetFlg0(daPyRFlg0_UNK8000000)) {
mCutType = 0;
}
mResetFlg0 = 0;
daPy_matAnm_c::decMorfFrame();
daPy_matAnm_c::decMabaTimer();
if (mCurProc == daPyProc_BOTTLE_SWING_e && mEvtInfo.checkCommandCatch()) {
mDemo.setDemoType(5);
}
setActorPointer();
setAtnList();
fopAc_ac_c* zTarget = dComIfGp_getAttention().getZHintTarget();
if (zTarget) {
stopDoButtonQuake(FALSE);
} else {
stopDoButtonQuake(TRUE);
}
if (m34C2 == 8) {
if (m_old_fdata->getOldFrameMorfCounter() <= 0.0f) {
m34C2 = 9;
}
} else {
m34C2 = 0;
}
fopAc_ac_c* grabActor = mActorKeepGrab.getActor();
fopAc_ac_c* equipActor = mActorKeepEquip.getActor();
if (grabActor && !fopAcM_checkCarryNow(grabActor)) {
freeGrabItem();
}
if (mHeldItemType == 0x101) {
if (equipActor == NULL || !fopAcM_checkCarryNow(equipActor)) {
deleteEquipItem(FALSE);
}
}
if (!checkFreezeState()) {
if (!checkNoResetFlg1(daPyFlg1_UNK40000000)) {
animeUpdate();
}
} else if (!checkNoResetFlg1(daPyFlg1_UNK40000)) {
mDoGph_gInf_c::fadeIn(0.02f, l_freeze_fade_color);
onNoResetFlg1(daPyFlg1_UNK40000);
}
setDemoData();
setStickData();
if (mHeldItemType == ROPE &&
(mCurProc == daPyProc_ROPE_SUBJECT_e || mCurProc == daPyProc_ROPE_MOVE_e) &&
mActorKeepEquip.getActor() != NULL && fopAcM_GetParam(mActorKeepEquip.getActor()) == 2
) {
procRopeReady_init();
}
if (mDemo.getDemoType() != 5) {
if (!changeDemoProc() && !changeDeadProc() &&
mCurProc != daPyProc_DEMO_LAVA_DAMAGE_e && mCurProc != daPyProc_DEMO_FREEZE_DAMAGE_e
) {
if (!changeAutoJumpProc()) {
changeSwimProc();
}
}
changeDamageProc();
changeBoomerangCatchProc();
}
checkItemAction();
if (mHeldItemType == 0x103 && (m34C4 == 2 || m34C4 == 3)) {
if (mAtCps[0].ChkAtHit() || mAtCps[1].ChkAtHit() || mAtCps[2].ChkAtHit()) {
m34C4 += 2;
}
}
if (m3522 > 0) {
m3522--;
} else {
m34C4 = 0;
}
setShieldGuard();
if (checkAtHitEnemy(&mAtCps[0]) || checkAtHitEnemy(&mAtCps[1]) || checkAtHitEnemy(&mAtCps[2])) {
onNoResetFlg0(daPyFlg0_UNK10000000);
}
if (mCurProcFunc != NULL) {
(this->*mCurProcFunc)();
}
playTextureAnime();
cXyz sp14 = current.pos;
posMove();
mOldSpeed = speed;
cXyz sp8 = current.pos;
mAcch.ClrGroundHit();
mAcch.CrrPos(*dComIfG_Bgsp());
setWaterY();
autoGroundHit();
checkLavaFace(&sp20, dBgS_Attr_NORMAL_e);
if (checkModeFlg(ModeFlg_SWIM)) {
if (checkNoResetFlg0(daPyFlg0_UNK100) && !checkSwimFallCheck()) {
current.pos.y = m35D0;
}
if (mCurProc != daPyProc_DEMO_DEAD_e) {
if (mAcch.GetGroundH() + 84.9f > current.pos.y && mAcch.ChkGroundHit()) {
current.pos.y = mAcch.GetGroundH() + 84.9f;
if (speed.y < 0.0f) {
speed.y = 0.0f;
}
}
} else if (mAcch.ChkGroundHit()) {
current.pos.y = mAcch.GetGroundH();
if (speed.y < 0.0f) {
speed.y = 0.0f;
}
}
} else if (mCurProc == daPyProc_DEMO_TOOL_e) {
current.pos = sp14;
if (m3574 != 0 && mAcch.GetGroundH() != -1e9f) {
current.pos.y = mAcch.GetGroundH();
}
} else if (mCurProc == daPyProc_HOOKSHOT_FLY_e ||
dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) ||
checkModeFlg(ModeFlg_ROPE | ModeFlg_LADDER | ModeFlg_CAUGHT)
) {
current.pos = sp8;
} else if (mCurProc == daPyProc_DEMO_DOOR_OPEN_e ||
mCurProc == daPyProc_HANG_WAIT_e ||
mCurProc == daPyProc_HANG_MOVE_e ||
mCurProc == daPyProc_HANG_UP_e ||
mCurProc == daPyProc_HANG_START_e ||
mCurProc == daPyProc_HANG_FALL_START_e
) {
current.pos.x = sp8.x;
current.pos.z = sp8.z;
}
int roomNo;
if (mAcch.GetGroundH() != -1e9f) {
roomNo = setRoomInfo();
m357C = m3580;
m3580 = dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd);
if (checkNoResetFlg0(daPyFlg0_UNK80000000)) {
mCurrAttributeCode = dBgS_Attr_NORMAL_e;
} else {
mCurrAttributeCode = dComIfG_Bgsp()->GetAttributeCode(mAcch.m_gnd);
}
dStage_RoomCheck(&mAcch.m_gnd);
checkFallCode();
if (mAcch.ChkGroundHit()) {
if (!checkModeFlg(ModeFlg_HANG) && (mCurrAttributeCode == dBgS_Attr_LAVA_e || mCurrAttributeCode == dBgS_Attr_VOID_e)) {
checkLavaFace(NULL, mCurrAttributeCode);
} else {
if (checkNoResetFlg0(daPyFlg0_UNK20000)) {
onResetFlg0(daPyRFlg0_AUTO_JUMP_LAND);
}
offNoResetFlg0(daPyFlg0_UNK20000);
if (checkNoResetFlg0(daPyFlg0_UNK400000)) {
onResetFlg0(daPyRFlg0_UNK200);
}
offNoResetFlg0(daPyFlg0_UNK400000);
if (current.pos.y < 2000.0f && dComIfG_Bgsp()->GetSpecialCode(mAcch.m_gnd) != 1) {
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd);
if (triPla->GetNP()->y >= 0.5f) {
offNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG);
}
}
}
if (!checkNoResetFlg0((daPy_FLG0)(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000)) &&
dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd)
) {
dComIfG_Bgsp()->MoveBgTransPos(mAcch.m_gnd, true, &m3724, NULL, NULL);
}
if (checkNoResetFlg0(daPyFlg0_UNK80000000)) {
mMtrlSndId = 0;
m34E2 = 0;
} else {
mMtrlSndId = dComIfG_Bgsp()->GetMtrlSndId(mAcch.m_gnd);
m34E2 = getGroundAngle(&mAcch.m_gnd, shape_angle.y);
}
if (checkModeFlg(ModeFlg_02000000)) {
setShapeAngleOnGround();
}
} else {
if (checkModeFlg(ModeFlg_SWIM) && m3580 == 4) {
startRestartRoom(5, 0xC9, -1.0f, 0);
}
m34E2 = 0;
if (mCurProc == daPyProc_DEMO_TOOL_e) {
mMtrlSndId = dComIfG_Bgsp()->GetMtrlSndId(mAcch.m_gnd);
} else if (mCurProc == daPyProc_SHIP_READY_e || mCurProc == daPyProc_SHIP_GET_OFF_e) {
mMtrlSndId = 9;
} else {
mMtrlSndId = 0;
}
}
if (mpSeAnmFrameCtrl) {
f32 rate = mpSeAnmFrameCtrl->getRate();
f32 frame = mpSeAnmFrameCtrl->getFrame();
mJAIZelAnime.setAnimSound(&current.pos, frame, rate, mMtrlSndId, mReverb);
}
if (!daPy_lk_c::checkPlayerFly() &&
mCurProc != daPyProc_DEMO_TOOL_e &&
(m34C3 == 1 || m34C3 == 4 || m34C3 == 0xA || m34C3 == 9)
) {
setStepsOffset();
}
u8 groupInfo = dComIfG_Bgsp()->GetGrpSoundId(mAcch.m_gnd);
mDoAud_setLinkGroupInfo(groupInfo);
} else {
mRestartPoint = 0xFF;
m34E2 = 0;
mMtrlSndId = 0;
m357C = m3580;
m3580 = -1;
mCurrAttributeCode = dBgS_Attr_UNK1B_e;
roomNo = current.roomNo;
checkFallCode();
}
equipActor = mActorKeepEquip.getActor();
if (equipActor) {
equipActor->mTevStr.mRoomNo = mTevStr.mRoomNo;
equipActor->mTevStr.mEnvrIdxOverride = mTevStr.mEnvrIdxOverride;
equipActor->current.roomNo = roomNo;
}
setWorldMatrix();
setWaistAngle();
if (m_old_fdata->getOldFrameFlg()) {
footBgCheck();
}
if (mCurProc != daPyProc_DAMAGE_e) {
cLib_addCalcAngleS(&mBodyAngle.z, 0, 4, 0xC00, 0x180);
if (mCurProc != daPyProc_FAN_GLIDE_e) {
setMoveSlantAngle();
}
if (!checkModeFlg(ModeFlg_SUBJECT)) {
cLib_addCalcAngleS(&mBodyAngle.x, 0, 4, 0xC00, 0x180);
}
if (!checkModeFlg(ModeFlg_40000000)) {
cLib_addCalcAngleS(&mBodyAngle.y, 0, 4, 0xC00, 0x180);
}
}
setNeckAngle();
setHatAngle();
mpCLModelData->getJointNodePointer(0x00)->setMtxCalc(m_pbCalc[PART_UNDER_e]);
mpCLModelData->getJointNodePointer(0x02)->setMtxCalc(m_pbCalc[PART_UPPER_e]);
mpCLModelData->getJointNodePointer(0x1D)->setMtxCalc(m_pbCalc[PART_UNDER_e]);
checkOriginalHatAnimation();
static const Vec nsword_top = {45.0f, -31.0f, 0.0f};
static const Vec msword_top = {57.0f, 48.0f, 0.0f};
static const Vec boomerang_catch = {12.5f, 47.5f, 36.6f};
@@ -3164,6 +3481,143 @@ BOOL daPy_lk_c::execute() {
static const Vec hammer_root = {8.0f, 0.0f, 0.0f};
static const Vec fan_top = {55.0f, 0.0f, 0.0f};
static const Vec head_offset = {40.0f, 0.0f, 0.0f};
mpCLModel->calc();
cMtx_multVec(mpCLModel->getAnmMtx(0x0F), &head_offset, &mHeadTopPos);
checkRoofRestart();
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x08), &mLeftHandPos);
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x0C), &mRightHandPos);
cMtx_multVec(mpCLModel->getAnmMtx(0x00), &boomerang_catch, &m36F4);
cMtx_multVec(mpCLModel->getAnmMtx(0x08), &hookshot_root, &mHookshotRootPos);
mpKatsuraModel->setBaseTRMtx(mpCLModel->getAnmMtx(0x0F));
mpKatsuraModel->calc();
mpYamuModel->setBaseTRMtx(mpCLModel->getAnmMtx(0x0F));
mpYamuModel->calc();
setItemModel();
if (mCurProc == daPyProc_CUT_F_e || mCurProc == daPyProc_BT_VERTICAL_JUMP_CUT_e) {
if (checkNormalSwordEquip()) {
mpSwordTipStabModel->setBaseTRMtx(mpHeldItemModel->getAnmMtx(0x03));
} else {
mpSwordTipStabModel->setBaseTRMtx(mpHeldItemModel->getAnmMtx(0x04));
}
}
cMtx_multVec(mpCLModel->getAnmMtx(0x13), &l_eye_offset, &mEyePos);
m36D0 = mSwordTopPos;
m36DC = m36C4;
if (mHeldItemType == 0x101 && mActorKeepEquip.getActor()) {
daBoko_c* boko = static_cast<daBoko_c*>(mActorKeepEquip.getActor());
boko->getTopPos(&mSwordTopPos);
boko->getBlurRootPos(&m36C4);
} else if (mHeldItemType == HUMMER) {
cMtx_multVec(mpHeldItemModel->getBaseTRMtx(), &hammer_top, &mSwordTopPos);
cMtx_multVec(mpHeldItemModel->getBaseTRMtx(), &hammer_root, &m36C4);
} else if (mHeldItemType == 0x103) {
if (checkNormalSwordEquip()) {
cMtx_multVec(mpHeldItemModel->getAnmMtx(0x01), &nsword_top, &mSwordTopPos);
mDoMtx_multVecZero(mpHeldItemModel->getAnmMtx(0x02), &m36C4);
} else {
mDoMtx_multVecZero(mpHeldItemModel->getAnmMtx(0x01), &m36C4);
cMtx_multVec(mpHeldItemModel->getAnmMtx(0x01), &msword_top, &mSwordTopPos);
}
} else if (mCurProc == daPyProc_FAN_SWING_e) {
mDoMtx_multVecZero(mpHeldItemModel->getBaseTRMtx(), &m36C4);
cMtx_multVec(mpHeldItemModel->getAnmMtx(0x06), &fan_top, &mSwordTopPos);
} else {
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x0D), &m36C4);
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x0D), &mSwordTopPos);
}
checkLightHit();
setFootEffect();
setCollision();
setAttentionPos();
setGrabItemPos();
setWaterRipple();
setAuraEffect();
setHammerWaterSplash();
setLightSaver();
if (!checkNoResetFlg0((daPy_FLG0)(daPyFlg0_UNK20000000 | daPyFlg0_UNK80000000))) {
if (mAcch.ChkGroundHit() && !daPy_lk_c::checkPlayerFly()) {
mEvtInfo.onCondition(dEvtCnd_CANTALK_e | dEvtCnd_CANDOOR_e | dEvtCnd_CANGETITEM_e | dEvtCnd_UNK10_e | dEvtCnd_CANCATCH_e);
} else if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) || (checkModeFlg(ModeFlg_SWIM) && checkNoResetFlg0(daPyFlg0_UNK100))) {
mEvtInfo.onCondition(dEvtCnd_CANTALK_e);
}
}
mEvtInfo.onCondition(dEvtCnd_CANGETITEM_e);
JPABaseEmitter* emitter = mSmokeEcallBack.getEmitter();
if (emitter) {
emitter->setGlobalRTMatrix(mpCLModel->getAnmMtx(0x23));
}
setWaterDrop();
if (daPy_dmEcallBack_c::getTimer() > 0) {
daPy_dmEcallBack_c::decTimer();
if (daPy_dmEcallBack_c::checkFlame()) {
seStartOnlyReverb(JA_SE_LK_BURNING);
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x00), &mLightInfluence.mPos);
mLightInfluence.mPower = 150.0f;
} else if (daPy_dmEcallBack_c::checkCurse()) {
seStartOnlyReverb(JA_SE_LK_CURSE_BURNING);
}
if (daPy_dmEcallBack_c::getTimer() == 0) {
endDamageEmitter();
}
}
offNoResetFlg1((daPy_FLG1)(daPyFlg1_NPC_CALL_COMMAND | daPyFlg1_VINE_CATCH));
// Using the dComIfGp_event_runCheck inline breaks the match
// if (dComIfGp_event_runCheck() || checkNoControll()) {
if (g_dComIfG_gameInfo.play.getEvent().runCheck() || checkNoControll()) {
dComIfGp_setDoStatus(0);
dComIfGp_setRStatus(0);
} else {
if (dComIfGp_getDoStatus() == 0x43) {
dComIfGp_setDoStatus(0x12);
}
if (checkResetFlg0(daPyRFlg0_UNK10000000)) {
dComIfGp_setAStatus(0);
}
}
offNoResetFlg1((daPy_FLG1)(daPyFlg1_UNK4 | daPyFlg1_FORCE_VOMIT_JUMP | daPyFlg1_FORCE_VOMIT_JUMP_SHORT | daPyFlg1_UNK10000000));
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
mDoAud_setLinkOnBoard(1);
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
} else {
mDoAud_setLinkOnBoard(2);
fopAcM_OffStatus(this, fopAcStts_UNK4000_e);
}
mDoAud_setLinkHp(dComIfGs_getLife(), dComIfGs_getMaxLife());
mShieldFrontRangeYAngle = shape_angle.y + mBodyAngle.y;
mFace = daPyFace_UNKNOWN;
if (checkConfuse()) {
seStartMapInfo(JA_SE_LK_NOW_CURSE_PW);
}
if (checkBowAnime()) {
dComIfGp_setPlayerStatus0(0, daPyStts0_BOW_AIM_e);
} else {
dComIfGp_clearPlayerStatus0(0, daPyStts0_BOW_AIM_e);
}
m3634 = -1;
l_debug_keep_pos = current.pos;
l_debug_shape_angle = shape_angle;
l_debug_current_angle = current.angle;
return TRUE;
}
/* 80122D30-80122D50 .text daPy_Execute__FP9daPy_lk_c */
@@ -3228,7 +3682,7 @@ BOOL daPy_lk_c::playerDelete() {
mDoExt_destroySolidHeap(m_tex_scroll_heap.mpAnimeHeap);
mDoExt_destroySolidHeap(mpItemHeaps[0]);
mDoExt_destroySolidHeap(mpItemHeaps[1]);
mDoExt_destroySolidHeap(m2ECC);
mDoExt_destroySolidHeap(mpItemAnimeHeap);
mJAIZelAnime.stop();
@@ -3485,8 +3939,35 @@ BOOL daPy_lk_c::createHeap() {
}
/* 8012469C-801249F8 .text createAnimeHeap__9daPy_lk_cFPP12JKRSolidHeapQ29daPy_lk_c14daPy_HEAP_TYPE */
void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_HEAP_TYPE) {
/* Nonmatching */
void daPy_lk_c::createAnimeHeap(JKRSolidHeap** pHeap, daPy_HEAP_TYPE heapType) {
u32 heapSize;
// TODO: Should these heap sizes be sizeof()s instead of magic numbers?
if (heapType == HEAP_TYPE_ITEM_ANIME_e) {
heapSize = 0x50;
} else if (heapType == HEAP_TYPE_UNDER_UPPER_e || heapType == HEAP_TYPE_TEXTURE_ANIME_e) {
heapSize = 0x40;
} else { // heapType == HEAP_TYPE_TEXTURE_SCROLL_e
heapSize = 0xA0;
}
*pHeap = mDoExt_createSolidHeapFromGameToCurrent(heapSize, 0x20);
if (heapType == HEAP_TYPE_ITEM_ANIME_e) {
mDoExt_transAnmBas* tmp_trans_bas = new mDoExt_transAnmBas(NULL);
JUT_ASSERT(21307, tmp_trans_bas != 0);
} else if (heapType == HEAP_TYPE_UNDER_UPPER_e) {
J3DAnmTransformKey* tmp_trans = new J3DAnmTransformKey;
JUT_ASSERT(21310, tmp_trans != 0);
} else if (heapType == HEAP_TYPE_TEXTURE_ANIME_e) {
J3DAnmTexPattern* tmp_tp = new J3DAnmTexPattern;
JUT_ASSERT(21313, tmp_tp != 0);
} else { // heapType == HEAP_TYPE_TEXTURE_SCROLL_e
J3DAnmTextureSRTKey* tmp_tk = new J3DAnmTextureSRTKey;
JUT_ASSERT(21316, tmp_tk != 0);
}
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(*pHeap);
}
/* 80124A40-80124B30 .text initModel__9daPy_lk_cFPP8J3DModeliUl */
@@ -3672,7 +4153,7 @@ void daPy_lk_c::playerInit() {
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(mpItemHeaps[1]);
createAnimeHeap(&m2ECC, HEAP_TYPE_UNK3_e);
createAnimeHeap(&mpItemAnimeHeap, HEAP_TYPE_ITEM_ANIME_e);
mActorKeepEquip.clearData();
mActorKeepThrow.clearData();
@@ -3724,7 +4205,7 @@ void daPy_lk_c::playerInit() {
}
onNoResetFlg0(daPyFlg0_UNK100);
m08EC.OffWaterGrp();
mLavaGndChk.OffWaterGrp();
mDemo.setStick(1.0f);
endDamageEmitter();
mMirrorPacket.init(NULL);
@@ -4018,8 +4499,8 @@ void daPy_lk_c::animeUpdate() {
upperPack2->setFrame(mFrameCtrlUpper[UPPER_MOVE2_e].getFrame());
}
if (m2EAC) {
m2EAC->play(NULL, 0, 0);
if (mpParachuteFanMorf) {
mpParachuteFanMorf->play(NULL, 0, 0);
}
}
+75 -5
View File
@@ -203,8 +203,14 @@ void daPy_waterDropPcallBack_c::execute(JPABaseEmitter*, JPABaseParticle*) {
}
/* 80129F48-80129F98 .text execute__22daPy_followEcallBack_cFP14JPABaseEmitter */
void daPy_followEcallBack_c::execute(JPABaseEmitter*) {
/* Nonmatching */
void daPy_followEcallBack_c::execute(JPABaseEmitter* emitter) {
JGeometry::TVec3<f32> pos(field_0x08.x, field_0x08.y, field_0x08.z);
emitter->setGlobalTranslation(pos);
JGeometry::TVec3<s16> rot;
rot.x = field_0x14.x;
rot.y = field_0x14.y;
rot.z = field_0x14.z;
emitter->setGlobalRotation(rot);
}
/* 80129F98-80129FA0 .text setup__22daPy_followEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
@@ -268,16 +274,50 @@ void daPy_dmEcallBack_c::execute(JPABaseEmitter*) {
/* 8012A288-8012A8D8 .text setAuraEffect__9daPy_lk_cFv */
void daPy_lk_c::setAuraEffect() {
/* Nonmatching */
static const u16 aura_emitter_joint[] = {
0x0007,
0x000B,
0x0008,
0x000C,
0x0021,
0x0026,
0x0022,
0x0027,
0x0000,
0x000F,
};
static const u16 aura_model_joint[] = {
0x0000,
0x000F,
0x0008,
0x000C,
0x0021,
0x0026,
};
}
/* 8012A8D8-8012B340 .text setWaterRipple__9daPy_lk_cFv */
void daPy_lk_c::setWaterRipple() {
/* Nonmatching */
static Vec waterfall_ripple_scale = {0.75f, 0.75f, 0.75f};
static JGeometry::TVec3<f32> normal_ripple_scale;
static JGeometry::TVec3<f32> small_ripple_scale;
static JGeometry::TVec3<f32> waterfall_splash_trans;
static const Vec wave_offset = {0.0f, 18.0f, 0.0f};
static const Vec swim_offset = {0.0f, 30.0f, 0.0f};
static const Vec swim_side_offset = {0.0f, 0.0f, 30.0f};
}
/* 8012B340-8012B8EC .text setFootEffectType__9daPy_lk_cFiP4cXyzii */
void daPy_lk_c::setFootEffectType(int, cXyz*, int, int) {
/* Nonmatching */
static JGeometry::TVec3<f32> run_splash_scale;
static Vec grass_scale = {1.5f, 1.5f, 1.5f};
static JGeometry::TVec3<f32> run_grass_scale;
static Vec smoke_scale = {1.25f, 1.25f, 1.25f};
static JGeometry::TVec3<f32> heavy_emit_smoke_scale;
static JGeometry::TVec3<f32> heavy_dyn_smoke_scale;
static JGeometry::TVec3<f32> heavy_pat_smoke_scale;
}
/* 8012B8EC-8012B9DC .text setFootMark__9daPy_lk_cFP4cXyz */
@@ -298,6 +338,7 @@ void daPy_lk_c::resetFootEffect() {
/* 8012C1A8-8012C2A4 .text setSwimTail__9daPy_lk_cFv */
void daPy_lk_c::setSwimTail() {
/* Nonmatching */
static JGeometry::TVec3<f32> tail_scale(1.0f, 1.0f, -1.0f);
}
/* 8012C2A4-8012C330 .text setCutWaterSplash__9daPy_lk_cFv */
@@ -317,7 +358,33 @@ void daPy_lk_c::setWaterDrop() {
/* 8012C620-8012C754 .text setDamageFlameEmitter__9daPy_lk_cFv */
void daPy_lk_c::setDamageFlameEmitter() {
/* Nonmatching */
static JGeometry::TVec3<f32> arm_flame_scale(0.6f, 0.6f, 0.6f);
static const u16 flame_joint[ARRAY_SIZE(mDmEcallBack)] = {
0x000F, // head_jnt
0x0003, // stomach_jnt
0x0007, // LarmB_jnt
0x000B, // RarmB_jnt
};
if (!daPy_dmEcallBack_c::checkFlame()) {
endDamageEmitter();
const u16* jointNoP = flame_joint;
daPy_dmEcallBack_c* dmECB = mDmEcallBack;
for (int i = 0; i < (s32)ARRAY_SIZE(mDmEcallBack); i++, jointNoP++, dmECB++) {
cXyz jointPos;
mDoMtx_multVecZero(mpCLModel->getAnmMtx(*jointNoP), &jointPos);
dmECB->makeEmitter(0x3F1, mpCLModel->getAnmMtx(*jointNoP), &jointPos, NULL);
if (dmECB->getEmitter() == NULL) {
continue;
}
if (i == 2 || i == 3) {
dmECB->getEmitter()->setGlobalScale(arm_flame_scale);
}
}
}
daPy_dmEcallBack_c::setFlame(100);
}
/* 8012C754-8012C7F0 .text setDamageCurseEmitter__9daPy_lk_cFv */
@@ -342,8 +409,8 @@ void daPy_lk_c::endFlameDamageEmitter() {
/* 8012C9D8-8012CA44 .text endDamageEmitter__9daPy_lk_cFv */
void daPy_lk_c::endDamageEmitter() {
for (int i = 0; i < (int)ARRAY_SIZE(m33B8); i++) {
m33B8[i].end();
for (int i = 0; i < (int)ARRAY_SIZE(mDmEcallBack); i++) {
mDmEcallBack[i].end();
}
daPy_dmEcallBack_c::setTimer(0);
daPy_dmEcallBack_c::setType(3);
@@ -353,4 +420,7 @@ void daPy_lk_c::endDamageEmitter() {
/* 8012CA44-8012CD60 .text setItemWaterEffect__9daPy_lk_cFP10fopAc_ac_cii */
u32 daPy_lk_c::setItemWaterEffect(fopAc_ac_c*, int, int) {
/* Nonmatching */
static cXyz eff_scale0(0.5f, 0.5f, 0.5f);
static cXyz eff_scale2(0.13f, 0.13f, 0.13f);
static JGeometry::TVec3<f32> direction(0.0f, 1.0f, 0.0f);
}
+3
View File
@@ -50,6 +50,8 @@ void daPy_lk_c::changeRopeToHangProc() {
/* 8014327C-80143694 .text checkRopeSwingWall__9daPy_lk_cFP4cXyzP4cXyzPsPf */
BOOL daPy_lk_c::checkRopeSwingWall(cXyz*, cXyz*, s16*, f32*) {
/* Nonmatching */
static JGeometry::TVec3<f32> dynamic_scale;
static JGeometry::TVec3<f32> particle_scale;
}
/* 80143694-80143A44 .text setBlendRopeMoveAnime__9daPy_lk_cFi */
@@ -105,6 +107,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c*, s16) {
/* 80144C58-801456D8 .text procRopeSwing__9daPy_lk_cFv */
BOOL daPy_lk_c::procRopeSwing() {
/* Nonmatching */
static cXyz local_height_offset;
}
/* 801456D8-801457FC .text procRopeHangWait_init__9daPy_lk_cFi */
+2
View File
@@ -32,6 +32,8 @@ 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;
}
/* 8013FE78-8013FEF4 .text checkShipRideUseItem__9daPy_lk_cFi */
+2
View File
@@ -65,6 +65,8 @@ void daPy_lk_c::setSwimTimerStartStop() {
/* 8013D814-8013DA18 .text procSwimUp_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procSwimUp_init(int) {
/* Nonmatching */
static JGeometry::TVec3<f32> splash_scale;
static JGeometry::TVec3<f32> ripple_scale;
}
/* 8013DA18-8013DB24 .text procSwimUp__9daPy_lk_cFv */
+9 -4
View File
@@ -98,10 +98,10 @@ void daPy_lk_c::setSwordModel(BOOL r28) {
buffer = new(0x20) u8[0x400];
JKRReadIdxResource(buffer, 0x400, model_tbl.tipStabBrk, dComIfGp_getAnmArchive());
mpCutfBrk2EF8 = static_cast<J3DAnmTevRegKey*>(J3DAnmLoaderDataBase::load(buffer));
mpCutfBrk2EF8->setFrame(0.0f);
mpCutfBrk2EF8->searchUpdateMaterialID(modelData);
modelData->entryTevRegAnimator(mpCutfBrk2EF8);
mpCutfBrk = static_cast<J3DAnmTevRegKey*>(J3DAnmLoaderDataBase::load(buffer));
mpCutfBrk->setFrame(0.0f);
mpCutfBrk->searchUpdateMaterialID(modelData);
modelData->entryTevRegAnimator(mpCutfBrk);
buffer = new(0x20) u8[0x400];
JKRReadIdxResource(buffer, 0x400, model_tbl.tipStabBpk, dComIfGp_getAnmArchive());
@@ -123,6 +123,8 @@ void daPy_lk_c::setSwordModel(BOOL r28) {
/* 80154FBC-80155490 .text setLightSaver__9daPy_lk_cFv */
void daPy_lk_c::setLightSaver() {
/* Nonmatching */
static JGeometry::TVec3<f32> d_scale(1.4f, 1.4f, 1.4f);
static JGeometry::TVec3<f32> p_scale(1.6f, 1.4f, 1.4f);
}
/* 80155490-801554C8 .text checkDemoShieldNoDraw__9daPy_lk_cFv */
@@ -293,6 +295,8 @@ BOOL daPy_lk_c::procCutRoll() {
/* 801588F0-80158A40 .text procCutRollEnd_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procCutRollEnd_init() {
/* Nonmatching */
static JGeometry::TVec3<f32> emitter_trans(0.0f, 55.0f, 0.0f);
static JGeometry::TVec3<f32> particle_scale(0.76f, 0.76f, 0.76f);
}
/* 80158A40-80158A98 .text procCutRollEnd__9daPy_lk_cFv */
@@ -313,6 +317,7 @@ BOOL daPy_lk_c::procCutTurnCharge() {
/* 80158B58-80158D40 .text procCutTurnMove_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procCutTurnMove_init() {
/* Nonmatching */
static Vec eff_scale = {1.5f, 1.5f, 1.5f};
}
/* 80158D40-80159130 .text procCutTurnMove__9daPy_lk_cFv */
+1 -1
View File
@@ -37,7 +37,7 @@ bool dVibration_c::StartQuake(int, int, cXyz) {
}
/* 8009CE1C-8009CF84 .text StartQuake__12dVibration_cFPCUcii4cXyz */
bool dVibration_c::StartQuake(const unsigned char*, int, int, cXyz) {
bool dVibration_c::StartQuake(const u8*, int, int, cXyz) {
/* Nonmatching */
}
+1 -1
View File
@@ -137,7 +137,7 @@ void fop_MGameTerm_create(s16, s16, s16, int, int, int (*)(void*)) {
}
/* 8002B2B0-8002B324 .text fop_Timer_create__FsUcUsUcUcffffPFPv_i */
void fop_Timer_create(s16, u8, u16, u8, u8, f32, f32, f32, f32, int (*)(void*)) {
s32 fop_Timer_create(s16, u8, u16, u8, u8, f32, f32, f32, f32, int (*)(void*)) {
/* Nonmatching */
}