diff options
| author | TakaRikka <takarikka@outlook.com> | 2022-05-28 03:49:55 -0700 |
|---|---|---|
| committer | TakaRikka <takarikka@outlook.com> | 2022-05-28 03:49:55 -0700 |
| commit | 36e62e0b80225b6ef6cbe6a7322397899d3a0ffd (patch) | |
| tree | 78f9950298acfc601001a0da4ab9d46cd04d6de2 /include | |
| parent | 9bcbccbeb5966896e10b9f29cc4c69bc49abe20d (diff) | |
npcT / JUTGamePad work
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DJoint.h | 13 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h | 8 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DModel.h | 1 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DModelData.h | 4 | ||||
| -rw-r--r-- | include/JSystem/JSupport/JSUList.h | 2 | ||||
| -rw-r--r-- | include/JSystem/JUtility/JUTGamePad.h | 112 | ||||
| -rw-r--r-- | include/MSL_C/math.h | 4 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_cc_d.h | 1 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_m3d_g_cyl.h | 2 | ||||
| -rw-r--r-- | include/Z2AudioLib/Z2EnvSeMgr.h | 6 | ||||
| -rw-r--r-- | include/d/a/d_a_npc.h | 72 | ||||
| -rw-r--r-- | include/d/cc/d_cc_d.h | 3 | ||||
| -rw-r--r-- | include/d/com/d_com_inf_game.h | 2 | ||||
| -rw-r--r-- | include/d/d_drawlist.h | 13 | ||||
| -rw-r--r-- | include/d/kankyo/d_kankyo.h | 5 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 4 | ||||
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 206 | ||||
| -rw-r--r-- | include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h | 62 |
18 files changed, 407 insertions, 113 deletions
diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 28cc3b92f0..b0f77631dd 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -19,7 +19,7 @@ public: /* 80014E94 */ virtual bool getAnmTransform(u8); /* 80014EA4 */ virtual void setWeight(u8, f32); /* 80014EA8 */ virtual void getWeight(u8) const; - virtual void init(Vec const&, Mtx*) = 0; + virtual void init(Vec const& param_0, Mtx*) = 0; virtual void calc() = 0; static J3DMtxBuffer* getMtxBuffer() { return mMtxBuffer; } @@ -34,8 +34,14 @@ public: /* 8000FA8C */ virtual ~J3DMtxCalcNoAnmBase(); }; -template <typename A, typename B> -class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase, public A, public B {}; +template <class A, class B> +class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase, public A, public B { +public: + J3DMtxCalcNoAnm() {} + virtual ~J3DMtxCalcNoAnm() {} + virtual void init(Vec const& param_0, f32 const (¶m_1)[3][4]); + virtual void calc(); +}; class J3DJoint; typedef int (*J3DJointCallBack)(J3DJoint*, int); @@ -53,6 +59,7 @@ public: J3DJoint* getYounger() { return mYounger; } void setYounger(J3DJoint* pYounger) { mYounger = pYounger; } void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; } + J3DTransformInfo& getTransformInfo() { return mTransformInfo; } static J3DMtxCalc* mCurrentMtxCalc; diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h index 5802a1040b..d635b91979 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAttach.h @@ -15,10 +15,10 @@ class J3DMaterialTable { public: /* 8032F5A8 */ void clear(); /* 8032F5D0 */ J3DMaterialTable(); - /* 8032F64C */ bool removeMatColorAnimator(J3DAnmColor*); - /* 8032F6F8 */ void removeTexNoAnimator(J3DAnmTexPattern*); - /* 8032F7B4 */ void removeTexMtxAnimator(J3DAnmTextureSRTKey*); - /* 8032F880 */ void removeTevRegAnimator(J3DAnmTevRegKey*); + /* 8032F64C */ int removeMatColorAnimator(J3DAnmColor*); + /* 8032F6F8 */ int removeTexNoAnimator(J3DAnmTexPattern*); + /* 8032F7B4 */ int removeTexMtxAnimator(J3DAnmTextureSRTKey*); + /* 8032F880 */ int removeTevRegAnimator(J3DAnmTevRegKey*); /* 8032F9C0 */ void createTexMtxForAnimator(J3DAnmTextureSRTKey*); /* 8032FAF4 */ void entryMatColorAnimator(J3DAnmColor*); /* 8032FBC8 */ void entryTexNoAnimator(J3DAnmTexPattern*); diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 26c7ec72a2..fbd0a35597 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -68,6 +68,7 @@ public: Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); } Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); } void setBaseScale(const Vec& scale) { mBaseScale = scale; } + void setUserArea(u32 area) { mUserArea = area; } // is there a better way to handle inlines with same name as non-inlines? MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); } diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 56b896c926..1bca78e0bf 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -43,6 +43,10 @@ public: bool checkFlag(u32 flag) const { return !!(mFlags & flag); } bool checkBumpFlag() const { return mbHasBumpArray; } bool checkBBoardFlag() const { return mbHasBillboard == 1; } + int removeTexNoAnimator(J3DAnmTexPattern* anm) { return mMaterialTable.removeTexNoAnimator(anm); } + int removeTexMtxAnimator(J3DAnmTextureSRTKey* anm) { return mMaterialTable.removeTexMtxAnimator(anm); } + int removeTevRegAnimator(J3DAnmTevRegKey* anm) { return mMaterialTable.removeTevRegAnimator(anm); } + int removeMatColorAnimator(J3DAnmColor* anm) { return mMaterialTable.removeMatColorAnimator(anm); } private: /* 0x04 */ void* mpRawData; diff --git a/include/JSystem/JSupport/JSUList.h b/include/JSystem/JSupport/JSUList.h index b0bbdd4fb9..c1deabae92 100644 --- a/include/JSystem/JSupport/JSUList.h +++ b/include/JSystem/JSupport/JSUList.h @@ -52,7 +52,6 @@ public: class JSUPtrList { public: JSUPtrList() { this->initiate(); } - JSUPtrList(bool init); ~JSUPtrList(); @@ -80,7 +79,6 @@ template <typename T> class JSUList : public JSUPtrList { public: JSUList() : JSUPtrList() {} - JSUList(bool init) : JSUPtrList(init) {} ~JSUList() {} diff --git a/include/JSystem/JUtility/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad.h index e1b9639df1..b25321d731 100644 --- a/include/JSystem/JUtility/JUTGamePad.h +++ b/include/JSystem/JUtility/JUTGamePad.h @@ -29,26 +29,25 @@ enum { extern bool struct_80451500; extern bool struct_80451501; // sResetOccured +struct JUTGamePadRecordBase { + virtual void unk0() {} + virtual void unk1(PADStatus* pad) {} + virtual void unk2() {} + + /* 0x4 */ bool mActive; +}; + struct JUTGamePad : public JKRDisposer { public: - // TODO: fix types - // static JSUList<JUTGamePad> mPadList; - static u8 mPadList[12]; - static PADStatus mPadStatus[4]; - static u8 mPadButton[192]; - static u8 mPadMStick[64]; - static u8 mPadSStick[64]; - static u32 sStickMode; - static u32 sClampMode; - static u8 mPadAssign[4]; - static u8 sSuppressPadReset[4]; - static s32 sAnalogMode; - static u32 sRumbleSupported; - - enum EStickMode {}; - enum EWhichStick {}; + enum EStickMode { + STICK_MODE_1 = 1, + }; + enum EWhichStick { + WS_MAIN_STICK, + WS_SUB_STICK, + }; enum EPadPort { - Port_Unknown = -1, // used by JUTException + Port_Unknown = -1, Port_1, Port_2, Port_3, @@ -61,15 +60,15 @@ public: void initList(); static s32 init(); void clear(); - static void read(); + static u32 read(); void assign(); - void checkResetCallback(OSTime unk); // todo: weird arg + void checkResetCallback(OSTime unk); void update(); void stopPatternedRumble() { mRumble.stopPatternedRumble(mPortNum); } static void checkResetSwitch(); static void clearForReset(); static JUTGamePad* getGamePad(int pad_index); - static bool recalibrate(/*PADMask*/ u32 pad_mask); + static bool recalibrate(u32 pad_mask); static void setAnalogMode(u32 mode) { sAnalogMode = mode; @@ -112,6 +111,12 @@ public: u8 getAnalogR() const { return mButton.mAnalogR; } s8 getErrorStatus() const { return mErrorStatus; } + + s16 getPortNum() const { return mPortNum; } + + JUTGamePadRecordBase* getPadReplay() const { return mPadReplay; } + + JUTGamePadRecordBase* getPadRecord() const { return mPadRecord; } u32 testTrigger(u32 button) const { return mButton.mTrigger & button; } @@ -124,12 +129,14 @@ public: return isPushingReset; } + void stopMotorHard() { mRumble.stopMotorHard(mPortNum); } + static s8 getPortStatus(u32 port) { return mPadStatus[port].error; } struct CButton { - CButton(); // inline + CButton() { clear(); } void clear(); - u32 update(PADStatus const*, u32 unk); + void update(PADStatus const*, u32 unk); void setRepeat(u32 unk0, u32 unk1, u32 unk2); /* 0x00 */ u32 mButton; @@ -150,7 +157,8 @@ public: }; // Size: 0x30 struct C3ButtonReset { - // TODO: fix types + C3ButtonReset() { mReset = false; } + static u32 sResetPattern; static u32 sResetMaskPattern; static callbackFn sCallback; @@ -165,7 +173,7 @@ public: static f32 sPressPoint; static f32 sReleasePoint; - CStick(); // inline + CStick() { clear(); } void clear(); void clear(JUTGamePad* pad); u32 update(s8 unk0, s8 unk1, JUTGamePad::EStickMode mode, JUTGamePad::EWhichStick stick, @@ -183,6 +191,8 @@ public: void stopMotorWaveHard() { mRumble.stopPatternedRumble(mPortNum); } struct CRumble { + CRumble(JUTGamePad* pad) { clear(pad); } + static PADMask sChannelMask[4]; static bool mStatus[4]; static PADMask mEnabled; @@ -204,6 +214,11 @@ public: void stopPatternedRumbleAtThePeriod(); static void setEnabled(u32 pad_mask); + void stopMotorHard(int portNo) { stopMotor(portNo, true); } + + static bool isEnabled(u32 mask) { return mEnabled & mask; } + static bool isEnabledPort(int port) { return isEnabled(sChannelMask[port]); } + /* 0x00 */ u32 field_0x0; /* 0x04 */ u32 field_0x4; /* 0x08 */ u8* field_0x8; @@ -218,32 +233,45 @@ public: /* 0x7C */ s16 mPortNum; /* 0x7E */ s8 mErrorStatus; /* 0x80 */ JSULink<JUTGamePad> mLink; - /* 0x90 */ u32 mPadRecord; - /* 0x94 */ u32 mPadReplay; + /* 0x90 */ JUTGamePadRecordBase* mPadRecord; + /* 0x94 */ JUTGamePadRecordBase* mPadReplay; /* 0x98 */ C3ButtonReset mButtonReset; /* 0x9C */ u8 field_0x9c[4]; /* 0xA0 */ OSTime mResetTime; /* 0xA8 */ u8 field_0xa8; - friend class CRumble; + static JSUList<JUTGamePad> mPadList; + static bool mListInitialized; + static PADStatus mPadStatus[4]; + static CButton mPadButton[4]; + static CStick mPadMStick[4]; + static CStick mPadSStick[4]; + static EStickMode sStickMode; + static u32 sClampMode; + static u8 mPadAssign[4]; + static u32 sSuppressPadReset; + static s32 sAnalogMode; + static u32 sRumbleSupported; }; struct JUTGamePadLongPress { - // TODO: fix type - // static JSUList<JUTGamePadLongPress> sPatternList; - static u8 sPatternList[12]; - void checkCallback(int unk0, u32 unk2); - - u8 unk0[17]; - bool field_0x11; // bool? - u8 unk1[10]; - u32 field_0x1c; - u8 unk2[28]; - u8 field_0x3c; - u8 unk3[11]; - bool field_0x48[4]; // bool[4]? - void (*callback)(s32, JUTGamePadLongPress*, s32); - s32 field_0x50; + static JSUList<JUTGamePadLongPress> sPatternList; + void checkCallback(int port, u32 timer); + + u32 getMaskPattern() const { return mMaskPattern; } + u32 getPattern() const { return mPattern; } + + /* 0x00 */ u8 field_0x0[0x10]; + /* 0x10 */ bool mValid; + /* 0x11 */ bool field_0x11; + /* 0x14 */ u32 mPattern; + /* 0x18 */ u32 mMaskPattern; + /* 0x1C */ u32 field_0x1c; + /* 0x20 */ bool field_0x20[4]; + /* 0x28 */ OSTime mTimer[4]; + /* 0x48 */ bool field_0x48[4]; + /* 0x4C */ void (*mCallback)(s32, JUTGamePadLongPress*, s32); + /* 0x50 */ s32 field_0x50; }; #endif /* JUTGAMEPAD_H */ diff --git a/include/MSL_C/math.h b/include/MSL_C/math.h index 478829c1f5..837522fb44 100644 --- a/include/MSL_C/math.h +++ b/include/MSL_C/math.h @@ -71,6 +71,10 @@ inline float sqrtf(float mag) { } } +inline float atan2f(float y, float x) { + return (f32)atan2(y, x); +} + #ifdef __cplusplus }; #endif diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 27b3df6205..31a435ce5f 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -276,6 +276,7 @@ public: void SetWeight(u8 weight) { mWeight = weight; } fopAc_ac_c* GetAc() { return mActor; } void SetActor(void* ac) { mActor = (fopAc_ac_c*)ac; } + cXyz* GetCCMoveP() { return &mXyz; } }; // Size = 0x1C STATIC_ASSERT(0x1C == sizeof(cCcD_Stts)); diff --git a/include/SSystem/SComponent/c_m3d_g_cyl.h b/include/SSystem/SComponent/c_m3d_g_cyl.h index 7d123f6fa6..ec5c29fc5d 100644 --- a/include/SSystem/SComponent/c_m3d_g_cyl.h +++ b/include/SSystem/SComponent/c_m3d_g_cyl.h @@ -7,7 +7,7 @@ // Cylinder struct cM3dGCylS { - /* 0x00 */ cXyz mCenter; + /* 0x00 */ Vec mCenter; /* 0x0C */ f32 mRadius; /* 0x10 */ f32 mHeight; }; // Size = 0x14 diff --git a/include/Z2AudioLib/Z2EnvSeMgr.h b/include/Z2AudioLib/Z2EnvSeMgr.h index e80ced990c..da494c8791 100644 --- a/include/Z2AudioLib/Z2EnvSeMgr.h +++ b/include/Z2AudioLib/Z2EnvSeMgr.h @@ -118,6 +118,10 @@ struct Z2EnvSeMgr { /* 0x188 */ u8 field_0x188; /* 0x18C */ Z2Calc::FNoise1f field_0x18c; /* 0x19C */ Z2Calc::FNoise1f field_0x19c; + /* 0x1AC */ f32 field_0x1ac; + /* 0x1B0 */ f32 field_0x1b0; + /* 0x1B4 */ f32 field_0x1b4; + /* 0x1B8 */ u8 field_0x1b8; /* 0x1BC */ Z2MultiSeMgr field_0x1bc; /* 0x1D8 */ Z2EnvSeBase field_0x1d8; /* 0x1E0 */ u8 field_0x1e0; @@ -156,4 +160,6 @@ struct Z2EnvSeMgr { /* 0x308 */ f32 field_0x308; }; // Size: 0x30C +STATIC_ASSERT(sizeof(Z2EnvSeMgr) == 0x30C); + #endif /* Z2ENVSEMGR_H */ diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index c27d2b5738..bbafedf42d 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -7,21 +7,30 @@ class daNpcT_MotionSeqMngr_c { public: - struct sequenceStepData_c {}; + class sequenceStepData_c { + public: + s16 field_0x0; + s8 field_0x2; + s8 field_0x3; + }; // Size: 0x4? /* 80145898 */ void initialize(); - /* 801458C0 */ void play(u16, int*, f32*); - /* 80145A24 */ void checkEndSequence(); + /* 801458C0 */ int play(u16, int*, f32*); + /* 80145A24 */ s32 checkEndSequence(); + + bool checkEntryNewMotion() { + return mStepNo == 0 && field_0x14 == -1; + } private: - /* 0x00 */ sequenceStepData_c* field_0x0; + /* 0x00 */ sequenceStepData_c* mpSeqData; /* 0x04 */ int field_0x4; /* 0x08 */ int mNo; /* 0x0C */ int mOffset; /* 0x10 */ int mStepNo; /* 0x14 */ int field_0x14; /* 0x18 */ f32 field_0x18; - /* 0x1C */ u8 field_0x1c; + /* 0x1C */ bool mEndSequence; public: /* 8014D0C0 */ virtual ~daNpcT_MotionSeqMngr_c(); @@ -35,14 +44,14 @@ public: /* 801456D4 */ void initialize(); /* 801456E0 */ void entry(fopAc_ac_c*); /* 801456FC */ void remove(); - /* 80145708 */ void getActorP(); + /* 80145708 */ fopAc_ac_c* getActorP(); /* 8014D108 */ virtual ~daNpcT_ActorMngr_c(); }; class daNpcT_JntAnm_c { private: - /* 0x000 */ daNpcT_ActorMngr_c field_0x0; + /* 0x000 */ daNpcT_ActorMngr_c mActrMngr; /* 0x008 */ cXyz field_0x8; /* 0x014 */ cXyz field_0x14; /* 0x020 */ cXyz* field_0x20; @@ -77,6 +86,8 @@ public: /* 80147C38 */ void calcJntRad(f32, f32, f32); /* 8014D150 */ virtual ~daNpcT_JntAnm_c(); + + void clrDirectFlag() { mDirectFlag = 0; } }; class daNpcT_DmgStagger_c { @@ -98,7 +109,9 @@ struct daNpcT_faceMotionAnmData_c {}; struct daNpcT_pntData_c {}; -struct daNpcT_motionAnmData_c {}; +struct daNpcT_motionAnmData_c { + u8 data[8]; +}; class mDoExt_McaMorfSO; @@ -197,28 +210,31 @@ public: /* 0xE32 */ u8 field_0xe32; /* 0xE33 */ u8 field_0xe33; /* 0xE34 */ u8 field_0xe34; - /* 0xE35 */ u8 field_0xe35[7]; + /* 0xE35 */ u8 field_0xe35; + /* 0xE36 */ u8 field_0xe36; + /* 0xE37 */ u8 field_0xe37; + /* 0xE38 */ u8 field_0xe38; /* 0xE3C vtable */ public: /* 80147FA4 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); - /* 80147FD4 */ void srchActor(void*, void*); - /* 80148058 */ void getTrnsfrmAnmP(char const*, int); - /* 80148094 */ void getTrnsfrmKeyAnmP(char const*, int); - /* 801480D0 */ void getTexPtrnAnmP(char const*, int); - /* 8014810C */ void getTexSRTKeyAnmP(char const*, int); - /* 80148148 */ void getTevRegKeyAnmP(char const*, int); - /* 80148184 */ void getColorAnmP(char const*, int); + /* 80147FD4 */ static int srchActor(void*, void*); + /* 80148058 */ J3DAnmTransform* getTrnsfrmAnmP(char const*, int); + /* 80148094 */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char const*, int); + /* 801480D0 */ J3DAnmTexPattern* getTexPtrnAnmP(char const*, int); + /* 8014810C */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char const*, int); + /* 80148148 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char const*, int); + /* 80148184 */ J3DAnmColor* getColorAnmP(char const*, int); /* 801481C0 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 80148204 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); + /* 80148204 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); /* 801482F8 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); /* 80148338 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); /* 80148378 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int); /* 801483B8 */ void setBpkAnm(J3DAnmColor*, J3DModelData*, f32, int); - /* 801483F8 */ void loadRes(s8 const*, char const**); + /* 801483F8 */ int loadRes(s8 const*, char const**); /* 801484AC */ void deleteRes(s8 const*, char const**); - /* 8014852C */ void execute(); - /* 8014886C */ void draw(int, int, f32, _GXColorS10*, f32, int, int, int); + /* 8014852C */ int execute(); + /* 8014886C */ int draw(int, int, f32, _GXColorS10*, f32, int, int, int); /* 80148C70 */ void setEnvTevColor(); /* 80148CCC */ void setRoomNo(); /* 80148D10 */ void checkEndAnm(f32); @@ -233,7 +249,7 @@ public: /* 8014A908 */ void setPos(cXyz); /* 8014AA18 */ void setAngle(s16); /* 8014A99C */ void setAngle(csXyz); - /* 8014AA40 */ void hitChk(dCcD_GObjInf*, u32); + /* 8014AA40 */ fopAc_ac_c* hitChk(dCcD_GObjInf*, u32); /* 8014AAD0 */ void setDamage(int, int, int); /* 8014ABD0 */ void chkActorInSight(fopAc_ac_c*, f32, s16); /* 8014ACF0 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); @@ -275,7 +291,7 @@ public: /* 8014CC70 */ virtual bool evtEndProc(); /* 8014CC68 */ virtual bool evtCutProc(); /* 8014CC64 */ virtual void setAfterTalkMotion(); - /* 8014997C */ virtual void evtProc(); + /* 8014997C */ virtual int evtProc(); /* 8014CC20 */ virtual void action(); /* 8014CC1C */ virtual void beforeMove(); /* 8014CC18 */ virtual void afterMoved(); @@ -289,7 +305,7 @@ public: /* 8014A0B0 */ virtual void evtOrder(); /* 8014CBF4 */ virtual void decTmr(); /* 8014A324 */ virtual void clrParam(); - /* 8014CC30 */ virtual bool drawDbgInfo(); + /* 8014CC30 */ virtual int drawDbgInfo(); /* 8014CC28 */ virtual void drawOtherMdl(); /* 8014CC2C */ virtual void drawGhost(); /* 8014CCA0 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int); @@ -302,12 +318,16 @@ public: /* 8014CCE8 */ virtual void changeBtk(int*, int*); /* 8014A628 */ virtual void setMotionAnm(int, f32, int); + bool checkHide() { + return !field_0xe25 && (!dComIfGs_wolfeye_effect_check() && field_0xa89); + } + static u8 const mCcDObjData[48]; static u8 mCcDCyl[68]; static u8 mCcDSph[64]; - static u8 mFindActorPtrs[200]; - static u8 mSrchName[2 + 2 /* padding */]; - static u8 mFindCount[4]; + static fopAc_ac_c* mFindActorPtrs[50]; + static s16 mSrchName; + static s32 mFindCount; }; STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40); diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index b348bee671..51bf27fc4f 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -58,6 +58,8 @@ public: /* 8008523C */ virtual ~dCcD_GStts() {} void ClrTg() { mTg = 0; } void SetAtApid(unsigned int id) { mAtApid = id; } + u8 GetRoomId() { return mRoomId; } + void SetRoomId(int id) { mRoomId = id; } // private: /* 0x04 */ u8 mAt; @@ -213,6 +215,7 @@ public: u8 GetAtSe() { return mGObjAt.GetSe(); } s32 GetAtSpl() { return mGObjAt.GetSpl(); } u8 GetAtMtrl() { return mGObjAt.GetMtrl(); } + fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); } static u32 const m_hitSeID[24]; diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 115a7a4bf7..a71bec6eba 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -650,6 +650,7 @@ void* dComIfG_getOldStageRes(char const* resName); void dComIfG_get_timelayer(int* layer); int dComIfG_resDelete(request_of_phase_process_class* i_phase, char const* resName); int dComIfG_changeOpeningScene(scene_class* scene, s16 procName); +int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* arc_name); inline void dComIfG_setBrightness(u8 brightness) { g_dComIfG_gameInfo.mFadeBrightness = brightness; @@ -755,6 +756,7 @@ void dComIfGs_offZoneSwitch(int param_0, int param_1); void dComIfGs_offOneZoneSwitch(int param_0, int param_1); s8 dComIfGp_getReverb(int roomNo); void dComIfGs_gameStart(); +int dComIfGs_wolfeye_effect_check(); inline void dComIfGs_onDungeonItemMap() { g_dComIfG_gameInfo.info.getMemory().getBit().onDungeonItemMap(); diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 93df763497..3dc5268fd0 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -14,19 +14,6 @@ #include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" -struct mDoExt_3DlineMat_c {}; - -class mDoExt_3DlineMatSortPacket : public J3DPacket { -public: - mDoExt_3DlineMatSortPacket(); - - virtual void draw(); - virtual ~mDoExt_3DlineMatSortPacket(); - -private: - /* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat; -}; - class cM_rnd_c { public: /* 80053CDC */ void init(int, int, int); diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 093709a7c2..4b10fff891 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -11,6 +11,8 @@ #include "dolphin/types.h" #include "m_Do/m_Do_ext.h" +class cBgS_PolyInfo; + void dKankyo_DayProc(); void dKy_set_nexttime(f32); void dKy_itudemo_se(); @@ -20,6 +22,7 @@ void dKy_FiveSenses_fullthrottle_dark(); s32 dKy_daynight_check(); void dKy_clear_game_init(); void dKy_setLight_init(); +u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0); struct LIGHT_INFLUENCE { /* 800CFC7C */ ~LIGHT_INFLUENCE(); @@ -141,7 +144,7 @@ public: /* 0x358 */ u16 field_0x358; /* 0x35A */ u16 field_0x35a; /* 0x35C */ u16 field_0x35c; - /* 0x35E */ u8 field_0x35e[2]; + /* 0x35E */ u16 field_0x35e; /* 0x360 */ u8 field_0x360; /* 0x361 */ u8 field_0x361; /* 0x362 */ u8 field_0x362; diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 0a238b9e16..13b70893e2 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -158,6 +158,10 @@ inline BOOL fopAcM_IsActor(void* actor) { return fopAc_IsActor(actor); } +inline void fopAcM_SetRoomNo(fopAc_ac_c* actor, s8 roomNo) { + actor->mCurrent.mRoomNo = roomNo; +} + void* fopAcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, void* pData); void fopAcM_setStageLayer(void*); int fopAcM_setRoomLayer(void*, int); diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 8902e23641..7c4da190d8 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -6,6 +6,7 @@ #include "JSystem/JKernel/JKRAssertHeap.h" #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JKernel/JKRSolidHeap.h" +#include "m_Do/m_Do_audio.h" #include "global.h" class mDoExt_baseAnm { @@ -32,7 +33,7 @@ private: class mDoExt_btkAnm : public mDoExt_baseAnm { public: - mDoExt_btkAnm(void) { mBtkAnm = 0; } + mDoExt_btkAnm() { mpAnm = 0; } /* 8000D63C */ int init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); @@ -43,15 +44,17 @@ public: return init(&data->getMaterialTable(), key, param_2, param_3, param_4, param_5, param_6); } + int remove(J3DModelData* data) { return data->removeTexMtxAnimator(mpAnm); } + private: - /* 0x14 */ u32 mBtkAnm; + /* 0x14 */ J3DAnmTextureSRTKey* mpAnm; }; // Size: 0x18 STATIC_ASSERT(sizeof(mDoExt_btkAnm) == 0x18); class mDoExt_brkAnm : public mDoExt_baseAnm { public: - mDoExt_brkAnm(void) { mBrkAnm = 0; } + mDoExt_brkAnm() { mpAnm = 0; } /* 8000D70C */ int init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); @@ -63,15 +66,17 @@ public: return init(&data->getMaterialTable(), anmKey, param_2, param_3, param_4, param_5, param_6); } + int remove(J3DModelData* data) { return data->removeTevRegAnimator(mpAnm); } + private: - /* 0x14 */ u32 mBrkAnm; + /* 0x14 */ J3DAnmTevRegKey* mpAnm; }; // Size: 0x18 STATIC_ASSERT(sizeof(mDoExt_brkAnm) == 0x18); class mDoExt_bpkAnm : public mDoExt_baseAnm { public: - mDoExt_bpkAnm(void) { mBpkAnm = 0; } + mDoExt_bpkAnm() { mpAnm = 0; } /* 8000D47C */ int init(J3DMaterialTable*, J3DAnmColor*, int, int, f32, s16, s16); /* 8000D518 */ void entry(J3DMaterialTable*, f32); @@ -84,25 +89,29 @@ public: param_6); } + int remove(J3DModelData* data) { return data->removeMatColorAnimator(mpAnm); } + private: - /* 0x14 */ u32 mBpkAnm; + /* 0x14 */ J3DAnmColor* mpAnm; }; // Size: 0x18 STATIC_ASSERT(sizeof(mDoExt_bpkAnm) == 0x18); class mDoExt_bckAnm : public mDoExt_baseAnm { public: - mDoExt_bckAnm(void) { mAnm = 0; } - /* 8000D7DC */ int init(J3DAnmTransform*, int, int, f32, s16, s16, bool); + mDoExt_bckAnm() { mpMtxCalc = NULL; } + /* 8000D7DC */ int init(J3DAnmTransform* i_bck, int i_play, int i_attr, f32 i_rate, + s16 i_startF, s16 i_endF, bool i_modify); /* 8000D990 */ void changeBckOnly(J3DAnmTransform*); /* 8000D9CC */ void entry(J3DModelData*, f32); /* 8000D9E8 */ void entryJoint(J3DModelData*, u16, f32); void entry(J3DModelData* data) { entry(data, getFrame()); } + J3DAnmTransform* getBckAnm() { return mpAnm; } private: - /* 0x14 */ u32 mBckAnm; - /* 0x18 */ u32 mAnm; + /* 0x14 */ J3DAnmTransform* mpAnm; + /* 0x18 */ J3DMtxCalc* mpMtxCalc; }; // Size: 0x1C STATIC_ASSERT(sizeof(mDoExt_bckAnm) == 0x1C); @@ -122,17 +131,22 @@ public: param_6); } + int remove(J3DModelData* data) { return data->removeTexNoAnimator(mpAnm); } + private: /* 0x14 */ J3DAnmTexPattern* mpAnm; }; -class J3DTransformInfo; - -class mDoExt_McaMorfCallBack1_c { +class mDoExt_blkAnm : public mDoExt_baseAnm { public: - virtual void execute(u16, J3DTransformInfo*) = 0; + /* 8000DA08 */ void init(J3DDeformData*, J3DAnmCluster*, int, int, f32, s16, s16); + +private: + /* 0x14 */ J3DAnmCluster* mpAnm; }; +class J3DTransformInfo; + class mDoExt_AnmRatioPack { public: /* 80140DF0 */ ~mDoExt_AnmRatioPack(); @@ -169,8 +183,18 @@ public: /* 0x4 */ mDoExt_invJntPacket* field_0x4; }; -class mDoExt_morf_c - : public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> { +class mDoExt_zelAnime : public Z2SoundObjAnime {}; + +class mDoExt_McaMorfCallBack1_c { +public: + virtual void execute(u16, J3DTransformInfo*) = 0; +}; + +class mDoExt_McaMorfCallBack2_c {}; + +class mDoExt_morf_c { +// : public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> +// inheritance causing issues, fix later public: /* 8000F950 */ mDoExt_morf_c(); /* 8000FB7C */ void setMorf(f32); @@ -178,12 +202,103 @@ public: /* 8000FAE8 */ virtual ~mDoExt_morf_c(); -private: - /* 0x04 */ u32 field_0x4; - /* 0x08 */ u32 mAnm; + /* 0x04 */ J3DModel* mpModel; + /* 0x08 */ J3DAnmTransform* mpAnm; /* 0x0C */ J3DFrameCtrl mFrameCtrl; - /* 0x20 */ u32 field_0x20; - /* 0x24 */ u32 field_0x24; + /* 0x20 */ J3DTransformInfo** mpTransformInfo; + /* 0x24 */ Quaternion* mpQuat; + /* 0x28 */ f32 mCurMorf; + /* 0x2C */ f32 mPrevMorf; + /* 0x30 */ f32 mMorfStep; + /* 0x34 */ f32 field_0x34; +}; + +class mDoExt_McaMorfSO : public mDoExt_morf_c { +public: + /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, + int, Z2Creature*, u32, u32); + /* 800108F0 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, + Z2Creature*, u32, u32); + /* 80010E70 */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32); + /* 800110B0 */ void play(u32, s8); + /* 80011154 */ void updateDL(); + /* 800111C0 */ void entryDL(); + /* 800111EC */ void modelCalc(); + /* 80011250 */ void getTransform(u16, J3DTransformInfo*); + /* 80011310 */ void stopZelAnime(); + + /* 80010888 */ virtual ~mDoExt_McaMorfSO(); + /* 80010B68 */ virtual void calc(); + + J3DModel* getModel() { return mpModel; } + void offMorfNone() { mMorfNone = false; } + void onMorfNone() { mMorfNone = true; } + +private: + /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; + /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; + /* 0x40 */ cXyz mTranslateScale; + /* 0x4C */ Z2Creature* mpSound; + /* 0x50 */ void* mpBas; + /* 0x54 */ bool mTranslate; + /* 0x55 */ bool mMorfNone; +}; + +class mDoExt_McaMorf : public mDoExt_morf_c { +public: + /* 8000FC4C */ mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, + int, void*, u32, u32); + /* 8000FD94 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, + int, void*, u32, u32); + /* 8001037C */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*); + /* 800105C8 */ void play(Vec*, u32, s8); + /* 80010680 */ void entryDL(); + /* 800106AC */ void modelCalc(); + /* 80010710 */ void getTransform(u16, J3DTransformInfo*); + + /* 8000FD10 */ virtual ~mDoExt_McaMorf(); + /* 80010074 */ virtual void calc(); + +private: + /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; + /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; + /* 0x40 */ cXyz mTranslateScale; + /* 0x4C */ mDoExt_zelAnime* mpSound; + /* 0x50 */ bool field_0x50; + /* 0x51 */ bool field_0x51; + /* 0x52 */ bool field_0x52; +}; + +class mDoExt_McaMorf2 : public mDoExt_morf_c { +public: + /* 80011348 */ mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, + int, f32, int, int, Z2Creature*, u32, u32); + /* 80011464 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, + mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int, + f32, int, int, Z2Creature*, u32, u32); + /* 800116B4 */ void ERROR_EXIT(); + /* 80011D70 */ void setAnm(J3DAnmTransform*, J3DAnmTransform*, f32, int, f32, f32, f32, f32); + /* 80011FCC */ void setAnmRate(f32); + /* 800120A0 */ void play(u32, s8); + /* 80012144 */ void entryDL(); + /* 80012170 */ void modelCalc(); + /* 800121E8 */ void stopZelAnime(); + + /* 800113FC */ virtual ~mDoExt_McaMorf2(); + /* 800116F4 */ virtual void calc(); + +private: + /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; + /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; + /* 0x40 */ J3DAnmTransform* field_0x40; + /* 0x44 */ f32 field_0x44; + /* 0x48 */ Z2Creature* mpSound; + /* 0x4C */ void* mpBas; }; class mDoExt_MtxCalcOldFrame { @@ -204,6 +319,55 @@ private: /* 0x20 */ Quaternion* mOldFrameQuaternion; }; // Size: 0x24 +struct mDoExt_MtxCalcAnmBlendTblOld { + /* 8000F4B0 */ void calc(); + /* 80014EB0 */ ~mDoExt_MtxCalcAnmBlendTblOld(); +}; + +struct mDoExt_MtxCalcAnmBlendTbl { + /* 8000F26C */ void calc(); + /* 800D00BC */ void getAnm(int); + /* 80014F3C */ ~mDoExt_MtxCalcAnmBlendTbl(); +}; + +struct mDoExt_3Dline_c { + /* 800123D0 */ void init(u16, int, int); + /* 800126BC */ mDoExt_3Dline_c(); +}; + +struct mDoExt_3DlineMat_c {}; + +class mDoExt_3DlineMatSortPacket : public J3DPacket { +public: + mDoExt_3DlineMatSortPacket(); + + /* 80014738 */ void setMat(mDoExt_3DlineMat_c*); + virtual void draw(); + virtual ~mDoExt_3DlineMatSortPacket(); + +private: + /* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat; +}; + +class dKy_tevstr_c; +struct mDoExt_3DlineMat1_c { + /* 80013360 */ void init(u16, u16, ResTIMG*, int); + /* 800134F8 */ void setMaterial(); + /* 800135D0 */ void draw(); + /* 80013FB0 */ void update(int, _GXColor&, dKy_tevstr_c*); + /* 8001373C */ void update(int, f32, _GXColor&, u16, dKy_tevstr_c*); + /* 80014E7C */ bool getMaterialID(); +}; + +struct mDoExt_3DlineMat0_c { + /* 800125E0 */ void init(u16, u16, int); + /* 800126C0 */ void setMaterial(); + /* 80012774 */ void draw(); + /* 80012874 */ void update(int, f32, _GXColor&, u16, dKy_tevstr_c*); + /* 80012E3C */ void update(int, _GXColor&, dKy_tevstr_c*); + /* 80014E84 */ bool getMaterialID(); +}; + JKRSolidHeap* mDoExt_createSolidHeapFromGame(u32, u32); void mDoExt_destroySolidHeap(JKRSolidHeap*); u32 mDoExt_adjustSolidHeap(JKRSolidHeap*); diff --git a/include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h b/include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h index a704a18d3d..6290f2f895 100644 --- a/include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h +++ b/include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h @@ -3,4 +3,66 @@ #include "dolphin/types.h" +struct cXyz; +struct fopAc_ac_c; +struct J3DJoint; +struct J3DModel; + +struct daNPC_TK_c { + /* 80B01498 */ void setBck(int, u8, f32, f32); + /* 80B0153C */ void checkBck(int); + /* 80B01598 */ void draw(); + /* 80B016D4 */ void checkBeforeBg(); + /* 80B01878 */ void setActionMode(int); + /* 80B018F4 */ void setAddCalcSpeedXZ(cXyz&, cXyz const&, f32, f32, f32); + /* 80B01C84 */ void chaseTargetPos(cXyz, f32, f32, s16); + /* 80B01D84 */ void getMasterPointer(); + /* 80B01DA0 */ void setMasterShoulder(cXyz*); + /* 80B01E48 */ void setAwayAction(int); + /* 80B01EF4 */ void setFlySE(); + /* 80B02254 */ void executeFly(); + /* 80B026F8 */ void initPerchDemo(int); + /* 80B02B5C */ void executePerchDemo(int); + /* 80B03658 */ void executePerch(); + /* 80B03754 */ void executeHandOn(); + /* 80B039A8 */ void checkWaterSurface(f32); + /* 80B03A70 */ void executeAttack(); + /* 80B048BC */ void executeAway(); + /* 80B04BF8 */ void setCarryActorMtx(); + /* 80B04F64 */ void getTakePosY(); + /* 80B04FA8 */ void getTakeOffPosY(); + /* 80B04FEC */ void executeBack(); + /* 80B05BD0 */ void getHanjoHandPos(); + /* 80B05C7C */ void executeStayHanjo(); + /* 80B05EC8 */ void executeAttackLink(); + /* 80B0686C */ void executeBackHanjo(); + /* 80B07114 */ void checkAttackDemo(); + /* 80B072CC */ void executeAttackDemo(); + /* 80B07610 */ void executeBackHanjoDemo(); + /* 80B08168 */ void executeWolfEvent(); + /* 80B08208 */ void calcWolfDemoCam(); + /* 80B082A4 */ void calcWolfDemoCam2(); + /* 80B0839C */ void executeWolfPerch(); + /* 80B09A3C */ void executeResistanceDemo(); + /* 80B0A444 */ void setHawkSideCamera(cXyz); + /* 80B0A500 */ void setHawkCamera(fopAc_ac_c*); + /* 80B0A568 */ void endHawkCamera(); + /* 80B0A614 */ void calcDemoCamera(); + /* 80B0B004 */ void checkActionSet(); + /* 80B0B284 */ void action(); + /* 80B0B5CC */ void mtx_set(); + /* 80B0B6DC */ void cc_set(); + /* 80B0B7CC */ void execute(); + /* 80B0B918 */ void _delete(); + /* 80B0B9AC */ void ctrlJoint(J3DJoint*, J3DModel*); + /* 80B0BB7C */ void JointCallBack(J3DJoint*, int); + /* 80B0BBC8 */ void CreateHeap(); + /* 80B0BD24 */ void create(); + + void setBump() { mBump |= 4; } + + u8 field_0x0[0x6BE]; + u16 mBump; +}; + #endif /* D_A_NPC_TK_H */ |
