From 36e62e0b80225b6ef6cbe6a7322397899d3a0ffd Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 28 May 2022 03:49:55 -0700 Subject: [PATCH] npcT / JUTGamePad work --- .../JUTGamePad/read__10JUTGamePadFv.s | 4 +- .../JUTGamePad/update__10JUTGamePadFv.s | 4 +- .../d_kankyo/dKy_undwater_filter_draw__Fv.s | 4 +- include/JSystem/J3DGraphAnimator/J3DJoint.h | 13 +- .../J3DGraphAnimator/J3DMaterialAttach.h | 8 +- include/JSystem/J3DGraphAnimator/J3DModel.h | 1 + .../JSystem/J3DGraphAnimator/J3DModelData.h | 4 + include/JSystem/JSupport/JSUList.h | 2 - include/JSystem/JUtility/JUTGamePad.h | 110 ++- include/MSL_C/math.h | 4 + include/SSystem/SComponent/c_cc_d.h | 1 + include/SSystem/SComponent/c_m3d_g_cyl.h | 2 +- include/Z2AudioLib/Z2EnvSeMgr.h | 6 + include/d/a/d_a_npc.h | 72 +- include/d/cc/d_cc_d.h | 3 + include/d/com/d_com_inf_game.h | 2 + include/d/d_drawlist.h | 13 - include/d/kankyo/d_kankyo.h | 5 +- include/f_op/f_op_actor_mng.h | 4 + include/m_Do/m_Do_ext.h | 206 +++++- include/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h | 62 ++ .../J3DGraphAnimator/J3DMaterialAttach.cpp | 8 +- libs/JSystem/JUtility/JUTGamePad.cpp | 700 ++++++++++-------- rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.cpp | 52 -- src/d/a/d_a_alink.cpp | 8 - src/d/a/d_a_npc.cpp | 643 +++++++++------- src/d/bg/d_bg_w_kcol.cpp | 4 - src/d/com/d_com_inf_game.cpp | 2 +- src/d/d_attention.cpp | 14 - src/d/d_drawlist.cpp | 4 - src/d/d_lib.cpp | 4 - src/d/d_timer.cpp | 8 - src/d/event/d_event.cpp | 8 - src/d/event/d_event_data.cpp | 13 - src/d/event/d_event_manager.cpp | 16 - src/d/kankyo/d_kankyo.cpp | 92 +-- src/d/menu/d_menu_collect.cpp | 10 - src/d/menu/d_menu_dmap.cpp | 15 - src/d/menu/d_menu_fmap.cpp | 10 - src/d/menu/d_menu_insect.cpp | 10 - src/d/menu/d_menu_letter.cpp | 10 - src/d/menu/d_menu_option.cpp | 12 - src/d/menu/d_menu_ring.cpp | 14 - src/d/menu/d_menu_save.cpp | 15 - src/d/menu/d_menu_skill.cpp | 10 - src/d/meter/d_meter2_draw.cpp | 13 - src/d/msg/d_msg_class.cpp | 15 - src/d/msg/d_msg_object.cpp | 21 - src/d/particle/d_particle.cpp | 4 - src/f_op/f_op_msg_mng.cpp | 8 - src/m_Do/m_Do_ext.cpp | 157 +--- src/m_Do/m_Do_graphic.cpp | 4 - 52 files changed, 1245 insertions(+), 1189 deletions(-) diff --git a/asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s b/asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s index 33bdaa60b4..94e4334ff4 100644 --- a/asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s +++ b/asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s @@ -4,8 +4,8 @@ lbl_802E08E4: /* 802E08EC 90 01 00 44 */ stw r0, 0x44(r1) /* 802E08F0 39 61 00 40 */ addi r11, r1, 0x40 /* 802E08F4 48 08 18 CD */ bl _savegpr_22 -/* 802E08F8 3C 60 80 43 */ lis r3, lit_525@ha /* 0x804343D8@ha */ -/* 802E08FC 3B E3 43 D8 */ addi r31, r3, lit_525@l /* 0x804343D8@l */ +/* 802E08F8 3C 60 80 43 */ lis r3, mPadList__10JUTGamePad-0xC@ha /* 0x804343D8@ha */ +/* 802E08FC 3B E3 43 D8 */ addi r31, r3, mPadList__10JUTGamePad-0xC@l /* 0x804343D8@l */ /* 802E0900 38 7F 00 18 */ addi r3, r31, 0x18 /* 802E0904 48 06 E5 9D */ bl PADRead /* 802E0908 90 6D 8F 60 */ stw r3, sRumbleSupported__10JUTGamePad(r13) diff --git a/asm/JSystem/JUtility/JUTGamePad/update__10JUTGamePadFv.s b/asm/JSystem/JUtility/JUTGamePad/update__10JUTGamePadFv.s index 63fee90829..fa3c1044be 100644 --- a/asm/JSystem/JUtility/JUTGamePad/update__10JUTGamePadFv.s +++ b/asm/JSystem/JUtility/JUTGamePad/update__10JUTGamePadFv.s @@ -5,8 +5,8 @@ lbl_802E0CD8: /* 802E0CE4 39 61 00 20 */ addi r11, r1, 0x20 /* 802E0CE8 48 08 14 F1 */ bl _savegpr_28 /* 802E0CEC 7C 7E 1B 78 */ mr r30, r3 -/* 802E0CF0 3C 60 80 43 */ lis r3, lit_525@ha /* 0x804343D8@ha */ -/* 802E0CF4 38 63 43 D8 */ addi r3, r3, lit_525@l /* 0x804343D8@l */ +/* 802E0CF0 3C 60 80 43 */ lis r3, mPadList__10JUTGamePad-0xC@ha /* 0x804343D8@ha */ +/* 802E0CF4 38 63 43 D8 */ addi r3, r3, mPadList__10JUTGamePad-0xC@l /* 0x804343D8@l */ /* 802E0CF8 A8 9E 00 7C */ lha r4, 0x7c(r30) /* 802E0CFC 2C 04 FF FF */ cmpwi r4, -1 /* 802E0D00 41 82 02 8C */ beq lbl_802E0F8C diff --git a/asm/d/kankyo/d_kankyo/dKy_undwater_filter_draw__Fv.s b/asm/d/kankyo/d_kankyo/dKy_undwater_filter_draw__Fv.s index c71b851158..b3ef3c746a 100644 --- a/asm/d/kankyo/d_kankyo/dKy_undwater_filter_draw__Fv.s +++ b/asm/d/kankyo/d_kankyo/dKy_undwater_filter_draw__Fv.s @@ -4,8 +4,8 @@ lbl_801A572C: /* 801A5734 90 01 00 34 */ stw r0, 0x34(r1) /* 801A5738 39 61 00 30 */ addi r11, r1, 0x30 /* 801A573C 48 1B CA 9D */ bl _savegpr_28 -/* 801A5740 3C 60 80 43 */ lis r3, lit_4112@ha /* 0x8042CA48@ha */ -/* 801A5744 3B E3 CA 48 */ addi r31, r3, lit_4112@l /* 0x8042CA48@l */ +/* 801A5740 3C 60 80 43 */ lis r3, g_env_light-0xC@ha /* 0x8042CA48@ha */ +/* 801A5744 3B E3 CA 48 */ addi r31, r3, g_env_light-0xC@l /* 0x8042CA48@l */ /* 801A5748 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ /* 801A574C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ /* 801A5750 83 A3 5D 74 */ lwz r29, 0x5d74(r3) 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 -class J3DMtxCalcNoAnm : public J3DMtxCalcNoAnmBase, public A, public B {}; +template +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 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 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 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 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 sPatternList; - static u8 sPatternList[12]; - void checkCallback(int unk0, u32 unk2); + static JSUList sPatternList; + void checkCallback(int port, u32 timer); - 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; + 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 { +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 +// 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 */ diff --git a/libs/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp b/libs/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp index 6638ede6c7..f7332ea6bf 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DMaterialAttach.cpp @@ -114,7 +114,7 @@ bool J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* pAnmColor) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) { +asm int J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor.s" } @@ -126,7 +126,7 @@ asm bool J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DMaterialTable::removeTexNoAnimator(J3DAnmTexPattern* param_0) { +asm int J3DMaterialTable::removeTexNoAnimator(J3DAnmTexPattern* param_0) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern.s" } @@ -137,7 +137,7 @@ asm void J3DMaterialTable::removeTexNoAnimator(J3DAnmTexPattern* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DMaterialTable::removeTexMtxAnimator(J3DAnmTextureSRTKey* param_0) { +asm int J3DMaterialTable::removeTexMtxAnimator(J3DAnmTextureSRTKey* param_0) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey.s" } @@ -148,7 +148,7 @@ asm void J3DMaterialTable::removeTexMtxAnimator(J3DAnmTextureSRTKey* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DMaterialTable::removeTevRegAnimator(J3DAnmTevRegKey* param_0) { +asm int J3DMaterialTable::removeTevRegAnimator(J3DAnmTevRegKey* param_0) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey.s" } diff --git a/libs/JSystem/JUtility/JUTGamePad.cpp b/libs/JSystem/JUtility/JUTGamePad.cpp index f3cfb0302c..a92a50544d 100644 --- a/libs/JSystem/JUtility/JUTGamePad.cpp +++ b/libs/JSystem/JUtility/JUTGamePad.cpp @@ -6,10 +6,7 @@ #include "JSystem/JUtility/JUTGamePad.h" #include "dol2asm.h" #include "dolphin/types.h" - -// can't type mPadList correctly because of __sinit -// remove this once __sinit is decompiled -#define mPadListHack (*(JSUList*)&mPadList) +#include "MSL_C/math.h" // // Forward References: @@ -90,7 +87,7 @@ extern "C" void __dt__10JSUPtrListFv(); extern "C" void initiate__10JSUPtrListFv(); extern "C" void append__10JSUPtrListFP10JSUPtrLink(); extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void OSGetResetSwitchState(); +extern "C" s32 OSGetResetSwitchState(); extern "C" void __register_global_object(); extern "C" void __construct_array(); extern "C" void _savegpr_22(); @@ -101,8 +98,6 @@ extern "C" void _restgpr_22(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void atan2(); -extern "C" extern u32 __float_nan; // // Declarations: @@ -120,69 +115,52 @@ SECTION_DATA PADMask JUTGamePad::CRumble::sChannelMask[4] = { /* 803CC600-803CC610 029720 0010+00 2/2 0/0 0/0 .data channel_mask */ SECTION_DATA static u32 channel_mask[4] = {0x80000000, 0x40000000, 0x20000000, 0x10000000}; -/* 803CC610-803CC620 029730 000C+04 2/2 0/0 0/0 .data __vt__10JUTGamePad */ -SECTION_DATA extern void* __vt__10JUTGamePad[3 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10JUTGamePadFv, - /* padding */ - NULL, -}; - -/* 804343D8-804343E4 0610F8 000C+00 3/3 0/0 0/0 .bss @525 */ -static u8 lit_525[12]; - /* 804343E4-804343F0 061104 000C+00 4/6 0/0 0/0 .bss mPadList__10JUTGamePad */ -u8 JUTGamePad::mPadList[12]; +JSUList JUTGamePad::mPadList(false); /* 804514D0-804514D4 0009D0 0004+00 1/1 0/0 0/0 .sbss None */ -static bool data_804514D0; +bool JUTGamePad::mListInitialized; /* 804514D4-804514D8 0009D4 0004+00 3/3 0/0 0/0 .sbss mPadAssign__10JUTGamePad */ u8 JUTGamePad::mPadAssign[4]; /* 802E06DC-802E07B0 2DB01C 00D4+00 0/0 4/4 0/0 .text __ct__10JUTGamePadFQ210JUTGamePad8EPadPort */ -#ifdef NONMATCHING -// TODO(erin): probably ~easy to do, i just didn't do it yet :) -JUTGamePad::JUTGamePad(EPadPort port) : ptr_link(this) { - this->buttons.clear(); - this->control_stick.clear(); - this->c_stick.clear(); - this->rumble.clear(); +JUTGamePad::JUTGamePad(EPadPort port) : mRumble(this), mLink(this) { + mPortNum = port; + if (mPortNum >= 0) { + mPadAssign[port]++; + } + + initList(); + mPadList.append(&mLink); + update(); + mPadRecord = 0; + mPadReplay = 0; + clear(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTGamePad::JUTGamePad(JUTGamePad::EPadPort param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/__ct__10JUTGamePadFQ210JUTGamePad8EPadPort.s" -} -#pragma pop -#endif /* 802E07B0-802E085C 2DB0F0 00AC+00 1/0 2/2 0/0 .text __dt__10JUTGamePadFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTGamePad::~JUTGamePad() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/__dt__10JUTGamePadFv.s" +JUTGamePad::~JUTGamePad() { + if (mPortNum >= 0) { + mPadAssign[mPortNum]--; + mPortNum = -1; + } + + mPadList.remove(&mLink); } -#pragma pop /* 802E085C-802E0898 2DB19C 003C+00 1/1 0/0 0/0 .text initList__10JUTGamePadFv */ void JUTGamePad::initList() { - if (/* mIsPadListInitialized */ data_804514D0 == false) { - mPadListHack.initiate(); - data_804514D0 = true; + if (!mListInitialized) { + mPadList.initiate(); + mListInitialized = true; } } /* ############################################################################################## */ /* 804514D8-804514DC 0009D8 0004+00 2/2 0/0 0/0 .sbss sSuppressPadReset__10JUTGamePad */ -u8 JUTGamePad::sSuppressPadReset[4]; +u32 JUTGamePad::sSuppressPadReset; /* 804514DC-804514E0 0009DC 0004+00 1/1 1/1 0/0 .sbss sAnalogMode__10JUTGamePad */ s32 JUTGamePad::sAnalogMode; @@ -190,9 +168,7 @@ s32 JUTGamePad::sAnalogMode; /* 802E0898-802E08D0 2DB1D8 0038+00 0/0 1/1 0/0 .text init__10JUTGamePadFv */ s32 JUTGamePad::init() { PADSetSpec(5); - sAnalogMode = 3; - PADSetAnalogMode(3); - + setAnalogMode(3); return PADInit(); } @@ -207,22 +183,22 @@ void JUTGamePad::clear() { PADStatus JUTGamePad::mPadStatus[4]; /* 80434420-804344E0 061140 00C0+00 1/4 0/0 0/0 .bss mPadButton__10JUTGamePad */ -u8 JUTGamePad::mPadButton[192]; +JUTGamePad::CButton JUTGamePad::mPadButton[4]; /* 804344E0-80434520 061200 0040+00 0/3 0/0 0/0 .bss mPadMStick__10JUTGamePad */ #pragma push #pragma force_active on -u8 JUTGamePad::mPadMStick[64]; +JUTGamePad::CStick JUTGamePad::mPadMStick[4]; #pragma pop /* 80434520-80434560 061240 0040+00 0/3 0/0 0/0 .bss mPadSStick__10JUTGamePad */ #pragma push #pragma force_active on -u8 JUTGamePad::mPadSStick[64]; +JUTGamePad::CStick JUTGamePad::mPadSStick[4]; #pragma pop /* 804508D8-804508DC 000358 0004+00 1/1 0/0 0/0 .sdata sStickMode__10JUTGamePad */ -SECTION_SDATA u32 JUTGamePad::sStickMode = 0x00000001; +SECTION_SDATA JUTGamePad::EStickMode JUTGamePad::sStickMode = STICK_MODE_1; /* 804508DC-804508E0 00035C 0004+00 2/2 0/0 0/0 .sdata sClampMode__10JUTGamePad */ SECTION_SDATA u32 JUTGamePad::sClampMode = 0x00000001; @@ -231,47 +207,96 @@ SECTION_SDATA u32 JUTGamePad::sClampMode = 0x00000001; u32 JUTGamePad::sRumbleSupported; /* 802E08E4-802E0BBC 2DB224 02D8+00 0/0 2/2 0/0 .text read__10JUTGamePadFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::read() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s" -} -#pragma pop +#ifdef NONMATCHING +u32 JUTGamePad::read() { + sRumbleSupported = PADRead(mPadStatus); -/* 802E0BBC-802E0C6C 2DB4FC 00B0+00 1/1 0/0 0/0 .text assign__10JUTGamePadFv */ -#if 0 -// matches if all static variables have their proper type -void JUTGamePad::assign() { - s32 iVar3 = 0; + switch (sClampMode) { + case 1: + PADClamp(mPadStatus); + break; + case 2: + PADClampCircle(mPadStatus); + break; + } - for (s32 i = 4; i > 0; i--) { - if ((/* mPadStatus */ lbl_804343F0[iVar3].error == 0) && - (/* *puVar2 */ lbl_804514D4[iVar3] == 0)) { - mPortNum = iVar3; - /* JUTGamePad::mPadAssign[iVar3] */ /* *puVar2 */ lbl_804514D4[iVar3] = 1; - /* JUTGamePad::mPadButton */ lbl_80434420[iVar3].setRepeat( - this->buttons.field_0x24, this->buttons.field_0x28, this->buttons.field_0x2c); - this->rumble.clear(this); + u32 mask = 0; + for (int i = 0; i < 4; i++) { + u32 mask_tmp = 0x80000000 >> i; + if (mPadStatus[i].error == 0) { + u32 m_stick = mPadMStick[i].update(mPadStatus[i].stick_x, mPadStatus[i].stick_y, sStickMode, WS_MAIN_STICK, mPadButton[i].mButton) << 0x18; + u32 s_stick = mPadSStick[i].update(mPadStatus[i].substick_x, mPadStatus[i].substick_y, sStickMode, WS_SUB_STICK, mPadButton[i].mButton) << 0x10; + u32 tmp = m_stick | s_stick; + mPadButton[i].update(&mPadStatus[i], tmp); + } else if (mPadStatus[i].error == -1) { + u32 m_stick = mPadMStick[i].update(0, 0, sStickMode, WS_MAIN_STICK, 0); + u32 s_stick = mPadSStick[i].update(0, 0, sStickMode, WS_SUB_STICK, 0); + mPadButton[i].update(NULL, 0); - return; + if (!(sSuppressPadReset & mask_tmp)) { + mask |= mask_tmp; + } + } else { + mPadButton[i].mTrigger = 0; + mPadButton[i].mRelease = 0; + mPadButton[i].mRepeat = 0; + } + } + + JSUListIterator pad(mPadList.getFirst()); + for (; pad != mPadList.getEnd(); pad++) { + if (pad->getPadReplay() && pad->getPadReplay()->mActive) { + PADStatus status; + pad->getPadReplay()->unk1(&status); + u32 m_stick = pad->mMainStick.update(status.stick_x, status.stick_y, sStickMode, WS_MAIN_STICK, pad->mButton.mButton) << 0x18; + u32 s_stick = pad->mSubStick.update(status.substick_x, status.substick_y, sStickMode, WS_SUB_STICK, pad->mButton.mButton) << 0x10; + pad->mButton.update(&status, m_stick | s_stick); + } else { + if (pad->mPortNum == -1) { + pad->assign(); + } + pad->update(); } - iVar3++; + if (pad->getPadRecord() && pad->getPadRecord()->mActive) { + s32 portNum = pad->mPortNum; + if (portNum >= 0 && mPadStatus[portNum].error == 0) { + pad->getPadRecord()->unk2(); + } + } } + + if (mask != 0) { + PADReset((PADMask)mask); + } + + checkResetSwitch(); + return sRumbleSupported; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JUTGamePad::assign() { +asm u32 JUTGamePad::read() { nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/assign__10JUTGamePadFv.s" +#include "asm/JSystem/JUtility/JUTGamePad/read__10JUTGamePadFv.s" } #pragma pop #endif +/* 802E0BBC-802E0C6C 2DB4FC 00B0+00 1/1 0/0 0/0 .text assign__10JUTGamePadFv */ +void JUTGamePad::assign() { + for (int i = 0; i < 4; i++) { + if (mPadStatus[i].error == 0 && mPadAssign[i] == 0) { + mPortNum = i; + mPadAssign[i] = 1; + mPadButton[i].setRepeat(mButton.field_0x24, mButton.field_0x28, mButton.field_0x2c); + mRumble.clear(this); + return; + } + } +} + /* ############################################################################################## */ /* 804514E4-804514E8 0009E4 0004+00 5/5 0/0 0/0 .sbss mStatus__Q210JUTGamePad7CRumble */ bool JUTGamePad::CRumble::mStatus[4]; @@ -287,7 +312,7 @@ callbackFn JUTGamePad::C3ButtonReset::sCallback; void* JUTGamePad::C3ButtonReset::sCallbackArg; /* 804514F8-80451500 0009F8 0008+00 2/2 0/0 0/0 .sbss sThreshold__Q210JUTGamePad13C3ButtonReset */ -OSTime JUTGamePad::C3ButtonReset::sThreshold; +OSTime JUTGamePad::C3ButtonReset::sThreshold = (OSTime)((OS_BUS_CLOCK / 4) / 60) * 30; /* 80451500-80451504 -00001 0004+00 3/3 6/6 0/0 .sbss None */ /* 80451500 0001+00 data_80451500 None */ @@ -301,27 +326,22 @@ s32 JUTGamePad::C3ButtonReset::sResetOccurredPort; /* 802E0C6C-802E0CD8 2DB5AC 006C+00 1/1 1/1 0/0 .text checkResetCallback__10JUTGamePadFx */ -void JUTGamePad::checkResetCallback(OSTime unk) { - if (unk < JUTGamePad::C3ButtonReset::sThreshold) +void JUTGamePad::checkResetCallback(OSTime holdTime) { + if (holdTime < JUTGamePad::C3ButtonReset::sThreshold) { return; + } struct_80451501 = true; JUTGamePad::C3ButtonReset::sResetOccurredPort = mPortNum; + if (JUTGamePad::C3ButtonReset::sCallback != NULL) { JUTGamePad::C3ButtonReset::sCallback(mPortNum, JUTGamePad::C3ButtonReset::sCallbackArg); } } -/* ############################################################################################## */ -/* 80434560-8043456C 061280 000C+00 0/1 0/0 0/0 .bss @1373 */ -#pragma push -#pragma force_active on -static u8 lit_1373[12]; -#pragma pop - /* 8043456C-80434578 06128C 000C+00 1/2 0/0 0/0 .bss sPatternList__19JUTGamePadLongPress */ -u8 JUTGamePadLongPress::sPatternList[12]; +JSUList JUTGamePadLongPress::sPatternList(false); /* 804508E0-804508E4 000360 0004+00 1/1 0/0 0/0 .sdata sPressPoint__Q210JUTGamePad6CStick */ @@ -339,6 +359,51 @@ SECTION_SDATA u32 JUTGamePad::C3ButtonReset::sResetPattern = 0x00001600; SECTION_SDATA u32 JUTGamePad::C3ButtonReset::sResetMaskPattern = 0x0000FFFF; /* 802E0CD8-802E0FA4 2DB618 02CC+00 2/2 0/0 0/0 .text update__10JUTGamePadFv */ +#ifdef NONMATCHING +void JUTGamePad::update() { + if (mPortNum != -1) { + if (mPortNum >= 0 && mPortNum < 4) { + mButton = mPadButton[mPortNum]; + mMainStick = mPadMStick[mPortNum]; + mSubStick = mPadSStick[mPortNum]; + mErrorStatus = mPadStatus[mPortNum].error; + } + + if (field_0xa8 == 0 || (mButton.mButton & C3ButtonReset::sResetMaskPattern) != C3ButtonReset::sResetPattern) { + mButtonReset.mReset = false; + } else if (!struct_80451501) { + if (mButtonReset.mReset == true) { + checkResetCallback(OSGetTime() - mResetTime); + } else { + mButtonReset.mReset = true; + mResetTime = OSGetTime(); + } + } + + JSUListIterator pad(JUTGamePadLongPress::sPatternList.getFirst()); + for (; pad != JUTGamePadLongPress::sPatternList.getEnd(); pad++) { + if (pad->mValid) { + if (mPortNum >= 0 && mPortNum < 4) { + if ((mButton.mButton & pad->getMaskPattern()) == pad->getPattern()) { + if (pad->field_0x20[mPortNum] == true) { + pad->checkCallback(mPortNum, OSGetTime() - pad->mTimer[mPortNum]); + } else { + pad->field_0x20[mPortNum] = true; + pad->mTimer[mPortNum] = OSGetTime(); + } + } else { + pad->field_0x20[mPortNum] = false; + } + } + } + } + + if (mPortNum >= 0 && mPortNum < 4) { + mRumble.update(mPortNum); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -347,164 +412,225 @@ asm void JUTGamePad::update() { #include "asm/JSystem/JUtility/JUTGamePad/update__10JUTGamePadFv.s" } #pragma pop +#endif /* 802E0FA4-802E1024 2DB8E4 0080+00 1/1 0/0 0/0 .text checkResetSwitch__10JUTGamePadFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::checkResetSwitch() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/checkResetSwitch__10JUTGamePadFv.s" +void JUTGamePad::checkResetSwitch() { + if (!struct_80451501) { + if (OSGetResetSwitchState()) { + struct_80451500 = true; + } else { + if (struct_80451500 == true) { + struct_80451501 = true; + C3ButtonReset::sResetOccurredPort = -1; + + if (C3ButtonReset::sCallback != NULL) { + C3ButtonReset::sCallback(-1, C3ButtonReset::sCallbackArg); + } + } + struct_80451500 = false; + } + } } -#pragma pop /* 802E1024-802E1050 2DB964 002C+00 0/0 1/1 0/0 .text clearForReset__10JUTGamePadFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::clearForReset() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/clearForReset__10JUTGamePadFv.s" +void JUTGamePad::clearForReset() { + CRumble::setEnabled(0); + recalibrate(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT); } -#pragma pop /* 802E1050-802E108C 2DB990 003C+00 2/2 0/0 0/0 .text clear__Q210JUTGamePad7CButtonFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CButton::clear() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/clear__Q210JUTGamePad7CButtonFv.s" +void JUTGamePad::CButton::clear() { + mButton = 0; + mTrigger = 0; + mRelease = 0; + mRepeat = 0; + mAnalogA = 0; + mAnalogB = 0; + mAnalogL = 0; + mAnalogR = 0; + field_0x1c = 0; + field_0x20 = 0; + field_0x24 = 0; + field_0x28 = 0; + field_0x2c = 0; } -#pragma pop - -/* ############################################################################################## */ -/* 80456018-80456020 004618 0004+04 1/1 0/0 0/0 .sdata2 @1047 */ -SECTION_SDATA2 static f32 lit_1047[1 + 1 /* padding */] = { - 150.0f, - /* padding */ - 0.0f, -}; - -/* 80456020-80456028 004620 0008+00 2/2 0/0 0/0 .sdata2 @1050 */ -SECTION_SDATA2 static f64 lit_1050 = 4503601774854144.0 /* cast s32 to float */; /* 802E108C-802E121C 2DB9CC 0190+00 1/1 0/0 0/0 .text * update__Q210JUTGamePad7CButtonFPC9PADStatusUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 JUTGamePad::CButton::update(PADStatus const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/update__Q210JUTGamePad7CButtonFPC9PADStatusUl.s" -} -#pragma pop +void JUTGamePad::CButton::update(PADStatus const* padStatus, u32 stickStatus) { + u32 buttons; + if (padStatus != NULL) { + buttons = padStatus->button; + } else { + buttons = 0; + } + + buttons = stickStatus | buttons; + mRepeat = 0; + + if (field_0x28 != 0 && field_0x24 != 0) { + u32 repeatButton = buttons & field_0x24; + mRepeat = 0; + + if (repeatButton == 0) { + field_0x20 = 0; + field_0x1c = 0; + } else if (field_0x20 == repeatButton) { + field_0x1c++; + + if (field_0x1c == field_0x28 || (field_0x1c > field_0x28 && (field_0x1c - field_0x28) % field_0x2c == 0)) { + mRepeat = repeatButton; + } + } else { + mRepeat = repeatButton & (field_0x20 ^ 0xFFFFFFFF); + field_0x20 = repeatButton; + field_0x1c = 0; + } + } -/* ############################################################################################## */ -/* 80456028-80456030 004628 0004+04 2/2 0/0 0/0 .sdata2 @1056 */ -SECTION_SDATA2 static f32 lit_1056[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; + mTrigger = buttons & (buttons ^ mButton); + mRelease = mButton & (buttons ^ mButton); + mButton = buttons; + mRepeat |= (field_0x24 ^ 0xFFFFFFFF) & mTrigger; + + if (padStatus != NULL) { + mAnalogA = padStatus->analog_a; + mAnalogB = padStatus->analog_b; + mAnalogL = padStatus->trigger_left; + mAnalogR = padStatus->trigger_right; + } else { + mAnalogA = 0; + mAnalogB = 0; + mAnalogL = 0; + mAnalogR = 0; + } + + mAnalogLf = (s32)mAnalogL / 150.0f; + mAnalogRf = (s32)mAnalogR / 150.0f; +} /* 802E121C-802E1238 2DBB5C 001C+00 2/2 0/0 0/0 .text clear__Q210JUTGamePad6CStickFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CStick::clear() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/clear__Q210JUTGamePad6CStickFv.s" +void JUTGamePad::CStick::clear() { + mPosX = 0.0f; + mPosY = 0.0f; + mValue = 0.0f; + mAngle = 0; } -#pragma pop - -/* ############################################################################################## */ -/* 80456030-80456038 004630 0008+00 1/1 0/0 0/0 .sdata2 @1117 */ -SECTION_SDATA2 static f64 lit_1117 = 0.5; - -/* 80456038-80456040 004638 0008+00 1/1 0/0 0/0 .sdata2 @1118 */ -SECTION_SDATA2 static f64 lit_1118 = 3.0; - -/* 80456040-80456048 004640 0008+00 1/1 0/0 0/0 .sdata2 @1119 */ -SECTION_SDATA2 static u8 lit_1119[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80456048-8045604C 004648 0004+00 1/1 0/0 0/0 .sdata2 @1120 */ -SECTION_SDATA2 static f32 lit_1120 = 1.0f; - -/* 8045604C-80456050 00464C 0004+00 1/1 0/0 0/0 .sdata2 @1121 */ -SECTION_SDATA2 static f32 lit_1121 = 10430.37890625f; /* 802E1238-802E1500 2DBB78 02C8+00 1/1 0/0 0/0 .text * update__Q210JUTGamePad6CStickFScScQ210JUTGamePad10EStickModeQ210JUTGamePad11EWhichStickUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 JUTGamePad::CStick::update(s8 param_0, s8 param_1, JUTGamePad::EStickMode param_2, - JUTGamePad::EWhichStick param_3, u32 param_4) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/func_802E1238.s" +u32 JUTGamePad::CStick::update(s8 x_val, s8 y_val, JUTGamePad::EStickMode mode, + JUTGamePad::EWhichStick stick, u32 buttons) { + s32 clamp; + switch (sClampMode) { + case 1: + clamp = stick == WS_MAIN_STICK ? 54 : 42; + break; + case 2: + clamp = stick == WS_MAIN_STICK ? 38 : 29; + break; + default: + clamp = stick == WS_MAIN_STICK ? 69 : 57; + break; + } + + field_0xe = x_val; + field_0xf = y_val; + mPosX = (f32)x_val / (f32)clamp; + mPosY = (f32)y_val / (f32)clamp; + mValue = sqrtf((mPosX * mPosX) + (mPosY * mPosY)); + + if (mValue > 1.0f) { + if (mode == STICK_MODE_1) { + mPosX /= mValue; + mPosY /= mValue; + } + mValue = 1.0f; + } + + if (mValue > 0.0f) { + if (mPosY == 0.0f) { + if (mPosX > 0.0f) { + mAngle = 0x4000; + } else { + mAngle = -0x4000; + } + } else { + mAngle = 10430.379f * atan2f(mPosX, -mPosY); + } + } + + u32 buttonType = stick == WS_MAIN_STICK ? 0x18 : 0x10; + return getButton(buttons >> buttonType); } -#pragma pop /* 802E1500-802E15B4 2DBE40 00B4+00 1/1 0/0 0/0 .text getButton__Q210JUTGamePad6CStickFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 JUTGamePad::CStick::getButton(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/getButton__Q210JUTGamePad6CStickFUl.s" +u32 JUTGamePad::CStick::getButton(u32 buttons) { + u32 button = buttons & 0xF; + + if (-sReleasePoint < mPosX && mPosX < sReleasePoint) { + button = button & 0xFFFFFFFC; + } else if (mPosX <= -sPressPoint) { + button = (button & 0xFFFFFFFD) | 1; + } else if (mPosX >= sPressPoint) { + button = (button & 0xFFFFFFFE) | 2; + } + + if (-sReleasePoint < mPosY && mPosY < sReleasePoint) { + button = button & 0xFFFFFFF3; + } else if (mPosY <= -sPressPoint) { + button = (button & 0xFFFFFFF7) | 4; + } else if (mPosY >= sPressPoint) { + button = (button & 0xFFFFFFFB) | 8; + } + + return button; } -#pragma pop /* 802E15B4-802E15D8 2DBEF4 0024+00 1/1 0/0 0/0 .text clear__Q210JUTGamePad7CRumbleFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::clear() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/clear__Q210JUTGamePad7CRumbleFv.s" +void JUTGamePad::CRumble::clear() { + field_0x0 = 0; + field_0x4 = 0; + field_0x8 = 0; + field_0xc = 0; + field_0x10 = 0; + mEnabled = (PADMask)(PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT); } -#pragma pop /* 802E15D8-802E1634 2DBF18 005C+00 2/2 0/0 0/0 .text clear__Q210JUTGamePad7CRumbleFP10JUTGamePad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::clear(JUTGamePad* param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/clear__Q210JUTGamePad7CRumbleFP10JUTGamePad.s" +void JUTGamePad::CRumble::clear(JUTGamePad* pad) { + if (pad->getPortNum() >= 0 && pad->getPortNum() < 4) { + mStatus[pad->getPortNum()] = false; + pad->stopMotorHard(); + } + clear(); } -#pragma pop /* 802E1634-802E168C 2DBF74 0058+00 1/1 0/0 0/0 .text startMotor__Q210JUTGamePad7CRumbleFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::startMotor(int param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/startMotor__Q210JUTGamePad7CRumbleFi.s" +void JUTGamePad::CRumble::startMotor(int portNo) { + if (isEnabledPort(portNo)) { + PADControlMotor(portNo, 1); + mStatus[portNo] = true; + } } -#pragma pop /* 802E168C-802E16F8 2DBFCC 006C+00 4/4 3/3 0/0 .text stopMotor__Q210JUTGamePad7CRumbleFib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::stopMotor(int param_0, bool param_1) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/stopMotor__Q210JUTGamePad7CRumbleFib.s" +void JUTGamePad::CRumble::stopMotor(int portNo, bool stop) { + if (isEnabledPort(portNo)) { + u8 command = stop ? 2 : 0; + PADControlMotor(portNo, command); + mStatus[portNo] = false; + } } -#pragma pop /* 802E16F8-802E1720 2DC038 0028+00 1/1 0/0 0/0 .text getNumBit__FPUci */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void getNumBit(u8* param_0, int param_1) { +static asm u8 getNumBit(u8* param_0, int param_1) { nofralloc #include "asm/JSystem/JUtility/JUTGamePad/getNumBit__FPUci.s" } @@ -522,14 +648,12 @@ asm void JUTGamePad::CRumble::update(s16 param_0) { /* 802E18A4-802E18CC 2DC1E4 0028+00 1/1 0/0 0/0 .text * triggerPatternedRumble__Q210JUTGamePad7CRumbleFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::triggerPatternedRumble(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/triggerPatternedRumble__Q210JUTGamePad7CRumbleFUl.s" +void JUTGamePad::CRumble::triggerPatternedRumble(u32 param_0) { + if (field_0x8 != NULL && field_0xc != 0) { + field_0x4 = param_0; + field_0x0 = 0; + } } -#pragma pop /* 802E18CC-802E1948 2DC20C 007C+00 0/0 2/2 0/0 .text * startPatternedRumble__Q210JUTGamePad7CRumbleFPvQ310JUTGamePad7CRumble7ERumbleUl */ @@ -546,14 +670,10 @@ asm void JUTGamePad::CRumble::startPatternedRumble(void* param_0, /* 802E1948-802E1978 2DC288 0030+00 1/1 3/3 0/0 .text * stopPatternedRumble__Q210JUTGamePad7CRumbleFs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::stopPatternedRumble(s16 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/stopPatternedRumble__Q210JUTGamePad7CRumbleFs.s" +void JUTGamePad::CRumble::stopPatternedRumble(s16 port) { + field_0x4 = 0; + stopMotor(port, true); } -#pragma pop /* 802E1978-802E199C 2DC2B8 0024+00 0/0 1/1 0/0 .text * stopPatternedRumbleAtThePeriod__Q210JUTGamePad7CRumbleFv */ @@ -567,106 +687,64 @@ asm void JUTGamePad::CRumble::stopPatternedRumbleAtThePeriod() { #pragma pop /* 802E199C-802E19D8 2DC2DC 003C+00 1/1 1/1 0/0 .text getGamePad__10JUTGamePadFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTGamePad* JUTGamePad::getGamePad(int param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/getGamePad__10JUTGamePadFi.s" +JUTGamePad* JUTGamePad::getGamePad(int padNo) { + JSUListIterator pad(mPadList.getFirst()); + + for (; pad != mPadList.getEnd(); pad++) { + if (padNo == pad->mPortNum) { + return pad.getObject(); + } + } + + return NULL; } -#pragma pop /* 802E19D8-802E1A7C 2DC318 00A4+00 1/1 1/1 0/0 .text setEnabled__Q210JUTGamePad7CRumbleFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CRumble::setEnabled(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/setEnabled__Q210JUTGamePad7CRumbleFUl.s" +void JUTGamePad::CRumble::setEnabled(u32 mask) { + for (int i = 0; i < 4; i++) { + if ((mEnabled & channel_mask[i]) == 0) { + if (mStatus[i]) { + stopMotor(i, false); + } + + JUTGamePad* pad = getGamePad(i); + if (pad != NULL) { + pad->mRumble.stopPatternedRumble(pad->mPortNum); + } + } + } + mEnabled = (PADMask)(mask & (PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); } -#pragma pop /* 802E1A7C-802E1A98 2DC3BC 001C+00 1/1 0/0 0/0 .text setRepeat__Q210JUTGamePad7CButtonFUlUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePad::CButton::setRepeat(u32 param_0, u32 param_1, u32 param_2) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/setRepeat__Q210JUTGamePad7CButtonFUlUlUl.s" +void JUTGamePad::CButton::setRepeat(u32 param_0, u32 param_1, u32 param_2) { + field_0x20 = 0; + field_0x1c = 0; + field_0x24 = param_0; + field_0x28 = param_1; + field_0x2c = param_2; } -#pragma pop /* 802E1A98-802E1AFC 2DC3D8 0064+00 1/1 0/0 0/0 .text recalibrate__10JUTGamePadFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool JUTGamePad::recalibrate(u32 param_0) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/recalibrate__10JUTGamePadFUl.s" +bool JUTGamePad::recalibrate(u32 mask) { + for (int i = 0; i < 4; i++) { + if (sSuppressPadReset & channel_mask[i]) { + mask &= channel_mask[i] ^ 0xFFFFFFFF; + } + } + + return PADRecalibrate((PADMask)mask); } -#pragma pop + /* 802E1AFC-802E1B60 2DC43C 0064+00 1/1 0/0 0/0 .text checkCallback__19JUTGamePadLongPressFiUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JUTGamePadLongPress::checkCallback(int param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/checkCallback__19JUTGamePadLongPressFiUl.s" -} -#pragma pop +void JUTGamePadLongPress::checkCallback(int port, u32 timer) { + if (port >= 0 && timer >= field_0x1c) { + field_0x11 = true; + field_0x48[port] = true; -/* 802E1B60-802E1C54 2DC4A0 00F4+00 0/0 1/0 0/0 .text __sinit_JUTGamePad_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_JUTGamePad_cpp() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/__sinit_JUTGamePad_cpp.s" + if (mCallback != NULL) { + mCallback(port, this, field_0x50); + } + } } -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x802E1B60, __sinit_JUTGamePad_cpp); -#pragma pop - -/* 802E1C54-802E1CA8 2DC594 0054+00 1/1 0/0 0/0 .text __dt__30JSUList<19JUTGamePadLongPress>Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802E1C54(void* _this) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/func_802E1C54.s" -} -#pragma pop - -/* 802E1CA8-802E1CD8 2DC5E8 0030+00 1/1 0/0 0/0 .text __ct__Q210JUTGamePad6CStickFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTGamePad::CStick::CStick() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/__ct__Q210JUTGamePad6CStickFv.s" -} -#pragma pop - -/* 802E1CD8-802E1D08 2DC618 0030+00 1/1 0/0 0/0 .text __ct__Q210JUTGamePad7CButtonFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JUTGamePad::CButton::CButton() { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/__ct__Q210JUTGamePad7CButtonFv.s" -} -#pragma pop - -/* 802E1D08-802E1D5C 2DC648 0054+00 1/1 0/0 0/0 .text __dt__21JSUList<10JUTGamePad>Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802E1D08(void* _this) { - nofralloc -#include "asm/JSystem/JUtility/JUTGamePad/func_802E1D08.s" -} -#pragma pop diff --git a/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.cpp b/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.cpp index ee8706c31d..bc52e23aa1 100644 --- a/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.cpp +++ b/rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.cpp @@ -76,58 +76,6 @@ struct J3DModel {}; struct J3DJoint {}; -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(); -}; - struct daNPC_TK_HIO_c { /* 80B0140C */ daNPC_TK_HIO_c(); /* 80B0C104 */ ~daNPC_TK_HIO_c(); diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index 1625dd2140..cf4975757c 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -27,14 +27,6 @@ // Types: // -struct mDoExt_blkAnm { - /* 8000DA08 */ void init(J3DDeformData*, J3DAnmCluster*, int, int, f32, s16, s16); -}; - -struct mDoExt_MtxCalcAnmBlendTbl { - /* 800D00BC */ void getAnm(int); -}; - struct fopEn_enemy_c {}; struct daTagMist_c { diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp index 589f0076cd..5a1f3575e8 100644 --- a/src/d/a/d_a_npc.cpp +++ b/src/d/a/d_a_npc.cpp @@ -6,30 +6,14 @@ #include "d/a/d_a_npc.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "m_Do/m_Do_mtx.h" +#include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h" +#include "d/d_procname.h" // // Types: // -struct mDoMtx_stack_c { - /* 8000CD64 */ void transS(cXyz const&); - /* 8000CD9C */ void transM(f32, f32, f32); - /* 8000CE70 */ void scaleM(cXyz const&); - /* 8000CE9C */ void XYZrotS(csXyz const&); - /* 8000CED4 */ void XYZrotM(csXyz const&); - /* 8000CF0C */ void ZXYrotS(csXyz const&); - /* 8000CF44 */ void ZXYrotM(csXyz const&); - - static u8 now[48]; -}; - -struct mDoExt_McaMorfSO { - /* 80010E70 */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32); - /* 800110B0 */ void play(u32, s8); - /* 800111C0 */ void entryDL(); - /* 800111EC */ void modelCalc(); -}; - struct daNpcT_Hermite_c { /* 8014CBAC */ ~daNpcT_Hermite_c(); }; @@ -289,10 +273,6 @@ struct dMsgObject_c { /* 802383A4 */ void isMouthCheck(); }; -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // @@ -873,7 +853,7 @@ extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; +extern "C" extern dScnKy_env_light_c g_env_light; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 Zero__5csXyz[4]; @@ -884,46 +864,32 @@ extern "C" extern u8 data_80451164[4]; // /* 801456D4-801456E0 140014 000C+00 1/1 0/0 159/159 .text initialize__18daNpcT_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_ActorMngr_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__18daNpcT_ActorMngr_cFv.s" +void daNpcT_ActorMngr_c::initialize() { + mActorID = -1; } -#pragma pop /* 801456E0-801456FC 140020 001C+00 1/1 0/0 160/160 .text * entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_ActorMngr_c::entry(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c.s" +void daNpcT_ActorMngr_c::entry(fopAc_ac_c* actor) { + mActorID = fopAcM_GetID(actor); } -#pragma pop /* 801456FC-80145708 14003C 000C+00 1/1 0/0 382/382 .text remove__18daNpcT_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_ActorMngr_c::remove() { - nofralloc -#include "asm/d/a/d_a_npc/remove__18daNpcT_ActorMngr_cFv.s" +void daNpcT_ActorMngr_c::remove() { + mActorID = -1; } -#pragma pop /* 80145708-80145764 140048 005C+00 2/2 1/1 233/233 .text getActorP__18daNpcT_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_ActorMngr_c::getActorP() { - nofralloc -#include "asm/d/a/d_a_npc/getActorP__18daNpcT_ActorMngr_cFv.s" +fopAc_ac_c* daNpcT_ActorMngr_c::getActorP() { + fopAc_ac_c* actor = NULL; + + if (fopAcM_SearchByID(mActorID, &actor) == 1 && actor != NULL && fopAcM_IsActor(actor)) { + return actor; + } + + return NULL; } -#pragma pop /* ############################################################################################## */ /* 804533D8-804533DC 0019D8 0004+00 54/54 0/0 0/0 .sdata2 @4116 */ @@ -968,35 +934,66 @@ SECTION_SDATA2 static f32 lit_4148 = -1.0f; /* 80145898-801458C0 1401D8 0028+00 4/4 0/0 533/533 .text initialize__22daNpcT_MotionSeqMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_MotionSeqMngr_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__22daNpcT_MotionSeqMngr_cFv.s" +void daNpcT_MotionSeqMngr_c::initialize() { + mNo = 0; + mOffset = 0; + mStepNo = 0; + field_0x14 = -1; + field_0x18 = lit_4148; + mEndSequence = false; } -#pragma pop /* 801458C0-80145A24 140200 0164+00 2/2 0/0 2/2 .text play__22daNpcT_MotionSeqMngr_cFUsPiPf */ +// matches with literals +#ifdef NONMATCHING +int daNpcT_MotionSeqMngr_c::play(u16 param_0, int* param_1, f32* param_2) { + int ret = 0; + + if (field_0x14 == mStepNo && mStepNo < field_0x4) { + if ((&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0 != -1) { + s8 tmp = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x3; + + if (tmp > 0 && tmp <= param_0) { + mStepNo++; + } else if (tmp == 0 && param_0 != 0) { + mEndSequence = true; + } + } + } + + if (field_0x14 != mStepNo && mStepNo < field_0x4) { + if ((&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0 != -1) { + *param_1 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0; + *param_2 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x2; + + if (field_0x14 == -1 && -1.0f < field_0x18) { + *param_2 = field_0x18; + } + ret = 1; + } else { + mEndSequence = true; + } + } + + field_0x14 = mStepNo; + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_MotionSeqMngr_c::play(u16 param_0, int* param_1, f32* param_2) { +asm int daNpcT_MotionSeqMngr_c::play(u16 param_0, int* param_1, f32* param_2) { nofralloc #include "asm/d/a/d_a_npc/play__22daNpcT_MotionSeqMngr_cFUsPiPf.s" } #pragma pop +#endif /* 80145A24-80145A38 140364 0014+00 0/0 0/0 43/43 .text * checkEndSequence__22daNpcT_MotionSeqMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_MotionSeqMngr_c::checkEndSequence() { - nofralloc -#include "asm/d/a/d_a_npc/checkEndSequence__22daNpcT_MotionSeqMngr_cFv.s" +s32 daNpcT_MotionSeqMngr_c::checkEndSequence() { + return mEndSequence == true; } -#pragma pop /* 80145A38-80145A78 140378 0040+00 2/2 0/0 0/0 .text daNpcT_addIdx__FiiRUsi */ #pragma push @@ -1512,14 +1509,10 @@ static asm void daNpcT_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 p /* 80146C98-80146CD8 1415D8 0040+00 0/0 0/0 121/121 .text initialize__15daNpcT_JntAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_JntAnm_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__15daNpcT_JntAnm_cFv.s" +void daNpcT_JntAnm_c::initialize() { + mActrMngr.initialize(); + memset(&field_0x14, 0, (u32)&field_0x158 - (u32)&field_0x14); } -#pragma pop /* ############################################################################################## */ /* 80453408-80453410 001A08 0008+00 8/8 0/0 0/0 .sdata2 @4723 */ @@ -1631,225 +1624,356 @@ asm void daNpcT_c::tgHitCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fop /* ############################################################################################## */ /* 80425708-804257D0 052428 00C8+00 4/4 0/0 40/40 .bss mFindActorPtrs__8daNpcT_c */ -u8 daNpcT_c::mFindActorPtrs[200]; +fopAc_ac_c* daNpcT_c::mFindActorPtrs[50]; /* 80450FD8-80450FDC 0004D8 0002+02 4/4 0/0 2/2 .sbss mSrchName__8daNpcT_c */ -u8 daNpcT_c::mSrchName[2 + 2 /* padding */]; +s16 daNpcT_c::mSrchName; /* 80450FDC-80450FE0 0004DC 0004+00 4/4 0/0 42/42 .sbss mFindCount__8daNpcT_c */ -u8 daNpcT_c::mFindCount[4]; +s32 daNpcT_c::mFindCount; /* 80147FD4-80148058 142914 0084+00 3/3 0/0 2/2 .text srchActor__8daNpcT_cFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::srchActor(void* param_0, void* param_1) { - nofralloc -#include "asm/d/a/d_a_npc/srchActor__8daNpcT_cFPvPv.s" +int daNpcT_c::srchActor(void* actor, void* param_1) { + if (mFindCount < 50 && fopAcM_IsActor(actor) && actor != param_1) { + if (mSrchName == fopAcM_GetName((fopAc_ac_c*)actor)) { + mFindActorPtrs[mFindCount] = (fopAc_ac_c*)actor; + mFindCount++; + } + } + + return 0; } -#pragma pop /* 80148058-80148094 142998 003C+00 1/1 0/0 7/7 .text getTrnsfrmAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getTrnsfrmAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTrnsfrmAnmP__8daNpcT_cFPCci.s" +J3DAnmTransform* daNpcT_c::getTrnsfrmAnmP(char const* arcName, int fileIdx) { + return (J3DAnmTransform*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 80148094-801480D0 1429D4 003C+00 1/1 0/0 11/11 .text getTrnsfrmKeyAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getTrnsfrmKeyAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTrnsfrmKeyAnmP__8daNpcT_cFPCci.s" +J3DAnmTransformKey* daNpcT_c::getTrnsfrmKeyAnmP(char const* arcName, int fileIdx) { + return (J3DAnmTransformKey*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 801480D0-8014810C 142A10 003C+00 1/1 0/0 1/1 .text getTexPtrnAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getTexPtrnAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTexPtrnAnmP__8daNpcT_cFPCci.s" +J3DAnmTexPattern* daNpcT_c::getTexPtrnAnmP(char const* arcName, int fileIdx) { + return (J3DAnmTexPattern*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 8014810C-80148148 142A4C 003C+00 1/1 0/0 7/7 .text getTexSRTKeyAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getTexSRTKeyAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTexSRTKeyAnmP__8daNpcT_cFPCci.s" +J3DAnmTextureSRTKey* daNpcT_c::getTexSRTKeyAnmP(char const* arcName, int fileIdx) { + return (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 80148148-80148184 142A88 003C+00 0/0 0/0 9/9 .text getTevRegKeyAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getTevRegKeyAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTevRegKeyAnmP__8daNpcT_cFPCci.s" +J3DAnmTevRegKey* daNpcT_c::getTevRegKeyAnmP(char const* arcName, int fileIdx) { + return (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 80148184-801481C0 142AC4 003C+00 0/0 0/0 2/2 .text getColorAnmP__8daNpcT_cFPCci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::getColorAnmP(char const* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getColorAnmP__8daNpcT_cFPCci.s" +J3DAnmColor* daNpcT_c::getColorAnmP(char const* arcName, int fileIdx) { + return (J3DAnmColor*)dComIfG_getObjectRes(arcName, fileIdx); } -#pragma pop /* 801481C0-80148204 142B00 0044+00 1/1 0/0 0/0 .text setBckAnm__8daNpcT_cFP15J3DAnmTransformfiiib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setBckAnm(J3DAnmTransform* param_0, f32 param_1, int param_2, int param_3, - int param_4, bool param_5) { - nofralloc -#include "asm/d/a/d_a_npc/setBckAnm__8daNpcT_cFP15J3DAnmTransformfiiib.s" +void daNpcT_c::setBckAnm(J3DAnmTransform* bck, f32 rate, int attr, int startF, + int endF, bool modify) { + mBckAnm.init(bck, TRUE, attr, rate, startF, endF, modify); } -#pragma pop /* 80148204-801482F8 142B44 00F4+00 1/1 0/0 1/1 .text * setMcaMorfAnm__8daNpcT_cFP18J3DAnmTransformKeyffiii */ +// matches with literals +#ifdef NONMATCHING +int daNpcT_c::setMcaMorfAnm(J3DAnmTransformKey* bck, f32 morf, f32 frame, int mode, + int startF, int endF) { + f32 start = startF; + f32 end = endF; + + mMcaMorfAnm[0]->setAnm(bck, mode, frame, morf, start, end); + + if (mMcaMorfAnm[1] != NULL) { + mMcaMorfAnm[1]->setAnm(bck, mode, frame, morf, start, end); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f32 param_2, int param_3, +asm int daNpcT_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f32 param_2, int param_3, int param_4, int param_5) { nofralloc #include "asm/d/a/d_a_npc/setMcaMorfAnm__8daNpcT_cFP18J3DAnmTransformKeyffiii.s" } #pragma pop +#endif /* 801482F8-80148338 142C38 0040+00 1/1 0/0 1/1 .text * setBtpAnm__8daNpcT_cFP16J3DAnmTexPatternP12J3DModelDatafi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* param_1, f32 param_2, +void daNpcT_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* modelData, f32 param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/setBtpAnm__8daNpcT_cFP16J3DAnmTexPatternP12J3DModelDatafi.s" + mBtpAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1); } -#pragma pop /* 80148338-80148378 142C78 0040+00 1/1 0/0 6/6 .text * setBtkAnm__8daNpcT_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setBtkAnm(J3DAnmTextureSRTKey* param_0, J3DModelData* param_1, f32 param_2, +void daNpcT_c::setBtkAnm(J3DAnmTextureSRTKey* param_0, J3DModelData* modelData, f32 param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/setBtkAnm__8daNpcT_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi.s" + mBtkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1); } -#pragma pop /* 80148378-801483B8 142CB8 0040+00 0/0 0/0 9/9 .text * setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setBrkAnm(J3DAnmTevRegKey* param_0, J3DModelData* param_1, f32 param_2, +void daNpcT_c::setBrkAnm(J3DAnmTevRegKey* param_0, J3DModelData* modelData, f32 param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi.s" + mBrkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1); } -#pragma pop /* 801483B8-801483F8 142CF8 0040+00 0/0 0/0 2/2 .text * setBpkAnm__8daNpcT_cFP11J3DAnmColorP12J3DModelDatafi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setBpkAnm(J3DAnmColor* param_0, J3DModelData* param_1, f32 param_2, +void daNpcT_c::setBpkAnm(J3DAnmColor* param_0, J3DModelData* modelData, f32 param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/setBpkAnm__8daNpcT_cFP11J3DAnmColorP12J3DModelDatafi.s" + mBpkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1); } -#pragma pop /* 801483F8-801484AC 142D38 00B4+00 0/0 0/0 58/58 .text loadRes__8daNpcT_cFPCScPPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::loadRes(s8 const* param_0, char const** param_1) { - nofralloc -#include "asm/d/a/d_a_npc/loadRes__8daNpcT_cFPCScPPCc.s" +int daNpcT_c::loadRes(s8 const* resNoList, char const** resNameList) { + for (int resLoad_cnt = 0, i = 0; i < 10; i++) { + if (resNoList[i] == -1) { + if (i != resLoad_cnt) { + break; + } + return cPhs_COMPLEATE_e; + } + + int status = dComIfG_resLoad(&field_0x8e0[i], resNameList[resNoList[i]]); + if (status == cPhs_COMPLEATE_e) { + resLoad_cnt++; + } + + if (status == cPhs_ERROR_e || status == 3) { + return cPhs_ERROR_e; + } + } + + return cPhs_ZERO_e; } -#pragma pop /* 801484AC-8014852C 142DEC 0080+00 0/0 0/0 58/58 .text deleteRes__8daNpcT_cFPCScPPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::deleteRes(s8 const* param_0, char const** param_1) { - nofralloc -#include "asm/d/a/d_a_npc/deleteRes__8daNpcT_cFPCScPPCc.s" +void daNpcT_c::deleteRes(s8 const* resNoList, char const** resNameList) { + for (int i = 0; i < 10 && resNoList[i] != -1; i++) { + dComIfG_resDelete(&field_0x8e0[i], resNameList[resNoList[i]]); + } } -#pragma pop /* ############################################################################################## */ /* 80453440-80453444 001A40 0004+00 3/3 0/0 0/0 .sdata2 @5667 */ SECTION_SDATA2 static f32 lit_5667 = -1000000000.0f; +inline dEvt_control_c& dComIfGp_getEvent() { + return g_dComIfG_gameInfo.play.getEvent(); +} + +inline BOOL dComIfGp_event_runCheck() { + return g_dComIfG_gameInfo.play.getEvent().runCheck(); +} + /* 8014852C-8014886C 142E6C 0340+00 0/0 0/0 59/59 .text execute__8daNpcT_cFv */ +// matches with literals +#ifdef NONMATCHING +int daNpcT_c::execute() { + setParam(); + if (!evtProc()) { + action(); + } + + beforeMove(); + fopAcM_posMoveF(this, field_0x864.GetCCMoveP()); + field_0x68c.CrrPos(dComIfG_Bgsp()); + field_0x930 = field_0x68c.m_gnd; + field_0xdca = fopAcM_getPolygonAngle(field_0x930, mCurrent.mAngle.y); + field_0xdf4 = field_0x68c.GetGroundH(); + if (field_0xdf4 != -1000000000.0f) { + field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_gnd); + field_0xe24 = dComIfGp_getReverb(field_0x864.GetRoomId()); + + if (field_0x68c.ChkWaterHit() && field_0x68c.m_wtr.GetHeight() > field_0xdf4) { + field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_wtr); + } + } + + afterMoved(); + if (field_0xdf4 != -1000000000.0f) { + setEnvTevColor(); + setRoomNo(); + } + + if (field_0xb50.checkEntryNewMotion()) { + ctrlFaceMotion(); + ctrlSubFaceMotion(1); + } + + if (field_0xb74.checkEntryNewMotion()) { + ctrlMotion(); + } + + playAllAnm(); + ctrlFaceMotion(); + ctrlSubFaceMotion(0); + ctrlMotion(); + setAttnPos(); + cLib_chaseF(&field_0xdfc, 0.0f, 1.0f); + twilight(); + setCollision(); + + if (!field_0xe2c) { + if ((field_0xe33 && dComIfGp_getEvent().i_isOrderOK()) || !dComIfGp_event_runCheck()) { + evtOrder(); + } + } + + clrParam(); + decTmr(); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::execute() { +asm int daNpcT_c::execute() { nofralloc #include "asm/d/a/d_a_npc/execute__8daNpcT_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80453444-80453448 001A44 0004+00 3/3 0/0 0/0 .sdata2 @5794 */ SECTION_SDATA2 static f32 lit_5794 = 20.0f; /* 8014886C-80148C70 1431AC 0404+00 0/0 0/0 58/58 .text draw__8daNpcT_cFiifP11_GXColorS10fiii */ +// close. literals + few wrong areas +#ifdef NONMATCHING +int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32 param_4, + int param_5, int param_6, int param_7) { + J3DModel* model = mMcaMorfAnm[0]->getModel(); + J3DModelData* modelData = model->getModelData(); + field_0xe34 = 1; + + if (drawDbgInfo() || checkHide() || field_0xe2b) { + return 1; + } + + mTevStr.field_0x358 = 0; + mTevStr.field_0x35a = 0; + mTevStr.field_0x35c = 0; + mTevStr.field_0x35e = 0; + + if (color != NULL) { + mTevStr.field_0x358 = color->r; + mTevStr.field_0x35a = color->g; + mTevStr.field_0x35c = color->b; + mTevStr.field_0x35e = color->a; + } + + if (field_0xdb8 != 0 && mTimer != 0) { + f32 r = (f32)field_0xdb8 / (f32)mTimer; + if (!cM3d_IsZero(r)) { + mTevStr.field_0x358 = r * 20.0f; + } + } else if (param_0 != 0) { + mTevStr.field_0x35a = 20; + } + + if (field_0xd98 & 0x800) { + mBtpAnm.entry(modelData); + } + + if (field_0xd98 & 0x80) { + mBtkAnm.entry(modelData); + } + + if (field_0xd98 & 0x100) { + mBrkAnm.entry(modelData); + } + + if (field_0xd98 & 0x200) { + mBpkAnm.entry(modelData); + } + + if (param_1 != 0) { + fopAcM_setEffectMtx(this, modelData); + } + + if (param_5 != 0) { + drawGhost(); + } else if (field_0xa89 != 0) { + g_env_light.settingTevStruct(4, &mCurrent.mPosition, &mTevStr); + g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr); + dComIfGd_setListDark(); + mMcaMorfAnm[0]->entryDL(); + dComIfGd_setList(); + } else { + g_env_light.settingTevStruct(0, &mCurrent.mPosition, &mTevStr); + g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr); + mMcaMorfAnm[0]->entryDL(); + } + + if (field_0xd98 & 0x800) { + mBtpAnm.remove(modelData); + } + + if (field_0xd98 & 0x80) { + mBtkAnm.remove(modelData); + } + + if (field_0xd98 & 0x100) { + mBrkAnm.remove(modelData); + } + + if (field_0xd98 & 0x200) { + mBpkAnm.remove(modelData); + } + + if (param_6 == 0) { + if (param_7 == 0) { + field_0xd94 = dComIfGd_setShadow(field_0xd94, 1, model, &mCurrent.mPosition, param_2, param_4, mCurrent.mPosition.y, field_0xdf4, field_0x930, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } else { + dComIfGd_setSimpleShadow(&mCurrent.mPosition, field_0xdf4, param_4, field_0x930, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + } + + drawOtherMdl(); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3, f32 param_4, +asm int daNpcT_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3, f32 param_4, int param_5, int param_6, int param_7) { nofralloc #include "asm/d/a/d_a_npc/draw__8daNpcT_cFiifP11_GXColorS10fiii.s" } #pragma pop +#endif /* 80148C70-80148CCC 1435B0 005C+00 1/1 0/0 58/58 .text setEnvTevColor__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setEnvTevColor() { - nofralloc -#include "asm/d/a/d_a_npc/setEnvTevColor__8daNpcT_cFv.s" +void daNpcT_c::setEnvTevColor() { + mTevStr.field_0x381 = dComIfG_Bgsp().GetPolyColor(field_0x930); + mTevStr.field_0x380 = dComIfG_Bgsp().GetRoomId(field_0x930); } -#pragma pop /* 80148CCC-80148D10 14360C 0044+00 1/1 0/0 58/58 .text setRoomNo__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setRoomNo() { - nofralloc -#include "asm/d/a/d_a_npc/setRoomNo__8daNpcT_cFv.s" +void daNpcT_c::setRoomNo() { + int roomId = dComIfG_Bgsp().GetRoomId(field_0x930); + + fopAcM_SetRoomNo(this, roomId); + field_0x864.SetRoomId(roomId); } -#pragma pop /* 80148D10-80148DD0 143650 00C0+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFf */ #pragma push @@ -1892,14 +2016,28 @@ asm void daNpcT_c::ctrlBtk() { #pragma pop /* 80149190-8014924C 143AD0 00BC+00 0/0 0/0 57/57 .text setMtx__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setMtx() { - nofralloc -#include "asm/d/a/d_a_npc/setMtx__8daNpcT_cFv.s" +void daNpcT_c::setMtx() { + J3DModel* model = mMcaMorfAnm[0]->getModel(); + J3DModelData* modelData = model->getModelData(); + + mDoMtx_stack_c::transS(mCurrent.mPosition); + mDoMtx_stack_c::ZXYrotM(field_0xd78); + mDoMtx_stack_c::scaleM(mScale); + + model->i_setBaseTRMtx(mDoMtx_stack_c::get()); + model->setUserArea((u32)this); + + mMcaMorfAnm[0]->onMorfNone(); + if (cM3d_IsZero(field_0xdfc) != 0) { + mMcaMorfAnm[0]->offMorfNone(); + } + + if (field_0xd98 & 0x400) { + mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame()); + } + + mMcaMorfAnm[0]->modelCalc(); } -#pragma pop /* 8014924C-80149300 143B8C 00B4+00 1/1 0/0 0/0 .text ctrlFaceMotion__8daNpcT_cFv */ #pragma push @@ -1953,7 +2091,7 @@ SECTION_DEAD static char const* const stringBase_80392710 = "DEFAULT_GETITEM"; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::evtProc() { +asm int daNpcT_c::evtProc() { nofralloc #include "asm/d/a/d_a_npc/evtProc__8daNpcT_cFv.s" } @@ -1986,14 +2124,14 @@ bool daNpcT_c::checkCullDraw() { } /* 8014A064-8014A0B0 1449A4 004C+00 1/0 1/0 60/0 .text twilight__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::twilight() { - nofralloc -#include "asm/d/a/d_a_npc/twilight__8daNpcT_cFv.s" +void daNpcT_c::twilight() { + if (field_0xa89 != 0) { + mAttentionInfo.mFlags |= 0x400000; + field_0xe2b = 0; + mAttentionInfo.mFlags |= 0x800000; + setHitodamaPrtcl(); + } } -#pragma pop /* 8014A0B0-8014A224 1449F0 0174+00 1/0 1/0 59/0 .text evtOrder__8daNpcT_cFv */ #pragma push @@ -2016,14 +2154,12 @@ asm void daNpcT_c::evtChange() { #pragma pop /* 8014A324-8014A388 144C64 0064+00 1/0 1/0 60/0 .text clrParam__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::clrParam() { - nofralloc -#include "asm/d/a/d_a_npc/clrParam__8daNpcT_cFv.s" +void daNpcT_c::clrParam() { + field_0xd7e = field_0xd78; + mCutType = 0; + memset(&field_0xe30, 0, (u32)&field_0xe38 - (u32)&field_0xe30); + field_0xba8.clrDirectFlag(); } -#pragma pop /* 8014A388-8014A628 144CC8 02A0+00 1/1 0/0 57/57 .text setFaceMotionAnm__8daNpcT_cFib */ #pragma push @@ -2050,44 +2186,52 @@ asm void daNpcT_c::setMotionAnm(int param_0, f32 param_1, int param_2) { SECTION_SDATA2 static f32 lit_6667 = 300.0f; /* 8014A908-8014A99C 145248 0094+00 0/0 0/0 40/40 .text setPos__8daNpcT_cF4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setPos(cXyz param_0) { - nofralloc -#include "asm/d/a/d_a_npc/setPos__8daNpcT_cF4cXyz.s" +void daNpcT_c::setPos(cXyz i_pos) { + i_pos.y += 300.0f; + field_0x930.SetPos(&i_pos); + i_pos.y = dComIfG_Bgsp().GroundCross(&field_0x930); + + mCurrent.mPosition = i_pos; + mNext.mPosition = mCurrent.mPosition; } -#pragma pop /* 8014A99C-8014AA18 1452DC 007C+00 0/0 0/0 29/29 .text setAngle__8daNpcT_cF5csXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setAngle(csXyz param_0) { - nofralloc -#include "asm/d/a/d_a_npc/setAngle__8daNpcT_cF5csXyz.s" +void daNpcT_c::setAngle(csXyz i_angle) { + mCurrent.mAngle = i_angle; + mCollisionRot = mCurrent.mAngle; + field_0xd78 = mCurrent.mAngle; + field_0xd7e = field_0xd78; + mNext.mAngle = mCurrent.mAngle; } -#pragma pop /* 8014AA18-8014AA40 145358 0028+00 0/0 0/0 138/138 .text setAngle__8daNpcT_cFs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::setAngle(s16 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/setAngle__8daNpcT_cFs.s" +void daNpcT_c::setAngle(s16 i_angle) { + mCurrent.mAngle.y = i_angle; + mCollisionRot.y = mCurrent.mAngle.y; + field_0xd78.y = mCurrent.mAngle.y; + field_0xd7e.y = field_0xd78.y; + mNext.mAngle.y = mCurrent.mAngle.y; } -#pragma pop /* 8014AA40-8014AAD0 145380 0090+00 0/0 0/0 33/33 .text hitChk__8daNpcT_cFP12dCcD_GObjInfUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::hitChk(dCcD_GObjInf* param_0, u32 param_1) { - nofralloc -#include "asm/d/a/d_a_npc/hitChk__8daNpcT_cFP12dCcD_GObjInfUl.s" +fopAc_ac_c* daNpcT_c::hitChk(dCcD_GObjInf* i_objInf, u32 param_1) { + dCcD_Stts* stts = (dCcD_Stts*)i_objInf->GetStts(); + stts->Move(); + + if (mTimer == 0) { + fopAc_ac_c* hitAc = i_objInf->GetTgHitAc(); + + if (hitAc != NULL) { + if (fopAcM_GetName(hitAc) == PROC_NPC_TK && param_1 & 1) { + ((daNPC_TK_c*)hitAc)->setBump(); + return hitAc; + } + return hitAc; + } + } + + return NULL; } -#pragma pop /* 8014AAD0-8014ABD0 145410 0100+00 0/0 0/0 27/27 .text setDamage__8daNpcT_cFiii */ #pragma push @@ -2498,14 +2642,11 @@ asm daNpcT_Hermite_c::~daNpcT_Hermite_c() { #pragma pop /* 8014CBF4-8014CC0C 147534 0018+00 1/0 1/0 0/0 .text decTmr__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::decTmr() { - nofralloc -#include "asm/d/a/d_a_npc/decTmr__8daNpcT_cFv.s" +void daNpcT_c::decTmr() { + if (mTimer != 0) { + mTimer--; + } } -#pragma pop /* 8014CC0C-8014CC10 14754C 0004+00 1/0 1/0 0/0 .text setCollision__8daNpcT_cFv */ void daNpcT_c::setCollision() { @@ -2553,7 +2694,7 @@ void daNpcT_c::drawGhost() { } /* 8014CC30-8014CC38 147570 0008+00 1/0 1/0 0/0 .text drawDbgInfo__8daNpcT_cFv */ -bool daNpcT_c::drawDbgInfo() { +int daNpcT_c::drawDbgInfo() { return false; } diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp index 4332c70011..8b47c5a3a9 100644 --- a/src/d/bg/d_bg_w_kcol.cpp +++ b/src/d/bg/d_bg_w_kcol.cpp @@ -15,10 +15,6 @@ struct cM3dGTri { /* 8026F8C8 */ void set(Vec const*, Vec const*, Vec const*, Vec const*); }; -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index a559d27c22..bc98c495aa 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -2503,7 +2503,7 @@ int dComIfGs_wolfeye_effect_check() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dComIfGs_wolfeye_effect_check() { +asm int dComIfGs_wolfeye_effect_check() { nofralloc #include "asm/d/com/d_com_inf_game/dComIfGs_wolfeye_effect_check__Fv.s" } diff --git a/src/d/d_attention.cpp b/src/d/d_attention.cpp index e38167ef3e..a4d6949074 100644 --- a/src/d/d_attention.cpp +++ b/src/d/d_attention.cpp @@ -21,20 +21,6 @@ struct dAttDrawParam_c { /* 80073FC4 */ ~dAttDrawParam_c(); }; -struct Z2SeqMgr { - /* 802B5E88 */ void bgmNowBattle(f32); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 4833a9c046..6deebb62d9 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -88,10 +88,6 @@ struct ShdwDrawPoly_c { /* 80054A6C */ ~ShdwDrawPoly_c(); }; -struct JMath { - static u8 sincosTable_[65536]; -}; - struct J3DUClipper { /* 8027378C */ void calcViewFrustum(); /* 80273A44 */ void clip(f32 const (*)[4], Vec*, Vec*) const; diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index 882afebe9a..ad09b0485c 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -23,10 +23,6 @@ struct dEvt_control_c { struct JKRExpandSwitch {}; -struct JKRArchive { - /* 802D65A4 */ void findFsResource(char const*, u32) const; -}; - struct JKRAramArchive { /* 802D781C */ void getAramAddress(char const*); }; diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index 66f360b7ab..c45998a6a3 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -45,14 +45,6 @@ struct dDlst_TimerScrnDraw_c { /* 80261394 */ ~dDlst_TimerScrnDraw_c(); }; -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct J2DAnmLoaderDataBase { /* 80308A6C */ void load(void const*); }; diff --git a/src/d/event/d_event.cpp b/src/d/event/d_event.cpp index bd2455821b..fb0461a816 100644 --- a/src/d/event/d_event.cpp +++ b/src/d/event/d_event.cpp @@ -24,14 +24,6 @@ struct dCamera_c { /* 801614C4 */ void QuickStart(); }; -struct Z2StatusMgr { - /* 802B61E8 */ void setDemoName(char*); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/event/d_event_data.cpp b/src/d/event/d_event_data.cpp index e52bbfe19d..5b453acd40 100644 --- a/src/d/event/d_event_data.cpp +++ b/src/d/event/d_event_data.cpp @@ -25,19 +25,6 @@ struct dCamera_c { /* 80181170 */ void StartBlure(int, fopAc_ac_c*, f32, f32); }; -struct Z2SeqMgr { - /* 802AF408 */ void bgmStop(u32, s32); - /* 802AFE18 */ void bgmStreamPlay(); -}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/event/d_event_manager.cpp b/src/d/event/d_event_manager.cpp index e8e0db6958..ee0927975a 100644 --- a/src/d/event/d_event_manager.cpp +++ b/src/d/event/d_event_manager.cpp @@ -17,22 +17,6 @@ struct dCamera_c { /* 80181E98 */ void Center(); }; -struct Z2StatusMgr { - /* 802B61E8 */ void setDemoName(char*); -}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index 709ecb2717..21e0ab0ef0 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -755,12 +755,8 @@ static asm void dKy_pos2_get_angle(cXyz* param_0, cXyz* param_1, s16* param_2, s } #pragma pop -/* ############################################################################################## */ -/* 8042CA48-8042CA54 059768 000C+00 2/2 0/0 0/0 .bss @4112 */ -static u8 lit_4112[12]; - /* 8042CA54-8042DD64 059774 1310+00 116/118 128/128 649/649 .bss g_env_light */ -u8 g_env_light[4880]; +dScnKy_env_light_c g_env_light; /* 80453C28-80453C2C 002228 0004+00 1/1 0/0 0/0 .sdata2 @4441 */ SECTION_SDATA2 static f32 lit_4441 = 0.0054931640625f; @@ -1018,7 +1014,7 @@ static asm void dKy_eflight_influence_id(cXyz param_0, int param_1) { /* 8019E404-8019E430 198D44 002C+00 1/1 0/0 0/0 .text dKy_light_influence_col__Fi */ static GXColorS10 dKy_light_influence_col(int param_0) { - dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light); + dScnKy_env_light_c* env_light = &g_env_light; return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mColor; } @@ -1038,13 +1034,13 @@ asm void dKy_light_influence_col(_GXColor* param_0, f32 param_1) { /* 8019E520-8019E548 198E60 0028+00 1/1 0/0 0/0 .text dKy_light_influence_power__Fi */ static f32 dKy_light_influence_power(int param_0) { - dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light); + dScnKy_env_light_c* env_light = &g_env_light; return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mPow; } /* 8019E548-8019E570 198E88 0028+00 1/1 0/0 0/0 .text dKy_light_influence_yuragi__Fi */ static f32 dKy_light_influence_yuragi(int param_0) { - dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light); + dScnKy_env_light_c* env_light = &g_env_light; return env_light->mPointLight[param_0 >= 0 ? param_0 : 0]->mFluctuation; } @@ -1064,25 +1060,25 @@ SECTION_SDATA2 static f32 lit_5077 = 99999.8984375f; /* 8019E694-8019E708 198FD4 0074+00 2/2 0/0 0/0 .text plight_init__Fv */ static void plight_init() { - (*(dScnKy_env_light_c*)g_env_light).field_0x38[0].mPow = lit_5077; + g_env_light.field_0x38[0].mPow = lit_5077; for (int i = 0; i < 100; i++) { - (*(dScnKy_env_light_c*)g_env_light).mPointLight[i] = NULL; + g_env_light.mPointLight[i] = NULL; } for (int i = 0; i < 5; i++) { - (*(dScnKy_env_light_c*)g_env_light).mEfPLight[i] = NULL; - (*(dScnKy_env_light_c*)g_env_light).field_0x72c[i] = NULL; + g_env_light.mEfPLight[i] = NULL; + g_env_light.field_0x72c[i] = NULL; } - (*(dScnKy_env_light_c*)g_env_light).field_0x12a4 = -1; - (*(dScnKy_env_light_c*)g_env_light).field_0x12a8 = -1; + g_env_light.field_0x12a4 = -1; + g_env_light.field_0x12a8 = -1; } /* 8019E708-8019E734 199048 002C+00 1/1 0/0 0/0 .text darkmist_init__Fv */ static void darkmist_init() { for (int i = 0; i < 10; i++) { - (*(dScnKy_env_light_c*)g_env_light).mDalkmistInf[i] = NULL; + g_env_light.mDalkmistInf[i] = NULL; } } @@ -1152,25 +1148,25 @@ static asm void dungeonlight_init() { /* 8019EAA0-8019EBD0 1993E0 0130+00 1/1 0/0 0/0 .text undwater_init__Fv */ static void undwater_init() { J3DModelData* modelData2 = (J3DModelData*)dComIfG_getObjectRes("Always", 0x1D); - (*(dScnKy_env_light_c*)g_env_light).field_0xf38 = + g_env_light.field_0xf38 = mDoExt_createSolidHeapFromGameToCurrent(0x600, 0x20); - if ((*(dScnKy_env_light_c*)g_env_light).field_0xf38 != NULL) { - (*(dScnKy_env_light_c*)g_env_light).field_0xf30 = + if (g_env_light.field_0xf38 != NULL) { + g_env_light.field_0xf30 = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11020202); - if ((*(dScnKy_env_light_c*)g_env_light).field_0xf30 != NULL) { - (*(dScnKy_env_light_c*)g_env_light).field_0x105c = new mDoExt_btkAnm(); + if (g_env_light.field_0xf30 != NULL) { + g_env_light.field_0x105c = new mDoExt_btkAnm(); - if ((*(dScnKy_env_light_c*)g_env_light).field_0x105c != NULL) { + if (g_env_light.field_0x105c != NULL) { J3DAnmTextureSRTKey* key = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Always", 0x3C); - (*(dScnKy_env_light_c*)g_env_light) + g_env_light .field_0x105c->init(modelData2, key, 1, 2, lit_4505, 0, -1); } } mDoExt_restoreCurrentHeap(); - mDoExt_adjustSolidHeap((*(dScnKy_env_light_c*)g_env_light).field_0xf38); + mDoExt_adjustSolidHeap(g_env_light.field_0xf38); } } @@ -1182,7 +1178,7 @@ static void dKy_light_size_get(char const* stage) { if (!dKy_darkworld_check()) { for (int i = 0; i < 36; i++) { if (!strcmp(stage, lightTbl->stageName)) { - (*(dScnKy_env_light_c*)g_env_light).field_0x1309 = lightTbl->size; + g_env_light.field_0x1309 = lightTbl->size; return; } lightTbl++; @@ -1190,7 +1186,7 @@ static void dKy_light_size_get(char const* stage) { } else { for (int i = 0; i < 9; i++) { if (!strcmp(stage, lightTwTbl->stageName)) { - (*(dScnKy_env_light_c*)g_env_light).field_0x1309 = lightTwTbl->size; + g_env_light.field_0x1309 = lightTwTbl->size; return; } lightTwTbl++; @@ -1603,7 +1599,7 @@ void dScnKy_env_light_c::setDaytime() { mDoAud_setMinute(dKy_getdaytime_minute()); mDoAud_setWeekday(dKy_get_dayofweek()); dComIfGs_setDate(mDate); - (*(dScnKy_env_light_c*)g_env_light).field_0x12fb = 0; + g_env_light.field_0x12fb = 0; } #else #pragma push @@ -1704,7 +1700,7 @@ s32 dKy_daynight_check() { /* 8019FAF4-8019FB30 19A434 003C+00 0/0 0/0 22/22 .text dKy_getDarktime_hour__Fv */ s32 dKy_getDarktime_hour() { - return (*(dScnKy_env_light_c*)g_env_light).getDarkDaytime() / lit_5347; + return g_env_light.getDarkDaytime() / lit_5347; } /* 8019FB30-8019FBBC 19A470 008C+00 0/0 0/0 19/19 .text dKy_getDarktime_minute__Fv */ @@ -1719,7 +1715,7 @@ asm void dKy_getDarktime_minute() { /* 8019FBBC-8019FBCC 19A4FC 0010+00 0/0 0/0 8/8 .text dKy_getDarktime_week__Fv */ s32 dKy_getDarktime_week() { - return (*(dScnKy_env_light_c*)g_env_light).mDarktimeWeek; + return g_env_light.mDarktimeWeek; } /* 8019FBCC-8019FBD4 19A50C 0008+00 2/2 0/0 0/0 .text getDarkDaytime__18dScnKy_env_light_cFv */ @@ -1937,16 +1933,9 @@ asm void dScnKy_env_light_c::settingTevStruct_plightcol_plus(cXyz* param_0, dKy_ } #pragma pop -/* ############################################################################################## */ -/* 8042DD64-8042DD70 05AA84 000C+00 0/1 0/0 0/0 .bss @4113 */ -#pragma push -#pragma force_active on -static u8 lit_4113[12]; -#pragma pop - /* 8042DD70-8042E07C 05AA90 030C+00 1/2 8/8 9/9 .bss g_mEnvSeMgr */ -extern u8 g_mEnvSeMgr[780]; -u8 g_mEnvSeMgr[780]; +extern Z2EnvSeMgr g_mEnvSeMgr; +Z2EnvSeMgr g_mEnvSeMgr; /* 8042E07C-8042E7BC 05AD9C 0740+00 5/4 0/0 0/0 .bss lightStatusData */ static u8 lightStatusData[1856]; @@ -2148,7 +2137,7 @@ void dScnKy_env_light_c::drawKankyo() { setSunpos(); SetBaseLight(); setLight(); - dKy_setLight_nowroom((*(dScnKy_env_light_c*)g_env_light).mNowRoom); + dKy_setLight_nowroom(g_env_light.mNowRoom); } /* ############################################################################################## */ @@ -2370,13 +2359,13 @@ static cXyz dKy_light_influence_pos(int param_0) { param_0 = 0; } - dScnKy_env_light_c* env_light = ((dScnKy_env_light_c*)g_env_light); + dScnKy_env_light_c* env_light = &g_env_light; return env_light->mPointLight[param_0]->mPosition; } /* 801A7714-801A7738 1A2054 0024+00 0/0 1/1 0/0 .text dKy_plight_near_pos__Fv */ cXyz dKy_plight_near_pos() { - return (*(dScnKy_env_light_c*)g_env_light).mPLightNearPos; + return g_env_light.mPLightNearPos; } /* 801A7738-801A7790 1A2078 0058+00 0/0 0/0 1/1 .text @@ -3131,7 +3120,7 @@ asm void dKy_pol_efftype2_get(cBgS_PolyInfo const* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dKy_pol_sound_get(cBgS_PolyInfo const* param_0) { +asm u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0) { nofralloc #include "asm/d/kankyo/d_kankyo/dKy_pol_sound_get__FPC13cBgS_PolyInfo.s" } @@ -3491,17 +3480,17 @@ static asm void dKy_murky_set(J3DMaterial* param_0) { /* 801ACCDC-801ACCF4 1A761C 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_set__FUc */ void dKy_shadow_mode_set(u8 mode) { - (*(dScnKy_env_light_c*)g_env_light).mShadowMode |= mode; + g_env_light.mShadowMode |= mode; } /* 801ACCF4-801ACD0C 1A7634 0018+00 2/2 1/1 0/0 .text dKy_shadow_mode_reset__FUc */ void dKy_shadow_mode_reset(u8 mode) { - (*(dScnKy_env_light_c*)g_env_light).mShadowMode &= ~mode; + g_env_light.mShadowMode &= ~mode; } /* 801ACD0C-801ACD24 1A764C 0018+00 3/3 0/0 1/1 .text dKy_shadow_mode_check__FUc */ u8 dKy_shadow_mode_check(u8 mode) { - return (*(dScnKy_env_light_c*)g_env_light).mShadowMode & mode; + return g_env_light.mShadowMode & mode; } /* ############################################################################################## */ @@ -3621,21 +3610,6 @@ extern "C" asm void __dt__18dScnKy_env_light_cFv() { } #pragma pop -/* 801ADCA4-801ADD00 1A85E4 005C+00 0/0 1/0 0/0 .text __sinit_d_kankyo_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_kankyo_cpp() { - nofralloc -#include "asm/d/kankyo/d_kankyo/__sinit_d_kankyo_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x801ADCA4, __sinit_d_kankyo_cpp); -#pragma pop - /* ############################################################################################## */ /* 80451070-80451078 -00001 0008+00 0/0 1/1 0/0 .sbss None */ /* 80451070 0001+00 data_80451070 None */ diff --git a/src/d/menu/d_menu_collect.cpp b/src/d/menu/d_menu_collect.cpp index d79e83d118..e843e45287 100644 --- a/src/d/menu/d_menu_collect.cpp +++ b/src/d/menu/d_menu_collect.cpp @@ -117,16 +117,6 @@ struct dMenu_Fishing_c { /* 801C5470 */ void _close(); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct J3DTexNoAnm { /* 8003B1F8 */ ~J3DTexNoAnm(); /* 8003B240 */ J3DTexNoAnm(); diff --git a/src/d/menu/d_menu_dmap.cpp b/src/d/menu/d_menu_dmap.cpp index 29af0cfc34..361e6c7699 100644 --- a/src/d/menu/d_menu_dmap.cpp +++ b/src/d/menu/d_menu_dmap.cpp @@ -163,21 +163,6 @@ struct dMenuMapCommon_c { /* 801C443C */ void clearIconInfo(); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - struct J2DAnmLoaderDataBase { /* 80308A6C */ void load(void const*); }; diff --git a/src/d/menu/d_menu_fmap.cpp b/src/d/menu/d_menu_fmap.cpp index 4e63663e93..5cdec65eac 100644 --- a/src/d/menu/d_menu_fmap.cpp +++ b/src/d/menu/d_menu_fmap.cpp @@ -166,16 +166,6 @@ struct dMapInfo_n { /* 8003F02C */ void getMapRestartPos(); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct JKRAramArchive {}; // diff --git a/src/d/menu/d_menu_insect.cpp b/src/d/menu/d_menu_insect.cpp index 81282c73a5..b9b41b1b05 100644 --- a/src/d/menu/d_menu_insect.cpp +++ b/src/d/menu/d_menu_insect.cpp @@ -65,16 +65,6 @@ struct dMeter2Info_c { J2DPicture*, void*, J2DPicture*, int); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/menu/d_menu_letter.cpp b/src/d/menu/d_menu_letter.cpp index 33d406e774..0e6bbd1735 100644 --- a/src/d/menu/d_menu_letter.cpp +++ b/src/d/menu/d_menu_letter.cpp @@ -64,16 +64,6 @@ struct dMenu_Letter { static u8 letter_data[512]; }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/menu/d_menu_option.cpp b/src/d/menu/d_menu_option.cpp index f16ff8f134..4aaf5028dc 100644 --- a/src/d/menu/d_menu_option.cpp +++ b/src/d/menu/d_menu_option.cpp @@ -67,18 +67,6 @@ struct dComIfG_play_c { /* 8002B3B0 */ void getNowVibration(); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - /* 802CD888 */ void setOutputMode(u32); - - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct JUTGamePad { struct CRumble { struct ERumble {}; diff --git a/src/d/menu/d_menu_ring.cpp b/src/d/menu/d_menu_ring.cpp index 8bcd53e40c..fdab7a3d83 100644 --- a/src/d/menu/d_menu_ring.cpp +++ b/src/d/menu/d_menu_ring.cpp @@ -73,20 +73,6 @@ struct dItem_data { static void* item_resource[1530]; }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // diff --git a/src/d/menu/d_menu_save.cpp b/src/d/menu/d_menu_save.cpp index 2db66924ab..99d58569f3 100644 --- a/src/d/menu/d_menu_save.cpp +++ b/src/d/menu/d_menu_save.cpp @@ -99,21 +99,6 @@ struct dFile_info_c { /* 80192D60 */ void _draw(); }; -struct Z2SeqMgr { - /* 802B3EAC */ void checkBgmIDPlaying(u32); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct JFWDisplay { static u8 sManager[4]; }; diff --git a/src/d/menu/d_menu_skill.cpp b/src/d/menu/d_menu_skill.cpp index 0c92b021bc..4eb93188d5 100644 --- a/src/d/menu/d_menu_skill.cpp +++ b/src/d/menu/d_menu_skill.cpp @@ -42,16 +42,6 @@ struct dMeter2Info_c { /* 8021C544 */ void getStringKanji(u32, char*, JMSMesgEntry_c*); }; -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/meter/d_meter2_draw.cpp b/src/d/meter/d_meter2_draw.cpp index 4fe4ed13bf..1d870c06f7 100644 --- a/src/d/meter/d_meter2_draw.cpp +++ b/src/d/meter/d_meter2_draw.cpp @@ -12,19 +12,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/msg/d_msg_class.cpp b/src/d/msg/d_msg_class.cpp index fa67684d0c..5485ab9440 100644 --- a/src/d/msg/d_msg_class.cpp +++ b/src/d/msg/d_msg_class.cpp @@ -236,21 +236,6 @@ struct dMsgObject_c { /* 80238638 */ void getItemEquipButton(); }; -struct Z2SpeechMgr2 { - /* 802CBD88 */ void setString(u16 const*, s16, u8, u16); - /* 802CCA18 */ void playOneShotVoice(u8, u16, Vec*, s8); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - struct STControl { /* 80032044 */ STControl(s16, s16, s16, s16, f32, f32, s16, s16); /* 80032088 */ void setWaitParm(s16, s16, s16, s16, f32, f32, s16, s16); diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp index 53b349a53e..4363fcea84 100644 --- a/src/d/msg/d_msg_object.cpp +++ b/src/d/msg/d_msg_object.cpp @@ -90,27 +90,6 @@ struct dDemo_c { static u8 m_mesgControl[4]; }; -struct Z2StatusMgr { - /* 802B60CC */ void talkIn(); - /* 802B6104 */ void talkOut(); -}; - -struct Z2SpeechMgr2 { - /* 802CBF60 */ void setTextCount(s16); -}; - -struct Z2SeqMgr { - /* 802AFF8C */ void changeBgmStatus(s32); -}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - // // Forward References: // diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index b44228ba19..f2f0d51860 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -177,10 +177,6 @@ struct cBgS { /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; }; -struct JMath { - static u8 sincosTable_[65536]; -}; - struct J3DUClipper { /* 802738FC */ void clip(f32 const (*)[4], Vec, f32) const; }; diff --git a/src/f_op/f_op_msg_mng.cpp b/src/f_op/f_op_msg_mng.cpp index 3b92dad6cd..ff889b9ded 100644 --- a/src/f_op/f_op_msg_mng.cpp +++ b/src/f_op/f_op_msg_mng.cpp @@ -11,14 +11,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct JMath { - static u8 sincosTable_[65536]; -}; - // // Forward References: // diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 08ec75cdfc..5751726721 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -18,112 +18,8 @@ // Types: // -struct mDoExt_blkAnm { - /* 8000DA08 */ void init(J3DDeformData*, J3DAnmCluster*, int, int, f32, s16, s16); -}; - -struct mDoExt_MtxCalcAnmBlendTblOld { - /* 8000F4B0 */ void calc(); - /* 80014EB0 */ ~mDoExt_MtxCalcAnmBlendTblOld(); -}; - -struct mDoExt_MtxCalcAnmBlendTbl { - /* 8000F26C */ void calc(); - /* 80014F3C */ ~mDoExt_MtxCalcAnmBlendTbl(); -}; - -struct mDoExt_McaMorfCallBack2_c {}; - -struct Z2Creature { - /* 802C0628 */ void initAnime(void*, bool, f32, f32); - /* 802C06D0 */ void updateAnime(f32, f32); -}; - -struct mDoExt_McaMorfSO { - /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, - int, Z2Creature*, u32, u32); - /* 80010888 */ ~mDoExt_McaMorfSO(); - /* 800108F0 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, - Z2Creature*, u32, u32); - /* 80010B68 */ void calc(); - /* 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(); -}; - -struct mDoExt_McaMorf2 { - /* 80011348 */ mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, - int, f32, int, int, Z2Creature*, u32, u32); - /* 800113FC */ ~mDoExt_McaMorf2(); - /* 80011464 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int, - f32, int, int, Z2Creature*, u32, u32); - /* 800116B4 */ void ERROR_EXIT(); - /* 800116F4 */ void calc(); - /* 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(); -}; - -struct mDoExt_McaMorf { - /* 8000FC4C */ mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, - int, void*, u32, u32); - /* 8000FD10 */ ~mDoExt_McaMorf(); - /* 8000FD94 */ void create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, - int, void*, u32, u32); - /* 80010074 */ void calc(); - /* 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*); -}; - -struct mDoExt_3Dline_c { - /* 800123D0 */ void init(u16, int, int); - /* 800126BC */ mDoExt_3Dline_c(); -}; - -struct mDoExt_3DlineMat_c {}; - -struct mDoExt_3DlineMatSortPacket { - /* 80014738 */ void setMat(mDoExt_3DlineMat_c*); - /* 8001479C */ void draw(); - /* 80014E20 */ ~mDoExt_3DlineMatSortPacket(); -}; - struct 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(); -}; - struct J3DDrawBuffer; struct J3DDrawBuffer { @@ -134,25 +30,6 @@ struct dDlst_list_c { /* 800565EC */ void entryZSortXluDrawList(J3DDrawBuffer*, J3DPacket*, cXyz&); }; -struct JAISoundID {}; - -struct Z2SoundHandlePool {}; - -struct Z2SoundObjBase { - /* 802BE038 */ void framework(u32, s8); - /* 802BE070 */ void dispose(); - /* 802BE104 */ void stopOK(Z2SoundHandlePool&); - /* 802BE144 */ void startSound(JAISoundID, u32, s8); - /* 802BE2D4 */ void startLevelSound(JAISoundID, u32, s8); -}; - -struct Z2SoundObjAnime { - /* 802BEB94 */ Z2SoundObjAnime(); - /* 802BEBDC */ void init(Vec*, u8); - /* 802BEBFC */ void initAnime(void*, bool, f32, f32); - /* 802BEED4 */ void updateAnime(f32, f32); -}; - struct ResFONT {}; struct JUtility { @@ -1446,8 +1323,8 @@ SECTION_DATA extern void* __vt__10J3DMtxCalc[11 + 1 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int mDoExt_bckAnm::init(J3DAnmTransform* param_0, int param_1, int param_2, f32 param_3, - s16 param_4, s16 param_5, bool param_6) { +asm int mDoExt_bckAnm::init(J3DAnmTransform* i_bck, int i_play, int i_attr, f32 i_rate, + s16 i_startF, s16 i_endF, bool i_modify) { nofralloc #include "asm/m_Do/m_Do_ext/init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb.s" } @@ -2539,7 +2416,8 @@ asm mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* param_0, mDoExt_McaMorfCallBack #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm mDoExt_McaMorf::~mDoExt_McaMorf() { +// asm mDoExt_McaMorf::~mDoExt_McaMorf() { +extern "C" asm void __dt__14mDoExt_McaMorfFv() { nofralloc #include "asm/m_Do/m_Do_ext/__dt__14mDoExt_McaMorfFv.s" } @@ -2647,7 +2525,8 @@ asm mDoExt_McaMorfSO::mDoExt_McaMorfSO(J3DModelData* param_0, mDoExt_McaMorfCall #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm mDoExt_McaMorfSO::~mDoExt_McaMorfSO() { +// asm mDoExt_McaMorfSO::~mDoExt_McaMorfSO() { +extern "C" asm void __dt__16mDoExt_McaMorfSOFv() { nofralloc #include "asm/m_Do/m_Do_ext/__dt__16mDoExt_McaMorfSOFv.s" } @@ -2774,7 +2653,8 @@ asm mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData* param_0, mDoExt_McaMorfCallBa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm mDoExt_McaMorf2::~mDoExt_McaMorf2() { +// asm mDoExt_McaMorf2::~mDoExt_McaMorf2() { +extern "C" asm void __dt__15mDoExt_McaMorf2Fv() { nofralloc #include "asm/m_Do/m_Do_ext/__dt__15mDoExt_McaMorf2Fv.s" } @@ -3080,7 +2960,8 @@ asm void mDoExt_3DlineMatSortPacket::setMat(mDoExt_3DlineMat_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_3DlineMatSortPacket::draw() { +// asm void mDoExt_3DlineMatSortPacket::draw() { +extern "C" asm void draw__26mDoExt_3DlineMatSortPacketFv() { nofralloc #include "asm/m_Do/m_Do_ext/draw__26mDoExt_3DlineMatSortPacketFv.s" } @@ -3456,25 +3337,15 @@ extern "C" asm void func_80015034(void* _this, Vec const& param_0, f32 const (&p /* 8001505C-80015084 00F99C 0028+00 7/0 0/0 0/0 .text * init__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>FRC3VecRA3_A4_Cf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8001505C(void* _this, Vec const& param_0, f32 const (¶m_1)[3][4]) { - nofralloc -#include "asm/m_Do/m_Do_ext/func_8001505C.s" +void J3DMtxCalcNoAnm::init(Vec const& param_0, f32 const (¶m_1)[3][4]) { + J3DMtxCalcJ3DSysInitMaya::init(param_0, param_1); } -#pragma pop /* 80015084-800150AC 00F9C4 0028+00 2/0 0/0 0/0 .text * calc__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80015084(void* _this) { - nofralloc -#include "asm/m_Do/m_Do_ext/func_80015084.s" +void J3DMtxCalcNoAnm::calc() { + calcTransform(getJoint()->getTransformInfo()); } -#pragma pop /* 800150AC-8001513C 00F9EC 0090+00 1/0 0/0 0/0 .text * calc__114J3DMtxCalcAnimation<64J3DMtxCalcAnimationAdaptorDefault<27J3DMtxCalcCalcTransformMaya>,24J3DMtxCalcJ3DSysInitMaya>Fv diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index a4b1b4f12e..4718a4deae 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -18,10 +18,6 @@ // Types: // -struct JMath { - static u8 sincosTable_[65536]; -}; - struct J2DPrint { /* 802F4658 */ void setBuffer(u32); };