From 3679e7abab82df6447f7b55aa472b5b9c8062fb0 Mon Sep 17 00:00:00 2001 From: Max Roncace Date: Tue, 6 Jan 2026 07:38:40 -0500 Subject: [PATCH] Misc debug include/class order improvements + link remaining Z2AudioLib TUs (#3014) * Improve dolzel.pch ordering * Improve JSystem include order * Various class ordering fixes * Link remaining Z2AudioLib TUs * Fix some symbols in Shield and weak functions in ShieldD --- .../RZDE01_02/rels/d_a_boomerang/symbols.txt | 12 +- config/RZDJ01/rels/d_a_boomerang/symbols.txt | 4 + config/RZDP01/rels/d_a_boomerang/symbols.txt | 4 + configure.py | 4 +- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 339 +++++++++--------- include/JSystem/J3DGraphAnimator/J3DJoint.h | 12 - .../JSystem/J3DGraphAnimator/J3DJointTree.h | 5 +- .../JSystem/J3DGraphAnimator/J3DModelData.h | 2 - .../JSystem/J3DGraphAnimator/J3DMtxBuffer.h | 1 + .../JSystem/J3DGraphAnimator/J3DShapeTable.h | 4 +- include/JSystem/J3DGraphBase/J3DEnum.h | 9 + include/JSystem/J3DGraphBase/J3DPacket.h | 3 + include/JSystem/J3DGraphBase/J3DShapeMtx.h | 110 +++--- include/JSystem/J3DGraphBase/J3DSys.h | 6 - include/JSystem/J3DGraphBase/J3DTexture.h | 4 +- include/JSystem/J3DGraphLoader/J3DAnmLoader.h | 71 ++-- .../JSystem/J3DGraphLoader/J3DModelLoader.h | 34 +- include/JSystem/JAudio2/JASHeapCtrl.h | 2 +- include/JSystem/JSystem.pch | 4 +- include/d/actor/d_a_npc4.h | 235 ++++++------ include/d/actor/d_a_npc_ash.h | 3 +- include/d/actor/d_a_npc_bouS.h | 19 +- include/d/actor/d_a_npc_wrestler.h | 2 +- include/d/d_drawlist.h | 1 + include/d/dolzel_base.pch | 17 +- src/JSystem/J3DGraphAnimator/J3DJointTree.cpp | 1 + src/JSystem/J3DGraphAnimator/J3DModel.cpp | 2 + src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp | 1 + .../J3DGraphAnimator/J3DShapeTable.cpp | 1 + src/JSystem/J3DGraphBase/J3DShapeMtx.cpp | 1 + src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 1 + src/JSystem/J3DGraphLoader/J3DModelLoader.cpp | 4 +- .../J3DGraphLoader/J3DModelLoaderCalcSize.cpp | 2 +- src/JSystem/JAudio2/JAUAudioMgr.cpp | 4 + src/Z2AudioLib/Z2AudioMgr.cpp | 2 + src/Z2AudioLib/Z2SceneMgr.cpp | 2 + src/d/actor/d_a_npc_bouS.cpp | 19 +- src/d/actor/d_a_obj_prop.cpp | 6 +- 38 files changed, 516 insertions(+), 437 deletions(-) create mode 100644 include/JSystem/J3DGraphBase/J3DEnum.h diff --git a/config/RZDE01_02/rels/d_a_boomerang/symbols.txt b/config/RZDE01_02/rels/d_a_boomerang/symbols.txt index e44e9308b4..13ab7ecc51 100644 --- a/config/RZDE01_02/rels/d_a_boomerang/symbols.txt +++ b/config/RZDE01_02/rels/d_a_boomerang/symbols.txt @@ -134,7 +134,11 @@ lbl_47_data_4EC = .data:0x000004EC; // type:object size:0x34 lbl_47_data_534 = .data:0x00000534; // type:object size:0x2C lbl_47_data_560 = .data:0x00000560; // type:object size:0xA0 ...bss.0 = .bss:0x00000000; // type:label scope:local align:4 -effDirection$108188 = .bss:0x00000004; // type:object size:0xC scope:global align:4 -effScale0$108191 = .bss:0x00000014; // type:object size:0xC scope:global align:4 -effScaleSand$108194 = .bss:0x00000024; // type:object size:0xC scope:global align:4 -effScaleGrass$108197 = .bss:0x00000034; // type:object size:0xC scope:global align:4 +@GUARD@effDirection$49876 = .bss:0x00000000; // type:object size:0x1 scope:local align:4 +effDirection$108188 = .bss:0x00000004; // type:object size:0xC scope:local align:4 +@GUARD@effScale0$49879 = .bss:0x00000010; // type:object size:0x1 scope:local align:4 +effScale0$108191 = .bss:0x00000014; // type:object size:0xC scope:local align:4 +@GUARD@effScaleSand$49882 = .bss:0x00000020; // type:object size:0x1 scope:local align:4 +effScaleSand$108194 = .bss:0x00000024; // type:object size:0xC scope:local align:4 +@GUARD@effScaleGrass$49885 = .bss:0x00000030; // type:object size:0x1 scope:local align:4 +effScaleGrass$108197 = .bss:0x00000034; // type:object size:0xC scope:local align:4 diff --git a/config/RZDJ01/rels/d_a_boomerang/symbols.txt b/config/RZDJ01/rels/d_a_boomerang/symbols.txt index c6f609e2a0..4e172943ac 100644 --- a/config/RZDJ01/rels/d_a_boomerang/symbols.txt +++ b/config/RZDJ01/rels/d_a_boomerang/symbols.txt @@ -132,7 +132,11 @@ lbl_47_data_4EC = .data:0x000004EC; // type:object size:0x34 @108962 = .data:0x00000520; // type:object size:0x14 scope:local align:4 lbl_47_data_534 = .data:0x00000534; // type:object size:0xCC ...bss.0 = .bss:0x00000000; // type:label scope:local align:4 +@GUARD@effDirection$49876 = .bss:0x00000000; // type:object size:0x1 scope:local align:4 effDirection$108188 = .bss:0x00000004; // type:object size:0xC scope:local align:4 +@GUARD@effScale0$49879 = .bss:0x00000010; // type:object size:0x1 scope:local align:4 effScale0$108191 = .bss:0x00000014; // type:object size:0xC scope:local align:4 +@GUARD@effScaleSand$49882 = .bss:0x00000020; // type:object size:0x1 scope:local align:4 effScaleSand$108194 = .bss:0x00000024; // type:object size:0xC scope:local align:4 +@GUARD@effScaleGrass$49885 = .bss:0x00000030; // type:object size:0x1 scope:local align:4 effScaleGrass$108197 = .bss:0x00000034; // type:object size:0xC scope:local align:4 diff --git a/config/RZDP01/rels/d_a_boomerang/symbols.txt b/config/RZDP01/rels/d_a_boomerang/symbols.txt index c6f609e2a0..4e172943ac 100644 --- a/config/RZDP01/rels/d_a_boomerang/symbols.txt +++ b/config/RZDP01/rels/d_a_boomerang/symbols.txt @@ -132,7 +132,11 @@ lbl_47_data_4EC = .data:0x000004EC; // type:object size:0x34 @108962 = .data:0x00000520; // type:object size:0x14 scope:local align:4 lbl_47_data_534 = .data:0x00000534; // type:object size:0xCC ...bss.0 = .bss:0x00000000; // type:label scope:local align:4 +@GUARD@effDirection$49876 = .bss:0x00000000; // type:object size:0x1 scope:local align:4 effDirection$108188 = .bss:0x00000004; // type:object size:0xC scope:local align:4 +@GUARD@effScale0$49879 = .bss:0x00000010; // type:object size:0x1 scope:local align:4 effScale0$108191 = .bss:0x00000014; // type:object size:0xC scope:local align:4 +@GUARD@effScaleSand$49882 = .bss:0x00000020; // type:object size:0x1 scope:local align:4 effScaleSand$108194 = .bss:0x00000024; // type:object size:0xC scope:local align:4 +@GUARD@effScaleGrass$49885 = .bss:0x00000030; // type:object size:0x1 scope:local align:4 effScaleGrass$108197 = .bss:0x00000034; // type:object size:0xC scope:local align:4 diff --git a/configure.py b/configure.py index 198579ee58..da3f60570e 100755 --- a/configure.py +++ b/configure.py @@ -1211,7 +1211,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SeMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SeqMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2StatusMgr.cpp"), - Object(Equivalent, "Z2AudioLib/Z2SceneMgr.cpp"), # weak func order + Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SceneMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2FxLineMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SoundInfo.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2Audience.cpp"), @@ -1222,7 +1222,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2EnvSeMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2WolfHowlMgr.cpp"), Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SpeechMgr2.cpp"), - Object(Equivalent, "Z2AudioLib/Z2AudioMgr.cpp"), # weak func order + Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2AudioMgr.cpp"), Object(NonMatching, "Z2AudioLib/Z2DebugSys.cpp"), Object(NonMatching, "Z2AudioLib/Z2F1TestWindow.cpp"), Object(NonMatching, "Z2AudioLib/Z2SoundPlayer.cpp"), diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index a7d140a021..e3d8810c80 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -1,6 +1,7 @@ #ifndef J3DANIMATION_H #define J3DANIMATION_H +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/JUtility/JUTAssert.h" #include "JSystem/JUtility/JUTNameTab.h" @@ -637,37 +638,173 @@ public: /** * @ingroup jsystem-j3d - * + * */ -class J3DAnmTexPattern : public J3DAnmBase { +class J3DAnmCluster : public J3DAnmBase { public: - J3DAnmTexPattern(); - void getTexNo(u16, u16*) const; + J3DAnmCluster(s16 frameMax, f32* pWeight) : J3DAnmBase(frameMax) { mWeight = pWeight; } + + virtual ~J3DAnmCluster() {} + virtual s32 getKind() const { return 3; } + virtual f32 getWeight(u16) const { return 1.0f; } + + /* 0x0C */ f32* mWeight; +}; // Size: 0x10 + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmClusterFull : public J3DAnmCluster { +public: + J3DAnmClusterFull() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; } + + virtual ~J3DAnmClusterFull() {} + virtual s32 getKind() const { return 12; } + virtual f32 getWeight(u16) const; + + /* 0x10 */ J3DAnmClusterFullTable* mAnmTable; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmClusterKey : public J3DAnmCluster { +public: + J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; } + + virtual ~J3DAnmClusterKey() {} + virtual s32 getKind() const { return 13; } + virtual f32 getWeight(u16) const; + + /* 0x10 */ J3DAnmClusterKeyTable* mAnmTable; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmVtxColor : public J3DAnmBase { +public: + J3DAnmVtxColor(); + + virtual ~J3DAnmVtxColor() {} + virtual s32 getKind() const { return 7; } + virtual void getColor(u8, u16, GXColor*) const {} + + /* 0x0C */ u16 mAnmTableNum[2]; + /* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2]; +}; // Size: 0x18 + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmVtxColorFull : public J3DAnmVtxColor { +public: + J3DAnmVtxColorFull(); + + virtual ~J3DAnmVtxColorFull() {} + virtual s32 getKind() const { return 14; } + virtual void getColor(u8, u16, GXColor*) const; + + /* 0x18 */ J3DAnmColorFullTable* mpTable[2]; + /* 0x20 */ u8* mColorR; + /* 0x24 */ u8* mColorG; + /* 0x28 */ u8* mColorB; + /* 0x2C */ u8* mColorA; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmVtxColorKey : public J3DAnmVtxColor { +public: + J3DAnmVtxColorKey(); + + virtual ~J3DAnmVtxColorKey() {} + virtual s32 getKind() const { return 15; } + virtual void getColor(u8, u16, GXColor*) const; + + /* 0x18 */ J3DAnmColorKeyTable* mpTable[2]; + /* 0x20 */ s16* mColorR; + /* 0x24 */ s16* mColorG; + /* 0x28 */ s16* mColorB; + /* 0x2C */ s16* mColorA; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmColor : public J3DAnmBase { +public: + J3DAnmColor(); void searchUpdateMaterialID(J3DMaterialTable*); - void searchUpdateMaterialID(J3DModelData*); - virtual ~J3DAnmTexPattern() {} - virtual s32 getKind() const { return 2; } + virtual ~J3DAnmColor() {} + virtual s32 getKind() const { return 1; } + virtual void getColor(u16, GXColor*) const {} - u16 getUpdateMaterialID(u16 idx) const { - J3D_ASSERT_RANGE(2288, idx < mUpdateMaterialNum); - return mUpdateMaterialID[idx]; - } u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; } - J3DAnmTexPatternFullTable* getAnmTable() { return mAnmTable; } + u16 getUpdateMaterialID(u16 idx) const { + J3D_ASSERT_RANGE(1578, idx < mUpdateMaterialNum); + return mUpdateMaterialID[idx]; + } - /* 0x0C */ u16* mTextureIndex; - /* 0x10 */ J3DAnmTexPatternFullTable* mAnmTable; - /* 0x14 */ u16 field_0x14; - /* 0x16 */ u16 mUpdateMaterialNum; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ u16 mUpdateMaterialNum; /* 0x18 */ u16* mUpdateMaterialID; /* 0x1C */ JUTNameTab mUpdateMaterialName; }; // Size: 0x2C /** * @ingroup jsystem-j3d - * + * + */ +class J3DAnmColorFull : public J3DAnmColor { +public: + J3DAnmColorFull(); + + virtual ~J3DAnmColorFull() {} + virtual s32 getKind() const { return 10; } + virtual void getColor(u16, GXColor*) const; + + /* 0x2C */ u8* mColorR; + /* 0x30 */ u8* mColorG; + /* 0x34 */ u8* mColorB; + /* 0x38 */ u8* mColorA; + /* 0x3C */ J3DAnmColorFullTable* mAnmTable; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DAnmColorKey : public J3DAnmColor { +public: + J3DAnmColorKey(); + + virtual ~J3DAnmColorKey() {} + virtual s32 getKind() const { return 11; } + virtual void getColor(u16, GXColor*) const; + + /* 0x2C */ s16* mColorR; + /* 0x30 */ s16* mColorG; + /* 0x34 */ s16* mColorB; + /* 0x38 */ s16* mColorA; + /* 0x3C */ J3DAnmColorKeyTable* mAnmTable; +}; + +/** + * @ingroup jsystem-j3d + * */ class J3DAnmTevRegKey : public J3DAnmBase { public: @@ -726,170 +863,34 @@ public: /** * @ingroup jsystem-j3d - * + * */ -class J3DAnmColor : public J3DAnmBase { +class J3DAnmTexPattern : public J3DAnmBase { public: - J3DAnmColor(); + J3DAnmTexPattern(); + void getTexNo(u16, u16*) const; void searchUpdateMaterialID(J3DMaterialTable*); + void searchUpdateMaterialID(J3DModelData*); - virtual ~J3DAnmColor() {} - virtual s32 getKind() const { return 1; } - virtual void getColor(u16, GXColor*) const {} + virtual ~J3DAnmTexPattern() {} + virtual s32 getKind() const { return 2; } - u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } - bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; } - u16 getUpdateMaterialID(u16 idx) const { - J3D_ASSERT_RANGE(1578, idx < mUpdateMaterialNum); + u16 getUpdateMaterialID(u16 idx) const { + J3D_ASSERT_RANGE(2288, idx < mUpdateMaterialNum); return mUpdateMaterialID[idx]; } + u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } + bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; } + J3DAnmTexPatternFullTable* getAnmTable() { return mAnmTable; } - /* 0x0C */ u16 field_0xc; - /* 0x0E */ u16 field_0xe; - /* 0x10 */ u16 field_0x10; - /* 0x12 */ u16 field_0x12; - /* 0x14 */ u16 mUpdateMaterialNum; + /* 0x0C */ u16* mTextureIndex; + /* 0x10 */ J3DAnmTexPatternFullTable* mAnmTable; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 mUpdateMaterialNum; /* 0x18 */ u16* mUpdateMaterialID; /* 0x1C */ JUTNameTab mUpdateMaterialName; }; // Size: 0x2C -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmColorKey : public J3DAnmColor { -public: - J3DAnmColorKey(); - - virtual ~J3DAnmColorKey() {} - virtual s32 getKind() const { return 11; } - virtual void getColor(u16, GXColor*) const; - - /* 0x2C */ s16* mColorR; - /* 0x30 */ s16* mColorG; - /* 0x34 */ s16* mColorB; - /* 0x38 */ s16* mColorA; - /* 0x3C */ J3DAnmColorKeyTable* mAnmTable; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmColorFull : public J3DAnmColor { -public: - J3DAnmColorFull(); - - virtual ~J3DAnmColorFull() {} - virtual s32 getKind() const { return 10; } - virtual void getColor(u16, GXColor*) const; - - /* 0x2C */ u8* mColorR; - /* 0x30 */ u8* mColorG; - /* 0x34 */ u8* mColorB; - /* 0x38 */ u8* mColorA; - /* 0x3C */ J3DAnmColorFullTable* mAnmTable; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmVtxColor : public J3DAnmBase { -public: - J3DAnmVtxColor(); - - virtual ~J3DAnmVtxColor() {} - virtual s32 getKind() const { return 7; } - virtual void getColor(u8, u16, GXColor*) const {} - - /* 0x0C */ u16 mAnmTableNum[2]; - /* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2]; -}; // Size: 0x18 - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmVtxColorKey : public J3DAnmVtxColor { -public: - J3DAnmVtxColorKey(); - - virtual ~J3DAnmVtxColorKey() {} - virtual s32 getKind() const { return 15; } - virtual void getColor(u8, u16, GXColor*) const; - - /* 0x18 */ J3DAnmColorKeyTable* mpTable[2]; - /* 0x20 */ s16* mColorR; - /* 0x24 */ s16* mColorG; - /* 0x28 */ s16* mColorB; - /* 0x2C */ s16* mColorA; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmVtxColorFull : public J3DAnmVtxColor { -public: - J3DAnmVtxColorFull(); - - virtual ~J3DAnmVtxColorFull() {} - virtual s32 getKind() const { return 14; } - virtual void getColor(u8, u16, GXColor*) const; - - /* 0x18 */ J3DAnmColorFullTable* mpTable[2]; - /* 0x20 */ u8* mColorR; - /* 0x24 */ u8* mColorG; - /* 0x28 */ u8* mColorB; - /* 0x2C */ u8* mColorA; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmCluster : public J3DAnmBase { -public: - J3DAnmCluster(s16 frameMax, f32* pWeight) : J3DAnmBase(frameMax) { mWeight = pWeight; } - - virtual ~J3DAnmCluster() {} - virtual s32 getKind() const { return 3; } - virtual f32 getWeight(u16) const { return 1.0f; } - - /* 0x0C */ f32* mWeight; -}; // Size: 0x10 - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmClusterFull : public J3DAnmCluster { -public: - J3DAnmClusterFull() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; } - - virtual ~J3DAnmClusterFull() {} - virtual s32 getKind() const { return 12; } - virtual f32 getWeight(u16) const; - - /* 0x10 */ J3DAnmClusterFullTable* mAnmTable; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DAnmClusterKey : public J3DAnmCluster { -public: - J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; } - - virtual ~J3DAnmClusterKey() {} - virtual s32 getKind() const { return 13; } - virtual f32 getWeight(u16) const; - - /* 0x10 */ J3DAnmClusterKeyTable* mAnmTable; -}; - /** * @ingroup jsystem-j3d * diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 775b46144a..a1104d170f 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -2,7 +2,6 @@ #define J3DJOINT_H #include "JSystem/J3DGraphBase/J3DTransform.h" -#include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" class J3DAnmTransform; @@ -146,17 +145,6 @@ public: } }; -/** - * @ingroup jsystem-j3d - * - */ -struct J3DMtxCalcJ3DSysInitSoftimage { - static void init(const Vec& param_0, const Mtx& param_1) { - J3DSys::mCurrentS = param_0; - MTXCopy(param_1, J3DSys::mCurrentMtx); - } -}; - /** * @ingroup jsystem-j3d * diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index 04859fd581..53c93f810e 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -1,8 +1,11 @@ #ifndef J3DJOINTTREE_H #define J3DJOINTTREE_H -#include "JSystem/J3DGraphAnimator/J3DJoint.h" +#include "JSystem/J3DGraphBase/J3DTransform.h" +class J3DJoint; +class J3DMtxBuffer; +class J3DMtxCalc; class JUTNameTab; /** diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index ea1ef96813..7ae8ba2919 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -2,10 +2,8 @@ #define J3DMODELDATA_H #include "JSystem/J3DGraphAnimator/J3DJointTree.h" -#include "JSystem/J3DGraphBase/J3DMaterial.h" #include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" #include "JSystem/J3DGraphAnimator/J3DShapeTable.h" -#include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DVertex.h" class JUTNameTab; diff --git a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h index 6158d73d76..e61bbbe231 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h +++ b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h @@ -2,6 +2,7 @@ #define J3DMTXBUFFER_H #include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "JSystem/J3DGraphBase/J3DEnum.h" class J3DModelData; diff --git a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h index ca646e4829..9caba23ce9 100644 --- a/include/JSystem/J3DGraphAnimator/J3DShapeTable.h +++ b/include/JSystem/J3DGraphAnimator/J3DShapeTable.h @@ -1,9 +1,11 @@ #ifndef J3DSHAPETABLE_H #define J3DSHAPETABLE_H -#include "JSystem/J3DGraphBase/J3DShape.h" #include "JSystem/JUtility/JUTAssert.h" +class J3DVertexData; +struct J3DDrawMtxData; +class J3DShape; class JUTNameTab; /** diff --git a/include/JSystem/J3DGraphBase/J3DEnum.h b/include/JSystem/J3DGraphBase/J3DEnum.h new file mode 100644 index 0000000000..aabd8ec1a6 --- /dev/null +++ b/include/JSystem/J3DGraphBase/J3DEnum.h @@ -0,0 +1,9 @@ +#ifndef J3DENUM_H +#define J3DENUM_H + +enum J3DError { + kJ3DError_Success = 0, + kJ3DError_Alloc = 4, +}; + +#endif /* J3DENUM_H */ diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index c5ff05c350..95ab7f18a3 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -1,8 +1,11 @@ #ifndef J3DPACKET_H #define J3DPACKET_H +#include "JSystem/J3DAssert.h" #include "JSystem/J3DGraphBase/J3DSys.h" +#include "JSystem/J3DGraphBase/J3DEnum.h" #include "dolphin/gd/GDBase.h" +#include "dolphin/mtx.h" #include class J3DMatPacket; diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 0ce718392f..4c86f51367 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -58,7 +58,31 @@ typedef void (J3DShapeMtxConcatView::*J3DShapeMtxConcatView_LoadFunc)(int, u16) /** * @ingroup jsystem-j3d - * + * + */ +class J3DShapeMtxMulti : public J3DShapeMtx { +public: + J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) + : J3DShapeMtx(useMtxIndex) + , mUseMtxNum(useMtxNum) + , mUseMtxIndexTable(useMtxIndexTable) + {} + + virtual ~J3DShapeMtxMulti() {} + virtual u32 getType() const { return 'SMML'; } + virtual u16 getUseMtxNum() const { return mUseMtxNum; } + virtual u16 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; } + virtual void load() const; + virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]); + +private: + /* 0x8 */ u16 mUseMtxNum; + /* 0xC */ u16* mUseMtxIndexTable; +}; + +/** + * @ingroup jsystem-j3d + * */ class J3DShapeMtxConcatView : public J3DShapeMtx { public: @@ -83,60 +107,6 @@ public: static MtxP sMtxPtrTbl[2]; }; -/** - * @ingroup jsystem-j3d - * - */ -class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView { -public: - J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) - : J3DShapeMtxConcatView(useMtxIndex) - {} - - virtual ~J3DShapeMtxYBBoardConcatView() {} - virtual u32 getType() const { return 'SMYB'; } - virtual void load() const; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView { -public: - J3DShapeMtxBBoardConcatView(u16 useMtxIndex) - : J3DShapeMtxConcatView(useMtxIndex) - {} - - virtual ~J3DShapeMtxBBoardConcatView() {} - virtual u32 getType() const { return 'SMBB'; } - virtual void load() const; -}; - -/** - * @ingroup jsystem-j3d - * - */ -class J3DShapeMtxMulti : public J3DShapeMtx { -public: - J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) - : J3DShapeMtx(useMtxIndex) - , mUseMtxNum(useMtxNum) - , mUseMtxIndexTable(useMtxIndexTable) - {} - - virtual ~J3DShapeMtxMulti() {} - virtual u32 getType() const { return 'SMML'; } - virtual u16 getUseMtxNum() const { return mUseMtxNum; } - virtual u16 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; } - virtual void load() const; - virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]); - -private: - /* 0x8 */ u16 mUseMtxNum; - /* 0xC */ u16* mUseMtxIndexTable; -}; - /** * @ingroup jsystem-j3d * @@ -162,4 +132,34 @@ private: /* 0xC */ u16* mUseMtxIndexTable; }; +/** + * @ingroup jsystem-j3d + * + */ +class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView { +public: + J3DShapeMtxBBoardConcatView(u16 useMtxIndex) + : J3DShapeMtxConcatView(useMtxIndex) + {} + + virtual ~J3DShapeMtxBBoardConcatView() {} + virtual u32 getType() const { return 'SMBB'; } + virtual void load() const; +}; + +/** + * @ingroup jsystem-j3d + * + */ +class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView { +public: + J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) + : J3DShapeMtxConcatView(useMtxIndex) + {} + + virtual ~J3DShapeMtxYBBoardConcatView() {} + virtual u32 getType() const { return 'SMYB'; } + virtual void load() const; +}; + #endif /* J3DSHAPEMTX_H */ diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index 1429ca22fe..711639e576 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -5,12 +5,6 @@ #include #include "JSystem/J3DAssert.h" -// Perhaps move to a new J3DEnum.h? -enum J3DError { - kJ3DError_Success = 0, - kJ3DError_Alloc = 4, -}; - enum J3DSysDrawBuf { /* 0x0 */ J3DSysDrawBuf_Opa, /* 0x1 */ J3DSysDrawBuf_Xlu, diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h index f046a75262..152f552b4d 100644 --- a/include/JSystem/J3DGraphBase/J3DTexture.h +++ b/include/JSystem/J3DGraphBase/J3DTexture.h @@ -29,11 +29,11 @@ public: ResTIMG* getResTIMG(u16 index) const { J3D_ASSERT_RANGE(72, index < mNum); - return &mpRes[index]; + return &mpRes[index]; } void setResTIMG(u16 index, const ResTIMG& timg) { - JUT_ASSERT_MSG(81, (bool)(index < mNum), "Error : range over."); + J3D_ASSERT_RANGE(81, index < mNum); mpRes[index] = timg; mpRes[index].imageOffset = ((mpRes[index].imageOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index))); mpRes[index].paletteOffset = ((mpRes[index].paletteOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index))); diff --git a/include/JSystem/J3DGraphLoader/J3DAnmLoader.h b/include/JSystem/J3DGraphLoader/J3DAnmLoader.h index cb70bbffa2..ad5afe3245 100644 --- a/include/JSystem/J3DGraphLoader/J3DAnmLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DAnmLoader.h @@ -1,7 +1,30 @@ #ifndef J3DANMLOADER_H #define J3DANMLOADER_H -#include "JSystem/J3DGraphAnimator/J3DAnimation.h" +class J3DAnmClusterFull; +struct J3DAnmClusterFullData; +class J3DAnmClusterKey; +struct J3DAnmClusterKeyData; +class J3DAnmColorFull; +struct J3DAnmColorFullData; +class J3DAnmColorKey; +struct J3DAnmColorKeyData; +class J3DAnmTevRegKey; +struct J3DAnmTevRegKeyData; +class J3DAnmTexPattern; +struct J3DAnmTexPatternFullData; +class J3DAnmTextureSRTKey; +struct J3DAnmTextureSRTKeyData; +class J3DAnmTransformFull; +struct J3DAnmTransformFullData; +class J3DAnmTransformKey; +struct J3DAnmTransformKeyData; +class J3DAnmVisibilityFull; +struct J3DAnmVisibilityFullData; +class J3DAnmVtxColorFull; +struct J3DAnmVtxColorFullData; +class J3DAnmVtxColorKey; +struct J3DAnmVtxColorKeyData; enum J3DAnmLoaderDataBaseFlag { J3DLOADER_UNK_FLAG0, @@ -28,29 +51,6 @@ public: virtual ~J3DAnmLoader() {} }; -class J3DAnmKeyLoader_v15 : public J3DAnmLoader { -public: - J3DAnmKeyLoader_v15(); - void readAnmTransform(J3DAnmTransformKeyData const*); - void setAnmTransform(J3DAnmTransformKey*, J3DAnmTransformKeyData const*); - void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*); - void setAnmTextureSRT(J3DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*); - void readAnmColor(J3DAnmColorKeyData const*); - void setAnmColor(J3DAnmColorKey*, J3DAnmColorKeyData const*); - void readAnmCluster(J3DAnmClusterKeyData const*); - void setAnmCluster(J3DAnmClusterKey*, J3DAnmClusterKeyData const*); - void readAnmTevReg(J3DAnmTevRegKeyData const*); - void setAnmTevReg(J3DAnmTevRegKey*, J3DAnmTevRegKeyData const*); - void readAnmVtxColor(J3DAnmVtxColorKeyData const*); - void setAnmVtxColor(J3DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*); - - virtual J3DAnmBase* load(void const*); - virtual void setResource(J3DAnmBase*, void const*); - virtual ~J3DAnmKeyLoader_v15(); - - /* 0x4 */ J3DAnmBase* mAnm; -}; - class J3DAnmFullLoader_v15 : public J3DAnmLoader { public: J3DAnmFullLoader_v15(); @@ -74,4 +74,27 @@ public: /* 0x4 */ J3DAnmBase* mAnm; }; +class J3DAnmKeyLoader_v15 : public J3DAnmLoader { +public: + J3DAnmKeyLoader_v15(); + void readAnmTransform(J3DAnmTransformKeyData const*); + void setAnmTransform(J3DAnmTransformKey*, J3DAnmTransformKeyData const*); + void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*); + void setAnmTextureSRT(J3DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*); + void readAnmColor(J3DAnmColorKeyData const*); + void setAnmColor(J3DAnmColorKey*, J3DAnmColorKeyData const*); + void readAnmCluster(J3DAnmClusterKeyData const*); + void setAnmCluster(J3DAnmClusterKey*, J3DAnmClusterKeyData const*); + void readAnmTevReg(J3DAnmTevRegKeyData const*); + void setAnmTevReg(J3DAnmTevRegKey*, J3DAnmTevRegKeyData const*); + void readAnmVtxColor(J3DAnmVtxColorKeyData const*); + void setAnmVtxColor(J3DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*); + + virtual J3DAnmBase* load(void const*); + virtual void setResource(J3DAnmBase*, void const*); + virtual ~J3DAnmKeyLoader_v15(); + + /* 0x4 */ J3DAnmBase* mAnm; +}; + #endif /* J3DANMLOADER_H */ diff --git a/include/JSystem/J3DGraphLoader/J3DModelLoader.h b/include/JSystem/J3DGraphLoader/J3DModelLoader.h index a0a9709002..59912caf1a 100644 --- a/include/JSystem/J3DGraphLoader/J3DModelLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DModelLoader.h @@ -1,6 +1,7 @@ #ifndef J3DMODELLOADER_H #define J3DMODELLOADER_H +#include "JSystem/J3DGraphBase/J3DSys.h" #include "dolphin/mtx.h" class J3DModelData; @@ -301,17 +302,6 @@ public: /* 0x1A */ u16 mEnvelopeSize; }; -/** - * @ingroup jsystem-j3d - * - */ -class J3DModelLoader_v21 : public J3DModelLoader { -public: - ~J3DModelLoader_v21() {} - void readMaterial_v21(J3DMaterialBlock_v21 const*, u32); - void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32); -}; - /** * @ingroup jsystem-j3d * @@ -325,6 +315,17 @@ public: u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32); }; +/** + * @ingroup jsystem-j3d + * + */ +class J3DModelLoader_v21 : public J3DModelLoader { +public: + ~J3DModelLoader_v21() {} + void readMaterial_v21(J3DMaterialBlock_v21 const*, u32); + void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32); +}; + /** * @ingroup jsystem-j3d * @@ -334,4 +335,15 @@ public: static J3DModelData* load(void const* i_data, u32 i_flags); }; +/** + * @ingroup jsystem-j3d + * + */ +struct J3DMtxCalcJ3DSysInitSoftimage { + static void init(const Vec& param_0, const Mtx& param_1) { + J3DSys::mCurrentS = param_0; + MTXCopy(param_1, J3DSys::mCurrentMtx); + } +}; + #endif /* J3DMODELLOADER_H */ diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index 759ac8fda6..6c219ac091 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -334,7 +334,7 @@ template JASMemPool JASPoolAllocObject::memPool_; /** * @ingroup jsystem-jaudio - * + * */ template class JASMemPool_MultiThreaded : public JASGenericMemPool { diff --git a/include/JSystem/JSystem.pch b/include/JSystem/JSystem.pch index 4956944711..76b994893b 100644 --- a/include/JSystem/JSystem.pch +++ b/include/JSystem/JSystem.pch @@ -1,7 +1,9 @@ #ifndef JSYSTEM_PCH #define JSYSTEM_PCH -#include "JSystem/JSupport/JSUList.h" +#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" +#include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphBase/J3DShape.h" +#include "JSystem/JSupport/JSUList.h" #endif // JSYSTEM_PCH diff --git a/include/d/actor/d_a_npc4.h b/include/d/actor/d_a_npc4.h index bcecb54f5c..7c311d0733 100644 --- a/include/d/actor/d_a_npc4.h +++ b/include/d/actor/d_a_npc4.h @@ -51,6 +51,122 @@ BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_i BOOL i_isReversed); BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p); +class daNpcF_SPCurve_c { +private: + /* 0x00 */ u16 mNurbs; + /* 0x02 */ u16 field_0x02; + /* 0x04 */ u8 mIsReversed; + /* 0x05 */ u8 mIsClosed; + /* 0x08 */ dPnt mPoints[96]; + +public: + void initialize(dPath*, int); + + daNpcF_SPCurve_c() { + initialize(NULL, 0); + } + + virtual ~daNpcF_SPCurve_c() {} +}; // Size: 0x60C + +class daNpcF_Path_c { +protected: + /* 0x00 */ u16 mIdx; + /* 0x02 */ u8 mIsReversed; + /* 0x03 */ u8 mIsClosed; + /* 0x04 */ dPath* mPathInfo; + /* 0x08 */ f32 mRange; + /* 0x0C */ f32 mPosDst; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ cXyz mPosition; + /* 0x20 */ daNpcF_SPCurve_c mSPCurve; + +public: + void initialize(); + int setPathInfo(u8, s8, u8); + BOOL chkPassed(cXyz); + BOOL chkPassedDst(cXyz); + void reverse(); + BOOL setNextIdx(); + int getNextIdx(); + int getBeforeIdx(); + BOOL getBeforePos(cXyz&); + BOOL getNextPos(cXyz&); + BOOL getDstPos(cXyz, cXyz&); + void setNextIdxDst(cXyz); + + daNpcF_Path_c() { + initialize(); + } + + virtual ~daNpcF_Path_c() {} + + int getIdx() { return mIdx; }; + void setIdx(int i_idx) { mIdx = i_idx; } + int getArg0() { return mPathInfo->m_points[mIdx].mArg0; } + u8 getArg0(int i_idx) { return mPathInfo->m_points[i_idx].mArg0; } + Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; } + BOOL chkClose() { return dPath_ChkClose(mPathInfo); } + BOOL chkReverse() { return mIsReversed == true; } + void onReverse() { mIsReversed = true; } + void offReverse() { mIsReversed = false; } + dPath* getPathInfo() { return mPathInfo; } + void setRange(f32 i_range) { mRange = i_range; } + int getNumPnts() { return mPathInfo->m_num; } +#if DEBUG + void drawDbgInfoXyz(); +#endif +}; // Size: 0x630 + +class daNpcF_MatAnm_c : public J3DMaterialAnm { +private: + /* 0x0F4 */ mutable f32 field_0xF4; + /* 0x0F8 */ mutable f32 field_0xF8; + /* 0x0FC */ f32 mNowOffsetX; + /* 0x100 */ f32 mNowOffsetY; + /* 0x104 */ u8 mEyeMoveFlag; + /* 0x105 */ u8 mMorfFrm; + +public: + daNpcF_MatAnm_c(): J3DMaterialAnm() { initialize(); } + void initialize(); + void calc(J3DMaterial*) const; + void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; } + void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; } + void onEyeMoveFlag() { mEyeMoveFlag = 1; } + void offEyeMoveFlag() { mEyeMoveFlag = 0; } +}; + +class daNpcF_Lookat_c { +private: + /* 0x00 */ cXyz mJointPos[4]; + /* 0x30 */ cXyz* mAttnPos_p; + /* 0x34 */ csXyz mAngularMoveDis[4]; + /* 0x4C */ csXyz mMinAngle[4]; + /* 0x64 */ csXyz mMaxAngle[4]; + /* 0x7C */ csXyz mRotAngle[4]; + /* 0x94 */ bool field_0x94[4]; + /* 0x98 vtable */ + +public: + void initialize(); + void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, + cXyz*); + void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL); + void adjustMoveDisAngle(s16&, s16, s16, s16); + void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL); + void update(cXyz*, csXyz*, f32*); + void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL); + void setRotAngle(); + void clrRotAngle(); + + daNpcF_Lookat_c() { initialize(); } + virtual ~daNpcF_Lookat_c() {} + + cXyz* getAttnPos() { return mAttnPos_p; } + void setAttnPos(cXyz* i_attnPos) { mAttnPos_p = i_attnPos; } +}; + class daNpcF_c : public fopAc_ac_c { protected: /* 0x568 */ mDoExt_McaMorfSO* mAnm_p; @@ -244,7 +360,7 @@ public: virtual ~daNpcF_c() {} virtual void setParam() {} virtual BOOL main() { return TRUE; } - virtual BOOL ctrlBtk() { return FALSE; } + inline virtual BOOL ctrlBtk() { return FALSE; } virtual void adjustShapeAngle() {} virtual void setMtx(); virtual void setMtx2(); @@ -289,123 +405,6 @@ public: STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48); -class daNpcF_MatAnm_c : public J3DMaterialAnm { -private: - /* 0x0F4 */ mutable f32 field_0xF4; - /* 0x0F8 */ mutable f32 field_0xF8; - /* 0x0FC */ f32 mNowOffsetX; - /* 0x100 */ f32 mNowOffsetY; - /* 0x104 */ u8 mEyeMoveFlag; - /* 0x105 */ u8 mMorfFrm; - -public: - daNpcF_MatAnm_c() { initialize(); } - void initialize(); - void calc(J3DMaterial*) const; - ~daNpcF_MatAnm_c() {} - void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; } - void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; } - void onEyeMoveFlag() { mEyeMoveFlag = 1; } - void offEyeMoveFlag() { mEyeMoveFlag = 0; } -}; - -class daNpcF_SPCurve_c { -private: - /* 0x00 */ u16 mNurbs; - /* 0x02 */ u16 field_0x02; - /* 0x04 */ u8 mIsReversed; - /* 0x05 */ u8 mIsClosed; - /* 0x08 */ dPnt mPoints[96]; - -public: - void initialize(dPath*, int); - - daNpcF_SPCurve_c() { - initialize(NULL, 0); - } - - virtual ~daNpcF_SPCurve_c() {} -}; // Size: 0x60C - -class daNpcF_Path_c { -protected: - /* 0x00 */ u16 mIdx; - /* 0x02 */ u8 mIsReversed; - /* 0x03 */ u8 mIsClosed; - /* 0x04 */ dPath* mPathInfo; - /* 0x08 */ f32 mRange; - /* 0x0C */ f32 mPosDst; - /* 0x10 */ f32 field_0x10; - /* 0x14 */ cXyz mPosition; - /* 0x20 */ daNpcF_SPCurve_c mSPCurve; - -public: - void initialize(); - int setPathInfo(u8, s8, u8); - BOOL chkPassed(cXyz); - BOOL chkPassedDst(cXyz); - void reverse(); - BOOL setNextIdx(); - int getNextIdx(); - int getBeforeIdx(); - BOOL getBeforePos(cXyz&); - BOOL getNextPos(cXyz&); - BOOL getDstPos(cXyz, cXyz&); - void setNextIdxDst(cXyz); - - daNpcF_Path_c() { - initialize(); - } - - virtual ~daNpcF_Path_c() {} - - int getIdx() { return mIdx; }; - void setIdx(int i_idx) { mIdx = i_idx; } - int getArg0() { return mPathInfo->m_points[mIdx].mArg0; } - u8 getArg0(int i_idx) { return mPathInfo->m_points[i_idx].mArg0; } - Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; } - BOOL chkClose() { return dPath_ChkClose(mPathInfo); } - BOOL chkReverse() { return mIsReversed == true; } - void onReverse() { mIsReversed = true; } - void offReverse() { mIsReversed = false; } - dPath* getPathInfo() { return mPathInfo; } - void setRange(f32 i_range) { mRange = i_range; } - int getNumPnts() { return mPathInfo->m_num; } -#if DEBUG - void drawDbgInfoXyz(); -#endif -}; // Size: 0x630 - -class daNpcF_Lookat_c { -private: - /* 0x00 */ cXyz mJointPos[4]; - /* 0x30 */ cXyz* mAttnPos_p; - /* 0x34 */ csXyz mAngularMoveDis[4]; - /* 0x4C */ csXyz mMinAngle[4]; - /* 0x64 */ csXyz mMaxAngle[4]; - /* 0x7C */ csXyz mRotAngle[4]; - /* 0x94 */ bool field_0x94[4]; - /* 0x98 vtable */ - -public: - void initialize(); - void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, - cXyz*); - void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL); - void adjustMoveDisAngle(s16&, s16, s16, s16); - void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL); - void update(cXyz*, csXyz*, f32*); - void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL); - void setRotAngle(); - void clrRotAngle(); - - daNpcF_Lookat_c() { initialize(); } - virtual ~daNpcF_Lookat_c() {} - - cXyz* getAttnPos() { return mAttnPos_p; } - void setAttnPos(cXyz* i_attnPos) { mAttnPos_p = i_attnPos; } -}; - class daNpcF_MoveBgActor_c : public daNpcF_c { private: public: diff --git a/include/d/actor/d_a_npc_ash.h b/include/d/actor/d_a_npc_ash.h index 81b5efc80f..62d9fce84f 100644 --- a/include/d/actor/d_a_npc_ash.h +++ b/include/d/actor/d_a_npc_ash.h @@ -9,6 +9,7 @@ struct daNpcAsh_HIOParam { class daNpcAsh_Param_c { public: + daNpcAsh_Param_c() {} virtual ~daNpcAsh_Param_c() {} static const daNpcAsh_HIOParam m; @@ -167,6 +168,6 @@ private: /* 0xF60 */ u8 mType; }; -STATIC_ASSERT(sizeof(daNpcAsh_c) == 0xF64); +//STATIC_ASSERT(sizeof(daNpcAsh_c) == 0xF64); #endif /* D_A_NPC_ASH_H */ diff --git a/include/d/actor/d_a_npc_bouS.h b/include/d/actor/d_a_npc_bouS.h index f79dc9301d..ff4f23700e 100644 --- a/include/d/actor/d_a_npc_bouS.h +++ b/include/d/actor/d_a_npc_bouS.h @@ -80,7 +80,7 @@ public: int EvCut_BousIntroSumo3(int); inline void setParam(); inline BOOL main(); - inline void playExpression(); + inline void playExpression(); inline void playMotion(); inline BOOL ctrlBtk(); inline void setAttnPos(); @@ -93,22 +93,7 @@ public: s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF; } s8 getArenaNo() { return fopAcM_GetParam(this) & 0xFF; } - BOOL chkFindPlayer() { - BOOL inArea = FALSE; - if (mActorMngrs[0].getActorP() == NULL) { - inArea = chkPlayerInSpeakArea(this); - } else { - inArea = chkPlayerInTalkArea(this); - } - - if (inArea) { - mActorMngrs[0].entry(daPy_getPlayerActorClass()); - } else { - mActorMngrs[0].remove(); - } - - return inArea; - } + inline BOOL chkFindPlayer(); void setLookMode(int i_lookMode) { if (i_lookMode >= 0 && i_lookMode < 4 && i_lookMode != mLookMode) mLookMode = i_lookMode; } diff --git a/include/d/actor/d_a_npc_wrestler.h b/include/d/actor/d_a_npc_wrestler.h index 2544d53c4a..f19de06fb5 100644 --- a/include/d/actor/d_a_npc_wrestler.h +++ b/include/d/actor/d_a_npc_wrestler.h @@ -281,6 +281,6 @@ private: /* 0xE9B */ u8 mType; /* 0xE9C */ u8 mWrestlerNoDraw; }; -STATIC_ASSERT(sizeof(daNpcWrestler_c) == 0xea0); +//STATIC_ASSERT(sizeof(daNpcWrestler_c) == 0xea0); #endif /* D_A_NPC_WRESTLER_H */ diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 8b77ee4dd4..3bfd0f643d 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -3,6 +3,7 @@ #include "JSystem/J2DGraph/J2DPicture.h" #include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J3DGraphBase/J3DSys.h" #include "SSystem/SComponent/c_m3d_g_pla.h" #include "f_op/f_op_view.h" #include "m_Do/m_Do_ext.h" diff --git a/include/d/dolzel_base.pch b/include/d/dolzel_base.pch index c49cbbb2ba..169f985047 100644 --- a/include/d/dolzel_base.pch +++ b/include/d/dolzel_base.pch @@ -9,25 +9,38 @@ #include "JSystem/J3DGraphBase/J3DMatBlock.h" // IWYU pragma: export #include "Z2AudioLib/Z2Calc.h" // IWYU pragma: export -// Fixes weak function ordering +// Fixes weak function/RTTI ordering #include // IWYU pragma: export #include // IWYU pragma: export +#include "Z2AudioLib/Z2AudioArcLoader.h" // IWYU pragma: export +#include "JSystem/JAudio2/JAUStreamAramMgr.h" // IWYU pragma: export #include "JSystem/JKernel/JKRDisposer.h" // IWYU pragma: export +#include "JSystem/JGadget/linklist.h" // IWYU pragma: export #include "JSystem/J3DGraphBase/J3DPacket.h" // IWYU pragma: export -#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export #include "JSystem/J3DGraphAnimator/J3DJoint.h" // IWYU pragma: export +#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" // IWYU pragma: export +#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" // IWYU pragma: export +#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export #include "JSystem/J3DGraphAnimator/J3DAnimation.h" // IWYU pragma: export #include "JSystem/JUtility/JUTGamePad.h" // IWYU pragma: export +#include "JSystem/J3DGraphBase/J3DSys.h" // IWYU pragma: export +#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" // IWYU pragma: export #include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export +#include "JSystem/JHostIO/JHICommonMem.h" // IWYU pragma: export #include "JSystem/JHostIO/JORReflexible.h" // IWYU pragma: export #include "SSystem/SComponent/c_m3d_g_sph.h" // IWYU pragma: export #include "SSystem/SComponent/c_m3d_g_aab.h" // IWYU pragma: export #include "SSystem/SComponent/c_m3d_g_pla.h" // IWYU pragma: export #include "SSystem/SComponent/c_bg_s_chk.h" // IWYU pragma: export +#include "SSystem/SComponent/c_bg_s_poly_info.h" // IWYU pragma: export +#include "SSystem/SComponent/c_bg_s_gnd_chk.h" // IWYU pragma: export +#include "SSystem/SComponent/c_m3d_g_cyl.h" // IWYU pragma: export +#include "m_Do/m_Do_hostIO.h" // IWYU pragma: export #include "f_op/f_op_actor.h" // IWYU pragma: export #include "d/d_bg_s_gnd_chk.h" // IWYU pragma: export #include "d/d_bg_s_chk.h" // IWYU pragma: export #include "d/d_bg_w.h" // IWYU pragma: export +#include "d/d_drawlist.h" // IWYU pragma: export #include "d/d_com_inf_game.h" // IWYU pragma: export #include "m_Do/m_Do_graphic.h" // IWYU pragma: export #include "JSystem/J2DGraph/J2DOrthoGraph.h" // IWYU pragma: export diff --git a/src/JSystem/J3DGraphAnimator/J3DJointTree.cpp b/src/JSystem/J3DGraphAnimator/J3DJointTree.cpp index 3dc289a73d..f6b54ff587 100644 --- a/src/JSystem/J3DGraphAnimator/J3DJointTree.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DJointTree.cpp @@ -1,5 +1,6 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DJointTree.h" #include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" #include "JSystem/J3DGraphAnimator/J3DShapeTable.h" diff --git a/src/JSystem/J3DGraphAnimator/J3DModel.cpp b/src/JSystem/J3DGraphAnimator/J3DModel.cpp index 8e61611c86..de6e4510bd 100644 --- a/src/JSystem/J3DGraphAnimator/J3DModel.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DModel.cpp @@ -1,9 +1,11 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep +#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" #include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "JSystem/J3DGraphBase/J3DShapeMtx.h" +#include "JSystem/J3DGraphBase/J3DSys.h" #define J3D_ASSERTMSG(LINE, COND, MSG) JUT_ASSERT_MSG(LINE, (COND) != 0, MSG) #define J3D_WARN1(LINE, MSG, ARG1) JUT_WARN(LINE, MSG, ARG1) diff --git a/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp b/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp index 4acd201eb0..bf1987365a 100644 --- a/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp @@ -1,5 +1,6 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h" diff --git a/src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp b/src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp index 558ef9ea24..04430c32f7 100644 --- a/src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DShapeTable.cpp @@ -1,6 +1,7 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/J3DGraphAnimator/J3DShapeTable.h" +#include "JSystem/J3DGraphBase/J3DShape.h" void J3DShapeTable::hide() { u16 shapeNum = mShapeNum; diff --git a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp index acbd78b1b9..a7a4918ddf 100644 --- a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -4,6 +4,7 @@ #include "JSystem/J3DGraphAnimator/J3DModel.h" #include "JSystem/J3DGraphBase/J3DFifo.h" #include "JSystem/J3DGraphBase/J3DMatBlock.h" +#include "JSystem/J3DGraphBase/J3DSys.h" #include "JSystem/J3DGraphBase/J3DTexture.h" u16 J3DShapeMtx::sMtxLoadCache[10]; diff --git a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 54aa056235..9a1149c4be 100644 --- a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -5,6 +5,7 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "JSystem/JSupport/JSupport.h" #include "dolphin/os.h" diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp index 49b0bd5887..b05a5a9148 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -1,5 +1,8 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep +#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" +#include "JSystem/J3DGraphAnimator/J3DJointTree.h" +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/J3DGraphLoader/J3DJointFactory.h" #include "JSystem/J3DGraphLoader/J3DMaterialFactory.h" @@ -10,7 +13,6 @@ #include "JSystem/JUtility/JUTNameTab.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JSupport/JSupport.h" -#include "dolphin/os.h" J3DModelLoader::J3DModelLoader() : mpModelData(NULL), diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp index a1e72e8be1..d3754ad8b4 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp @@ -5,12 +5,12 @@ #include "JSystem/J3DGraphLoader/J3DShapeFactory.h" #include "JSystem/J3DGraphLoader/J3DMaterialFactory.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/J3DGraphAnimator/J3DJoint.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/JSupport/JSupport.h" #include "dolphin/os.h" #include "global.h" - u16 J3DModelLoader::countMaterialNum(const void* stream) { const J3DModelFileData* header = (const J3DModelFileData*)stream; const J3DModelBlock* block = header->mBlocks; diff --git a/src/JSystem/JAudio2/JAUAudioMgr.cpp b/src/JSystem/JAudio2/JAUAudioMgr.cpp index a13ab0fbbc..4e92d1667f 100644 --- a/src/JSystem/JAudio2/JAUAudioMgr.cpp +++ b/src/JSystem/JAudio2/JAUAudioMgr.cpp @@ -11,6 +11,10 @@ // Here to generate JASHeap::__defctor (ctor generated by default arguments) void dummyDefCtor() { JASHeap dummy[20]; + //TODO: ShieldD needs the weak functions this pulls in, but in retail it breaks weak function + // placement +#if VERSION == VERSION_SHIELD_DEBUG JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(NULL, 0) JAUStreamStaticAramMgr_<1>(); streamStaticAramMgr->reserveAram(NULL, 0, 0x14); +#endif } diff --git a/src/Z2AudioLib/Z2AudioMgr.cpp b/src/Z2AudioLib/Z2AudioMgr.cpp index 8a4a3930bd..7a6b1ab498 100644 --- a/src/Z2AudioLib/Z2AudioMgr.cpp +++ b/src/Z2AudioLib/Z2AudioMgr.cpp @@ -1,3 +1,5 @@ +#include "d/dolzel.h" // IWYU pragma: keep + #include "Z2AudioLib/Z2AudioMgr.h" #include "JSystem/JAudio2/JASAiCtrl.h" #include "JSystem/JAudio2/JASDriverIF.h" diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp index 6c1a917716..3aa7e99950 100644 --- a/src/Z2AudioLib/Z2SceneMgr.cpp +++ b/src/Z2AudioLib/Z2SceneMgr.cpp @@ -1,3 +1,5 @@ +#include "d/dolzel.h" // IWYU pragma: keep + #include "JSystem/JAudio2/JASBasicWaveBank.h" #include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUSoundTable.h" diff --git a/src/d/actor/d_a_npc_bouS.cpp b/src/d/actor/d_a_npc_bouS.cpp index 7bc2432317..4fa1b66694 100644 --- a/src/d/actor/d_a_npc_bouS.cpp +++ b/src/d/actor/d_a_npc_bouS.cpp @@ -953,6 +953,23 @@ void daNpcBouS_c::lookat() { mLookat.calc(this, mdl_p->getBaseTRMtx(), lookatAngle, i_snap, angle_delta, FALSE); } +BOOL daNpcBouS_c::chkFindPlayer() { + BOOL inArea = FALSE; + if (mActorMngrs[0].getActorP() == NULL) { + inArea = chkPlayerInSpeakArea(this); + } else { + inArea = chkPlayerInTalkArea(this); + } + + if (inArea) { + mActorMngrs[0].entry(daPy_getPlayerActorClass()); + } else { + mActorMngrs[0].remove(); + } + + return inArea; +} + BOOL daNpcBouS_c::step(s16 i_turnTargetAngle, int param_2) { if (mTurnMode == 0) { if (param_2 != 0) { @@ -1594,7 +1611,7 @@ int daNpcBouS_c::drawDbgInfo() { return 0; } -void daNpcBouS_c::drawOtherMdls() {} +inline void daNpcBouS_c::drawOtherMdls() {} AUDIO_INSTANCES; diff --git a/src/d/actor/d_a_obj_prop.cpp b/src/d/actor/d_a_obj_prop.cpp index 166752ad62..fc2b773538 100644 --- a/src/d/actor/d_a_obj_prop.cpp +++ b/src/d/actor/d_a_obj_prop.cpp @@ -20,9 +20,8 @@ daObjProp_c::~daObjProp_c() { dComIfG_resDelete(this, l_arcName); } -static const u32 BMD_IDX[] = {3, 4}; - bool daObjProp_c::createHeap() { + static const u32 BMD_IDX[] = {3, 4}; u32 nameArg = getNameArg_0(); u32 bmd = BMD_IDX[nameArg]; mpModel = mDoExt_J3DModel__create((J3DModelData*)dComIfG_getObjectRes(l_arcName, bmd), 0x80000, @@ -60,9 +59,8 @@ int daObjProp_c::draw() { return 1; } -static const s16 ADD_ANGLE[] = {0x1800, -0x1800}; - int daObjProp_c::execute() { + static const s16 ADD_ANGLE[] = {0x1800, -0x1800}; shape_angle.y += ADD_ANGLE[mArg]; setModelMtx(); return 1;