From a2e538036f55570f8b9edf5f11c8402a9baaae69 Mon Sep 17 00:00:00 2001 From: Jcw87 Date: Thu, 21 Dec 2023 08:51:00 -0800 Subject: [PATCH 1/2] fix inline/member name --- include/JSystem/J3DGraphAnimator/J3DJointTree.h | 7 ++----- include/JSystem/J3DGraphAnimator/J3DModelData.h | 2 +- include/JSystem/J3DGraphLoader/J3DModelLoader.h | 2 +- src/JSystem/J3DGraphAnimator/J3DModelData.cpp | 2 +- src/JSystem/J3DGraphLoader/J3DModelLoader.cpp | 4 ++-- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index 32f41941a..d1ad99b12 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -40,7 +40,7 @@ public: J3DDrawMtxData * getDrawMtxData() { return &mDrawMtxData; } u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; } u8 getWEvlpMixMtxNum(u16 idx) const { return mWEvlpMixMtxNum[idx]; } - u16 * getWEvlpMixIndex() const { return mWEvlpMixIndex; } + u16 * getWEvlpMixMtxIndex() const { return mWEvlpMixMtxIndex; } f32 * getWEvlpMixWeight() { return mWEvlpMixWeight; } u16 getDrawFullWgtMtxNum() const { return mDrawMtxData.mDrawFullWgtMtxNum; } u16 getJointNum() const { return mJointNum; } @@ -60,9 +60,6 @@ public: bool checkFlag(u32 flag) { return mFlags & flag; } void setFlag(u32 flag) { mFlags = flag; } - // TODO - void getWEvlpMixMtxIndex() {} - private: friend class J3DModelLoader; @@ -75,7 +72,7 @@ private: /* 0x1C */ J3DJoint** mJointNodePointer; /* 0x20 */ u16 mWEvlpMtxNum; /* 0x24 */ u8* mWEvlpMixMtxNum; - /* 0x28 */ u16* mWEvlpMixIndex; + /* 0x28 */ u16* mWEvlpMixMtxIndex; /* 0x2C */ f32* mWEvlpMixWeight; /* 0x30 */ Mtx* mInvJointMtx; /* 0x34 */ J3DDrawMtxData mDrawMtxData; diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 1673d8808..bd2e5974e 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -65,7 +65,7 @@ public: bool isLocked() { return mMaterialTable.isLocked(); } u16 getDrawFullWgtMtxNum() const { return mJointTree.getDrawFullWgtMtxNum(); } u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); } - u16* getWEvlpMixMtxIndex() { return mJointTree.getWEvlpMixIndex(); } + u16* getWEvlpMixMtxIndex() { return mJointTree.getWEvlpMixMtxIndex(); } f32* getWEvlpMixWeight() { return mJointTree.getWEvlpMixWeight(); } u8 getWEvlpMixMtxNum(u16 idx) const { return mJointTree.getWEvlpMixMtxNum(idx); } u32 getModelDataType() const { return mJointTree.getModelDataType(); } diff --git a/include/JSystem/J3DGraphLoader/J3DModelLoader.h b/include/JSystem/J3DGraphLoader/J3DModelLoader.h index 3bdf64994..90841ee65 100644 --- a/include/JSystem/J3DGraphLoader/J3DModelLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DModelLoader.h @@ -45,7 +45,7 @@ struct J3DVertexBlock : public J3DModelBlock { struct J3DEnvelopBlock : public J3DModelBlock { /* 0x08 */ u16 mWEvlpMtxNum; /* 0x0C */ void* mpWEvlpMixMtxNum; - /* 0x10 */ void* mpWEvlpMixIndex; + /* 0x10 */ void* mpWEvlpMixMtxIndex; /* 0x14 */ void* mpWEvlpMixWeight; /* 0x18 */ void* mpInvJointMtx; }; // Size: 0x1C diff --git a/src/JSystem/J3DGraphAnimator/J3DModelData.cpp b/src/JSystem/J3DGraphAnimator/J3DModelData.cpp index 46191fc5b..002275c88 100644 --- a/src/JSystem/J3DGraphAnimator/J3DModelData.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DModelData.cpp @@ -20,7 +20,7 @@ void J3DJointTree::clear() { field_0x40 = NULL; mWEvlpMtxNum = 0; mWEvlpMixMtxNum = NULL; - mWEvlpMixIndex = NULL; + mWEvlpMixMtxIndex = NULL; mWEvlpMixWeight = NULL; mInvJointMtx = NULL; mJointName = NULL; diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp index 1f189aaf7..63e95ac63 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -339,8 +339,8 @@ void J3DModelLoader::readEnvelop(const J3DEnvelopBlock* i_block) { mpModelData->getJointTree().mWEvlpMtxNum = i_block->mWEvlpMtxNum; mpModelData->getJointTree().mWEvlpMixMtxNum = JSUConvertOffsetToPtr(i_block, i_block->mpWEvlpMixMtxNum); - mpModelData->getJointTree().mWEvlpMixIndex = - JSUConvertOffsetToPtr(i_block, i_block->mpWEvlpMixIndex); + mpModelData->getJointTree().mWEvlpMixMtxIndex = + JSUConvertOffsetToPtr(i_block, i_block->mpWEvlpMixMtxIndex); mpModelData->getJointTree().mWEvlpMixWeight = JSUConvertOffsetToPtr(i_block, i_block->mpWEvlpMixWeight); mpModelData->getJointTree().mInvJointMtx = From 22fb9417a11ae872236c341901a7b5b595ff1eea Mon Sep 17 00:00:00 2001 From: Jcw87 Date: Sat, 23 Dec 2023 00:51:03 -0800 Subject: [PATCH 2/2] J3DAnmLoader --- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 302 +++++++--- include/JSystem/J3DGraphLoader/J3DAnmLoader.h | 12 +- src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 519 ++++++++++++++++-- 3 files changed, 698 insertions(+), 135 deletions(-) diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index bd5da43a6..4e17cc6f6 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -79,11 +79,24 @@ struct J3DAnmKRegKeyTable { u8 padding[3]; }; // Size = 0x1C +struct J3DAnmClusterFullTable { + u16 mMaxFrame; + u16 mOffset; +}; + +struct J3DAnmClusterKeyTable; + +// same as J3DModelBlock? struct J3DAnmDataBlockHeader { // actual name unknown /* 0x0 */ u32 mType; /* 0x4 */ u32 mNextOffset; + + const J3DAnmDataBlockHeader* getNext() const { + return reinterpret_cast(reinterpret_cast(this) + mNextOffset); + } }; // Size = 0x8 +// same as J3DModelFileData? struct J3DAnmDataHeader { // actual name unknown /* 0x00 */ u32 mMagic; /* 0x04 */ u32 mType; @@ -278,6 +291,37 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */ STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34); +struct J3DAnmClusterFullData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ s32 field_0xc; + /* 0x10 */ s32 mTableOffset; + /* 0x14 */ s32 mWeightOffset; +}; + +struct J3DAnmTransformKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 field_0xc; + /* 0x10 */ int field_0x10; + /* 0x14 */ s32 mTableOffset; + /* 0x18 */ s32 field_0x18; + /* 0x1c */ s32 field_0x1c; + /* 0x20 */ s32 field_0x20; +}; + +struct J3DAnmClusterKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ s32 field_0xc; + /* 0x10 */ s32 mTableOffset; + /* 0x14 */ s32 mWeightOffset; +}; + class J3DAnmBase { public: J3DAnmBase(s16 i_frameMax) { @@ -291,38 +335,42 @@ public: s16 getFrameMax() const { return mFrameMax; } f32 getFrame() const { return mFrame; } void setFrame(f32 frame) { mFrame = frame; } + s32 getKind() const { return mKind; } -private: +protected: /* 0x4 */ u8 mAttribute; /* 0x5 */ u8 field_0x5; /* 0x6 */ s16 mFrameMax; /* 0x8 */ f32 mFrame; -}; // Size: 0xC + /* 0xC */ s32 mKind; +}; // Size: 0x10 class J3DAnmTransform : public J3DAnmBase { public: J3DAnmTransform(s16 i_frameMax, f32* p1, s16* p2, f32* p3) : J3DAnmBase(i_frameMax) { - field_0x10 = p2; - field_0x14 = p3; - field_0x18 = 0; - field_0xc = p1; + field_0x10 = p1; + field_0x14 = p2; + field_0x18 = p3; + mKind = 0; } virtual ~J3DAnmTransform() {} virtual void getTransform(u16, J3DTransformInfo*) const = 0; -private: - /* 0x0C */ f32* field_0xc; - /* 0x10 */ s16* field_0x10; - /* 0x14 */ f32* field_0x14; - /* 0x18 */ s32 field_0x18; - /* 0x1C */ s16 field_0x1a; - /* 0x1E */ s16 field_0x1c; - /* 0x20 */ s16 field_0x1e; -}; // Size: 0x22 +protected: + /* 0x10 */ f32* field_0x10; + /* 0x14 */ s16* field_0x14; + /* 0x18 */ f32* field_0x18; + /* 0x1C */ s16 field_0x1c; + /* 0x1E */ s16 field_0x1e; + /* 0x20 */ u16 field_0x20; + /* 0x22 */ u16 field_0x22; +}; // Size: 0x24 class J3DAnmTransformKey : public J3DAnmTransform { public: + friend class J3DAnmKeyLoader_v15; + J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) { field_0x24 = 0; field_0x28 = 0; @@ -335,17 +383,23 @@ public: private: /* 0x24 */ int field_0x24; - /* 0x28 */ int field_0x28; + /* 0x28 */ J3DAnmTransformKeyTable* field_0x28; }; // Size: 0x2C class J3DAnmTransformFull : public J3DAnmTransform { public: + friend class J3DAnmFullLoader_v15; + + J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { + field_0x24 = NULL; + } + virtual ~J3DAnmTransformFull(); virtual void getTransform(u16, J3DTransformInfo*) const; private: - /* 0x20 */ int field_0x20; -}; // Size: 0x24 + /* 0x24 */ J3DAnmTransformFullTable* field_0x24; +}; // Size: 0x28 struct J3DTextureSRTInfo; class J3DModelData; @@ -353,13 +407,34 @@ class J3DMaterialTable; class J3DAnmTextureSRTKey : public J3DAnmBase { public: - J3DAnmTextureSRTKey(); + friend class J3DAnmKeyLoader_v15; + + J3DAnmTextureSRTKey() : J3DAnmBase(0) { + mDecShift = 0; + mTransNum = 0; + mRotNum = 0; + mScaleNum = 0; + mTrackNum = 0; + mAnmTable = NULL; + mTransData = NULL; + mScaleData = NULL; + mRotData = NULL; + field_0x50 = 0; + field_0x4e = 0; + field_0x4c = 0; + mPostTrackNum = 0; + field_0x64 = NULL; + field_0x5c = NULL; + field_0x54 = NULL; + field_0x58 = NULL; + mTexMtxCalcType = 0; + mKind = 4; + } void calcTransform(f32, u16, J3DTextureSRTInfo*) const; void searchUpdateMaterialID(J3DMaterialTable*); void searchUpdateMaterialID(J3DModelData*); virtual ~J3DAnmTextureSRTKey(); - virtual s32 getKind() const; void getTransform(u16 param_0, J3DTextureSRTInfo* pSRTInfo) const { calcTransform(getFrame(), param_0, pSRTInfo); @@ -379,7 +454,6 @@ public: Vec& getSRTCenter(u16 idx) const { return mSRTCenter[idx]; } private: - /* 0x0C */ void* field_0xc; /* 0x10 */ int mDecShift; /* 0x14 */ u16 mTrackNum; /* 0x18 */ void* mAnmTable; @@ -387,19 +461,20 @@ private: /* 0x1E */ u16 mRotNum; /* 0x20 */ u16 mTransNum; /* 0x24 */ f32* mScaleData; - /* 0x28 */ f32* mRotData; + /* 0x28 */ s16* mRotData; /* 0x2C */ f32* mTransData; /* 0x30 */ u8* mUpdateTexMtxID; /* 0x34 */ u16* mUpdateMaterialID; /* 0x38 */ JUTNameTab mUpdateMaterialName; /* 0x48 */ Vec* mSRTCenter; - /* 0x4C */ void * field_0x4c; - /* 0x50 */ void * mPostAnmTable; + /* 0x4C */ short field_0x4c; + /* 0x4E */ short field_0x4e; + /* 0x50 */ short field_0x50; /* 0x54 */ void * field_0x54; /* 0x58 */ void * field_0x58; /* 0x5C */ void * field_0x5c; /* 0x60 */ u16 mPostTrackNum; - /* 0x64 */ void * field_0x60; + /* 0x64 */ void * field_0x64; /* 0x68 */ u8* mPostUpdateTexMtxID; /* 0x6C */ u16* mPostUpdateMaterialID; /* 0x70 */ JUTNameTab mPostUpdateMaterialName; @@ -411,25 +486,39 @@ STATIC_ASSERT(sizeof(J3DAnmTextureSRTKey) == 0x88); class J3DAnmVisibilityFull : public J3DAnmBase { public: - J3DAnmVisibilityFull(); + friend class J3DAnmFullLoader_v15; + + J3DAnmVisibilityFull() : J3DAnmBase(0) { + mUpdateMaterialNum = 0; + mAnmTable = NULL; + field_0x12 = 0; + mVisibility = NULL; + mKind = 6; + } void getVisibility(u16, u8*) const; - virtual ~J3DAnmVisibilityFull(); - virtual s32 getKind() const; + virtual ~J3DAnmVisibilityFull() {} J3DAnmVisibilityFullTable * getAnmTable() const { return mAnmTable; } private: - /* 0x0C */ void* field_0xc; /* 0x10 */ u16 mUpdateMaterialNum; + /* 0x12 */ u16 field_0x12; /* 0x14 */ J3DAnmVisibilityFullTable * mAnmTable; /* 0x18 */ u8* mVisibility; - /* 0x1C */ JUTNameTab field_0x1c; -}; // Size: 0x2C +}; // Size: 0x1C class J3DAnmTexPattern : public J3DAnmBase { public: - J3DAnmTexPattern(); + friend class J3DAnmFullLoader_v15; + + J3DAnmTexPattern() : J3DAnmBase(0) { + mTextureIndex = NULL; + mAnmTable = NULL; + mKind = 2; + mUpdateMaterialNum = 0; + mUpdateMaterialID = NULL; + } void getTexNo(u16, u16*) const; void searchUpdateMaterialID(J3DMaterialTable*); void searchUpdateMaterialID(J3DModelData*); @@ -441,10 +530,8 @@ public: J3DAnmTexPatternFullTable * getAnmTable() const { return mAnmTable; } virtual ~J3DAnmTexPattern(); - virtual s32 getKind() const; private: - /* 0x0C */ void* field_0xc; /* 0x10 */ u16* mTextureIndex; /* 0x14 */ J3DAnmTexPatternFullTable* mAnmTable; /* 0x18 */ u16 field_0x18; @@ -455,14 +542,37 @@ private: class J3DAnmTevRegKey : public J3DAnmBase { public: - J3DAnmTevRegKey(); + friend class J3DAnmKeyLoader_v15; + + J3DAnmTevRegKey() : J3DAnmBase(0) { + mKRegUpdateMaterialNum = 0; + mCRegUpdateMaterialNum = 0; + mCRegDataCount[3] = 0; + mCRegDataCount[2] = 0; + mCRegDataCount[1] = 0; + mCRegDataCount[0] = 0; + mKRegDataCount[3] = 0; + mKRegDataCount[2] = 0; + mKRegDataCount[1] = 0; + mKRegDataCount[0] = 0; + mKRegUpdateMaterialID = NULL; + mCRegUpdateMaterialID = NULL; + mAnmCRegData[3] = NULL; + mAnmCRegData[2] = NULL; + mAnmCRegData[1] = NULL; + mAnmCRegData[0] = NULL; + mAnmKRegData[3] = NULL; + mAnmKRegData[2] = NULL; + mAnmKRegData[1] = NULL; + mAnmKRegData[0] = NULL; + mKind = 5; + } void getTevColorReg(u16, GXColorS10*) const; void getTevKonstReg(u16, GXColor*) const; void searchUpdateMaterialID(J3DMaterialTable*); void searchUpdateMaterialID(J3DModelData*); virtual ~J3DAnmTevRegKey() {} - virtual s32 getKind() const; u16 getCRegUpdateMaterialNum() const { return mCRegUpdateMaterialNum; } u16 getKRegUpdateMaterialNum() const { return mKRegUpdateMaterialNum; } @@ -477,7 +587,6 @@ public: J3DAnmKRegKeyTable * getAnmKRegKeyTable() const { return mAnmKRegKeyTable; } private: - /* 0x0C */ u32 field_0x0c; /* 0x10 */ u16 mCRegUpdateMaterialNum; /* 0x12 */ u16 mKRegUpdateMaterialNum; /* 0x14 */ u16 mCRegDataCount[4]; @@ -494,24 +603,31 @@ private: class J3DAnmColor : public J3DAnmBase { public: - J3DAnmColor(); + J3DAnmColor() : J3DAnmBase(0) { + field_0x16 = 0; + field_0x14 = 0; + field_0x12 = 0; + field_0x10 = 0; + mUpdateMaterialNum = 0; + mUpdateMaterialID = 0; + mKind = 1; + } void searchUpdateMaterialID(J3DMaterialTable*); void searchUpdateMaterialID(J3DModelData*); virtual ~J3DAnmColor(); virtual void getColor(u16, GXColor*) const; - s32 getUpdateMaterialNum() const { return mUpdateMaterialNum; } + u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; } u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; } JUTNameTab * getUpdateMaterialName() { return &mUpdateMaterialName; } -private: - /* 0x0C */ u16 field_0xc; - /* 0x0E */ u16 field_0xe; +protected: /* 0x10 */ u16 field_0x10; /* 0x12 */ u16 field_0x12; - /* 0x14 */ u32 field_0x14; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; /* 0x18 */ u16 mUpdateMaterialNum; /* 0x1C */ u16* mUpdateMaterialID; /* 0x20 */ JUTNameTab mUpdateMaterialName; @@ -519,26 +635,40 @@ private: class J3DAnmColorKey : public J3DAnmColor { public: - J3DAnmColorKey(); + friend class J3DAnmKeyLoader_v15; + + J3DAnmColorKey() { + field_0x30 = 0; + field_0x34 = 0; + field_0x38 = 0; + field_0x3c = 0; + field_0x40 = 0; + } virtual ~J3DAnmColorKey(); - virtual s32 getKind() const; virtual void getColor(u16, GXColor*) const; private: - /* 0x2C */ int field_0x2c; - /* 0x30 */ int field_0x30; - /* 0x34 */ int field_0x34; - /* 0x38 */ int field_0x38; - /* 0x3C */ int field_0x3c; + /* 0x30 */ s16* field_0x30; + /* 0x34 */ s16* field_0x34; + /* 0x38 */ s16* field_0x38; + /* 0x3C */ s16* field_0x3c; + /* 0x40 */ J3DAnmColorKeyTable* field_0x40; }; class J3DAnmColorFull : public J3DAnmColor { public: - J3DAnmColorFull(); + friend class J3DAnmFullLoader_v15; + + J3DAnmColorFull() { + mColorR = NULL; + mColorG = NULL; + mColorB = NULL; + mColorA = NULL; + mAnmTable = NULL; + } virtual ~J3DAnmColorFull(); - virtual s32 getKind() const; virtual void getColor(u16, GXColor*) const; J3DAnmColorFullTable * getAnmTable() const { return mAnmTable; } @@ -553,71 +683,97 @@ private: class J3DAnmVtxColor : public J3DAnmBase { public: - J3DAnmVtxColor(); + J3DAnmVtxColor() : J3DAnmBase(0) { + mKind = 7; + for (int i = 0; i < 2; i++) { + mAnmTableNum[i] = 0; + } + for (int i = 0; i < 2; i++) { + mAnmVtxColorIndexData[i] = 0; + } + } virtual ~J3DAnmVtxColor(); - virtual s32 getKind() const; virtual void getColor(u8, u16, GXColor*) const {} private: - /* 0x0C */ s16 mAnmTableNum[2]; - /* 0x10 */ int mAnmVtxColorIndexData[2]; -}; // Size: 0x18 + /* 0x10 */ s16 mAnmTableNum[2]; + /* 0x14 */ int mAnmVtxColorIndexData[2]; +}; // Size: 0x1C class J3DAnmVtxColorKey : public J3DAnmVtxColor { public: - J3DAnmVtxColorKey(); + J3DAnmVtxColorKey() { + for (int i = 0; i < 2; i++) { + field_0x1c[i] = 0; + } + } virtual ~J3DAnmVtxColorKey(); - virtual s32 getKind() const; virtual void getColor(u8, u16, GXColor*) const; private: - /* 0x18 */ int field_0x18[2]; + /* 0x1C */ int field_0x1c[2]; + /* 0x24 */ u8 field_0x24[0x34 - 0x24]; }; class J3DAnmVtxColorFull : public J3DAnmVtxColor { - J3DAnmVtxColorFull(); +public: + J3DAnmVtxColorFull() { + for (int i = 0; i < 2; i++) { + field_0x1c[i] = 0; + } + } virtual ~J3DAnmVtxColorFull(); - virtual s32 getKind() const; virtual void getColor(u8, u16, GXColor*) const; private: - /* 0x18 */ int field_0x18[2]; + /* 0x1C */ int field_0x1c[2]; + /* 0x24 */ u8 field_0x24[0x34 - 0x24]; }; class J3DAnmCluster : public J3DAnmBase { public: + J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(0) { + mWeight = param_2; + mKind = param_1; + } virtual ~J3DAnmCluster() {} - virtual s32 getKind() const; virtual f32 getWeight(u16) const { return 1.0f; } -private: - /* 0x0C */ f32* field_0xc; -}; // Size: 0x10 +protected: + /* 0x10 */ f32* mWeight; +}; // Size: 0x14 class J3DAnmClusterFull : public J3DAnmCluster { public: + friend class J3DAnmFullLoader_v15; + + J3DAnmClusterFull() : J3DAnmCluster(3, 0) { + mAnmTable = NULL; + } virtual ~J3DAnmClusterFull() {} - virtual s32 getKind() const; virtual f32 getWeight(u16) const; - J3DAnmVisibilityFullTable * getAnmTable() const { return mAnmTable; } + J3DAnmClusterFullTable * getAnmTable() const { return mAnmTable; } private: - /* 0x10 */ f32 * mWeight; - /* 0x14 */ J3DAnmVisibilityFullTable * mAnmTable; + /* 0x14 */ J3DAnmClusterFullTable * mAnmTable; }; class J3DAnmClusterKey : public J3DAnmCluster { public: + friend class J3DAnmKeyLoader_v15; + + J3DAnmClusterKey() : J3DAnmCluster(3, NULL) { + field_0x14 = 0; + } virtual ~J3DAnmClusterKey() {} - virtual s32 getKind() const; virtual f32 getWeight(u16) const; private: - /* 0x10 */ int field_0x10; + /* 0x14 */ J3DAnmClusterKeyTable* field_0x14; }; class J3DFrameCtrl { diff --git a/include/JSystem/J3DGraphLoader/J3DAnmLoader.h b/include/JSystem/J3DGraphLoader/J3DAnmLoader.h index 187672011..a97bf9953 100644 --- a/include/JSystem/J3DGraphLoader/J3DAnmLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DAnmLoader.h @@ -32,13 +32,13 @@ class J3DAnmVtxColorKey; class J3DAnmVtxColorKeyData; struct J3DAnmLoaderDataBase { - static void* load(const void*); + static J3DAnmBase* load(const void*); static void setResource(J3DAnmBase*, const void*); }; class J3DAnmLoader { public: - virtual void* load(const void*) = 0; + virtual J3DAnmBase* load(const void*) = 0; virtual void setResource(J3DAnmBase*, const void*) = 0; virtual ~J3DAnmLoader() {} }; @@ -47,7 +47,7 @@ class J3DAnmFullLoader_v15 : public J3DAnmLoader { public: J3DAnmFullLoader_v15(); ~J3DAnmFullLoader_v15(); - void* load(const void*); + J3DAnmBase* load(const void*); void setResource(J3DAnmBase*, const void*); void readAnmTransform(const J3DAnmTransformFullData*); void setAnmTransform(J3DAnmTransformFull*, const J3DAnmTransformFullData*); @@ -62,14 +62,14 @@ public: void readAnmVtxColor(const J3DAnmVtxColorFullData*); void setAnmVtxColor(J3DAnmVtxColorFull*, const J3DAnmVtxColorFullData*); - void* field_0x4; + J3DAnmBase* mAnm; }; class J3DAnmKeyLoader_v15 : public J3DAnmLoader { public: J3DAnmKeyLoader_v15(); ~J3DAnmKeyLoader_v15(); - void* load(const void*); + J3DAnmBase* load(const void*); void setResource(J3DAnmBase*, const void*); void readAnmTransform(const J3DAnmTransformKeyData*); void setAnmTransform(J3DAnmTransformKey*, const J3DAnmTransformKeyData*); @@ -84,7 +84,7 @@ public: void readAnmVtxColor(const J3DAnmVtxColorKeyData*); void setAnmVtxColor(J3DAnmVtxColorKey*, const J3DAnmVtxColorKeyData*); - void* field_0x4; + J3DAnmBase* mAnm; }; #endif /* J3DANMLOADER_H */ diff --git a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 309896b10..fc6311ac6 100644 --- a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -5,15 +5,162 @@ #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" #include "JSystem/J3DGraphAnimator/J3DAnimation.h" +#include "JSystem/JSupport/JSupport.h" +#include "dolphin/os/OS.h" /* 802FEDA0-802FF6C8 .text load__20J3DAnmLoaderDataBaseFPCv */ -void* J3DAnmLoaderDataBase::load(const void*) { - /* Nonmatching */ +J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data) { + if (!i_data) { + return NULL; + } + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)i_data; + if (header->mMagic == 'J3D1') { + switch (header->mType) { + case 'bck1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTransformKey(); + return loader.load(i_data); + } + case 'bpk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmColorKey(); + return loader.load(i_data); + } + case 'blk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmClusterKey(); + return loader.load(i_data); + } + case 'btk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTextureSRTKey(); + return loader.load(i_data); + } + case 'brk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTevRegKey(); + return loader.load(i_data); + } + case 'bxk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmVtxColorKey(); + return loader.load(i_data); + } + case 'bca1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmTransformFull(); + return loader.load(i_data); + } + case 'bpa1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmColorFull(); + return loader.load(i_data); + } + case 'btp1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmTexPattern(); + return loader.load(i_data); + } + case 'bva1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmVisibilityFull(); + return loader.load(i_data); + } + case 'bla1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmClusterFull(); + return loader.load(i_data); + } + case 'bxa1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmVtxColorFull(); + return loader.load(i_data); + } + default: + OSReport("J3DAnmLoader: this is not a J3D Binary.\n"); + return NULL; + } + } + return NULL; } /* 802FF6C8-802FF9EC .text setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */ -void J3DAnmLoaderDataBase::setResource(J3DAnmBase*, const void*) { - /* Nonmatching */ +void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) { + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; + if (!header) { + return; + } + if (header->mMagic != 'J3D1') { + return; + } + switch (header->mType) { + case 'bck1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bpk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'blk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'btk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'brk1': { + J3DAnmKeyLoader_v15 loader; + if (param_1->getKind() == 5) { + loader.setResource(param_1, param_2); + } + break; + } + case 'bxk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bca1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bpa1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'btp1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bla1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bxa1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bva1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + default: { + OSReport("J3DAnmLoader: this is not a J3D Binary.\n"); + break; + } + } } /* 802FF9EC-802FFA08 .text __ct__20J3DAnmFullLoader_v15Fv */ @@ -29,68 +176,170 @@ J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() {} J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {} /* 802FFADC-802FFC28 .text load__20J3DAnmFullLoader_v15FPCv */ -void* J3DAnmFullLoader_v15::load(const void*) { - /* Nonmatching */ +J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_1; + const J3DAnmDataBlockHeader* block = &header->mFirst; + for (int i = 0; i < header->mCount; i++) { + switch (block->mType) { + case 'ANF1': + readAnmTransform((J3DAnmTransformFullData*)block); + break; + case 'PAF1': + readAnmColor((J3DAnmColorFullData*)block); + break; + case 'TPT1': + readAnmTexPattern((J3DAnmTexPatternFullData*)block); + break; + case 'CLF1': + readAnmCluster((J3DAnmClusterFullData*)block); + break; + case 'VAF1': + readAnmVisibility((J3DAnmVisibilityFullData*)block); + break; + case 'VCF1': + readAnmVtxColor((J3DAnmVtxColorFullData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } + return mAnm; } /* 802FFC28-802FFDD4 .text setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */ -void J3DAnmFullLoader_v15::setResource(J3DAnmBase*, const void*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; + const J3DAnmDataBlockHeader* block = &header->mFirst; + for (int i = 0; i < header->mCount; i++) { + switch (block->mType) { + case 'ANF1': + if (param_1->getKind() == 0) { + setAnmTransform((J3DAnmTransformFull*)param_1, (const J3DAnmTransformFullData*)block); + } + break; + case 'PAF1': + if (param_1->getKind() == 1) { + setAnmColor((J3DAnmColorFull*)param_1, (const J3DAnmColorFullData*)block); + } + break; + case 'TPT1': + if (param_1->getKind() == 2) { + setAnmTexPattern((J3DAnmTexPattern*)param_1, (const J3DAnmTexPatternFullData*)block); + } + break; + case 'CLF1': + if (param_1->getKind() == 3) { + setAnmCluster((J3DAnmClusterFull*)param_1, (const J3DAnmClusterFullData*)block); + } + break; + case 'VAF1': + if (param_1->getKind() == 6) { + setAnmVisibility((J3DAnmVisibilityFull*)param_1, (const J3DAnmVisibilityFullData*)block); + } + break; + case 'VCF1': + if (param_1->getKind() == 7) { + setAnmVtxColor((J3DAnmVtxColorFull*)param_1, (const J3DAnmVtxColorFullData*)block); + } + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } } /* 802FFDD4-802FFDFC .text readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ -void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* param_1) { + setAnmTransform((J3DAnmTransformFull*)mAnm, param_1); } /* 802FFDFC-802FFE90 .text setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData */ -void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull*, const J3DAnmTransformFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_1, const J3DAnmTransformFullData* param_2) { + param_1->field_0x22 = param_2->field_0xc; + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->field_0x24 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->field_0x10 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mScaleValOffset); + param_1->field_0x14 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRotValOffset); + param_1->field_0x18 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTransValOffset); } /* 802FFE90-802FFEB8 .text readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData */ -void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* param_1) { + setAnmColor((J3DAnmColorFull*)mAnm, param_1); } /* 802FFEB8-802FFF84 .text setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData */ -void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull*, const J3DAnmColorFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1, const J3DAnmColorFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; + param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mColorR = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRValuesOffset); + param_1->mColorG = JSUConvertOffsetToPtr(param_2, (void*)param_2->mGValuesOffset); + param_1->mColorB = JSUConvertOffsetToPtr(param_2, (void*)param_2->mBValuesOffset); + param_1->mColorA = JSUConvertOffsetToPtr(param_2, (void*)param_2->mAValuesOffset); + param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); } /* 802FFF84-802FFFAC .text readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ -void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* param_1) { + setAnmTexPattern((J3DAnmTexPattern*)mAnm, param_1); } /* 802FFFAC-80300050 .text setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData */ -void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern*, const J3DAnmTexPatternFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_1, const J3DAnmTexPatternFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->field_0xc; + param_1->field_0x18 = param_2->field_0xe; + param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mTextureIndex = JSUConvertOffsetToPtr(param_2, (void*)param_2->mValuesOffset); + param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); } /* 80300050-80300078 .text readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ -void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* param_1) { + setAnmVisibility((J3DAnmVisibilityFull*)mAnm, param_1); } /* 80300078-803000F4 .text setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ -void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull*, const J3DAnmVisibilityFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1, const J3DAnmVisibilityFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->field_0xc; + param_1->field_0x12 = param_2->field_0xe; + param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mVisibility = JSUConvertOffsetToPtr(param_2, (void*)param_2->mValuesOffset); } /* 803000F4-8030011C .text readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData */ -void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* param_1) { + setAnmCluster((J3DAnmClusterFull*)mAnm, param_1); } /* 8030011C-80300188 .text setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData */ -void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull*, const J3DAnmClusterFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* param_1, const J3DAnmClusterFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mWeight = JSUConvertOffsetToPtr(param_2, (void*)param_2->mWeightOffset); } /* 80300188-803001B0 .text readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ -void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData*) { - /* Nonmatching */ +void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1) { + setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, param_1); } /* 803001B0-80300318 .text setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ @@ -99,68 +348,226 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull*, const J3DAnmVtxCo } /* 80300318-80300464 .text load__19J3DAnmKeyLoader_v15FPCv */ -void* J3DAnmKeyLoader_v15::load(const void*) { - /* Nonmatching */ +J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_1; + const J3DAnmDataBlockHeader* block = &header->mFirst; + for (int i = 0; i < header->mCount; i++) { + switch (block->mType) { + case 'ANK1': + readAnmTransform((J3DAnmTransformKeyData*)block); + break; + case 'PAK1': + readAnmColor((J3DAnmColorKeyData*)block); + break; + case 'CLK1': + readAnmCluster((J3DAnmClusterKeyData*)block); + break; + case 'TTK1': + readAnmTextureSRT((J3DAnmTextureSRTKeyData*)block); + break; + case 'TRK1': + readAnmTevReg((J3DAnmTevRegKeyData*)block); + break; + case 'VCK1': + readAnmVtxColor((J3DAnmVtxColorKeyData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } + return mAnm; } /* 80300464-80300610 .text setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */ -void J3DAnmKeyLoader_v15::setResource(J3DAnmBase*, const void*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { + const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; + const J3DAnmDataBlockHeader* block = &header->mFirst; + for (int i = 0; i < header->mCount; i++) { + switch (block->mType) { + case 'ANK1': + if (param_1->getKind() == 0) { + setAnmTransform((J3DAnmTransformKey*)param_1, (const J3DAnmTransformKeyData*)block); + } + break; + case 'PAK1': + if (param_1->getKind() == 1) { + setAnmColor((J3DAnmColorKey*)param_1, (const J3DAnmColorKeyData*)block); + } + break; + case 'CLK1': + if (param_1->getKind() == 3) { + setAnmCluster((J3DAnmClusterKey*)param_1, (const J3DAnmClusterKeyData*)block); + } + break; + case 'TTK1': + if (param_1->getKind() == 4) { + setAnmTextureSRT((J3DAnmTextureSRTKey*)param_1, (const J3DAnmTextureSRTKeyData*)block); + } + break; + case 'TRK1': + if (param_1->getKind() == 5) { + setAnmTevReg((J3DAnmTevRegKey*)param_1, (const J3DAnmTevRegKeyData*)block); + } + break; + case 'VCK1': + if (param_1->getKind() == 7) { + setAnmVtxColor((J3DAnmVtxColorKey*)param_1, (const J3DAnmVtxColorKeyData*)block); + } + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } } /* 80300610-80300638 .text readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ -void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* param_1) { + setAnmTransform((J3DAnmTransformKey*)mAnm, param_1); } /* 80300638-803006D4 .text setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData */ -void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey*, const J3DAnmTransformKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_1, const J3DAnmTransformKeyData* param_2) { + param_1->field_0x22 = param_2->field_0xc; + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->field_0x24 = param_2->field_0x9; + param_1->mFrame = 0.0f; + param_1->field_0x28 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->field_0x10 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x18); + param_1->field_0x14 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x1c); + param_1->field_0x18 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x20); } /* 803006D4-803006FC .text readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ -void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* param_1) { + setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, param_1); } /* 803006FC-803008D8 .text setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ -void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey*, const J3DAnmTextureSRTKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1, const J3DAnmTextureSRTKeyData* param_2) { + param_1->mTrackNum = param_2->field_0xc; + param_1->mFrameMax = param_2->field_0xa; + param_1->mAttribute = param_2->field_0x8; + param_1->mDecShift = param_2->field_0x9; + param_1->mFrame = 0.0f; + param_1->mTrackNum = param_2->field_0xc; + param_1->mScaleNum = param_2->field_0xe; + param_1->mRotNum = param_2->field_0x10; + param_1->mTransNum = param_2->field_0x12; + param_1->mAnmTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMatIDOffset); + param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTab1Offset)); + param_1->mUpdateTexMtxID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateTexMtxIDOffset); + param_1->mSRTCenter = JSUConvertOffsetToPtr(param_2, (void*)param_2->unkOffset); + param_1->mScaleData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mScaleValOffset); + param_1->mRotData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRotValOffset); + param_1->mTransData = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTransValOffset); + if (param_2->mNameTab2Offset) { + param_1->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTab2Offset)); + } + param_1->mPostTrackNum = param_2->field_0x34; + param_1->field_0x4c = param_2->field_0x36; + param_1->field_0x4e = param_2->field_0x38; + param_1->field_0x50 = param_2->field_0x3a; + param_1->field_0x64 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mInfoTable2Offset); + param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x40); + param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x48); + param_1->mPostSRTCenter = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x4c); + param_1->field_0x54 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x50); + param_1->field_0x58 = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x54); + param_1->field_0x5c = JSUConvertOffsetToPtr(param_2, (void*)param_2->field_0x58); + switch (param_2->field_0x5c) { + case 0: + case 1: + param_1->mTexMtxCalcType = param_2->field_0x5c; + break; + default: + param_1->mTexMtxCalcType = 0; + break; + } } /* 803008D8-80300900 .text readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ -void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* param_1) { + setAnmColor((J3DAnmColorKey*)mAnm, param_1); } /* 80300900-803009EC .text setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData */ -void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey*, const J3DAnmColorKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColorKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; + param_1->field_0x10 = param_2->field_0x10; + param_1->field_0x12 = param_2->field_0x12; + param_1->field_0x14 = param_2->field_0x14; + param_1->field_0x16 = param_2->field_0x16; + param_1->field_0x40 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->field_0x30 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mRValOffset); + param_1->field_0x34 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mGValOffset); + param_1->field_0x38 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mBValOffset); + param_1->field_0x3c = JSUConvertOffsetToPtr(param_2, (void*)param_2->mAValOffset); + param_1->mUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mNameTabOffset)); } /* 803009EC-80300A14 .text readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData */ -void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* param_1) { + setAnmCluster((J3DAnmClusterKey*)mAnm, param_1); } /* 80300A14-80300A80 .text setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData */ -void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey*, const J3DAnmClusterKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* param_1, const J3DAnmClusterKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->field_0x14 = JSUConvertOffsetToPtr(param_2, (void*)param_2->mTableOffset); + param_1->mWeight = JSUConvertOffsetToPtr(param_2, (void*)param_2->mWeightOffset); } /* 80300A80-80300AA8 .text readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ -void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* param_1) { + setAnmTevReg((J3DAnmTevRegKey*)mAnm, param_1); } /* 80300AA8-80300C34 .text setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ -void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey*, const J3DAnmTevRegKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_1, const J3DAnmTevRegKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mCRegUpdateMaterialNum = param_2->mCRegUpdateMaterialNum; + param_1->mAnmCRegKeyTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegTableOffset); + param_1->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegUpdateMaterialIDOffset); + param_1->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRegNameTabOffset)); + param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum; + param_1->mAnmKRegKeyTable = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegTableOffset); + param_1->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegUpdateMaterialIDOffset); + param_1->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRegNameTabOffset)); + param_1->mCRegDataCount[0] = param_2->field_0x10; + param_1->mCRegDataCount[1] = param_2->field_0x12; + param_1->mCRegDataCount[2] = param_2->field_0x14; + param_1->mCRegDataCount[3] = param_2->field_0x16; + param_1->mAnmCRegData[0] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCRValuesOffset); + param_1->mAnmCRegData[1] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCGValuesOffset); + param_1->mAnmCRegData[2] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCBValuesOffset); + param_1->mAnmCRegData[3] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mCAValuesOffset); + param_1->mKRegDataCount[0] = param_2->field_0x18; + param_1->mKRegDataCount[1] = param_2->field_0x1a; + param_1->mKRegDataCount[2] = param_2->field_0x1c; + param_1->mKRegDataCount[3] = param_2->field_0x1e; + param_1->mAnmKRegData[0] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKRValuesOffset); + param_1->mAnmKRegData[1] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKGValuesOffset); + param_1->mAnmKRegData[2] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKBValuesOffset); + param_1->mAnmKRegData[3] = JSUConvertOffsetToPtr(param_2, (void*)param_2->mKAValuesOffset); } /* 80300C34-80300C5C .text readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ -void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData*) { - /* Nonmatching */ +void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* param_1) { + setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, param_1); } /* 80300C5C-80300DC4 .text setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */