From a1497b3bf5529efb280ae04d4c8e11fb8c1069ab Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Tue, 4 Jan 2022 18:06:14 +0100 Subject: [PATCH 1/7] tmp --- include/JSystem/J2DGraph/J2DAnimation.h | 38 +++--- include/JSystem/J2DGraph/J2DAnmLoader.h | 22 ++- libs/JSystem/J2DGraph/J2DAnimation.cpp | 24 ++-- libs/JSystem/J2DGraph/J2DAnmLoader.cpp | 170 +++++++++++++++++++++++- 4 files changed, 213 insertions(+), 41 deletions(-) diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 654c997b511..0757385a1db 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -20,9 +20,9 @@ public: f32 getFrame() const { return mFrame; } s32 getKind() const { return mKind; } -private: /* 0x0 */ // vtable - /* 0x4 */ u8 field_0x4[2]; + /* 0x4 */ u8 field_0x4; + /* 0x5 */ u8 field_0x5; /* 0x6 */ s16 mFrameMax; /* 0x8 */ f32 mFrame; /* 0xC */ s32 mKind; @@ -107,13 +107,12 @@ public: /* 80184370 */ virtual ~J2DAnmTransform() {} /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; -protected: /* 0x10 */ f32* mScaleValues; /* 0x14 */ s16* mRotationValues; /* 0x18 */ f32* mTranslateValues; }; // Size: 0x1C -struct J2DAnmTransformKeyInfo { +struct J3DAnmTransformKeyTable { J3DAnmKeyTableBase mScaleInfo; J3DAnmKeyTableBase mRotationInfo; J3DAnmKeyTableBase mTranslateInfo; @@ -127,10 +126,10 @@ public: } /* 8030AAFC */ virtual void calcTransform(f32, u16, J3DTransformInfo*) const; -private: - /* 0x1C */ u8 field_0x1c[8]; + /* 0x1C */ u8 field_0x1c[6]; + /* 0x22 */ s16 field_0x22; /* 0x24 */ u32 field_0x24; - /* 0x28 */ J2DAnmTransformKeyInfo* mInfoTable; + /* 0x28 */ J3DAnmTransformKeyTable* mInfoTable; }; struct J2DAnmTransformFullInfo { @@ -153,12 +152,6 @@ private: /* 0x24 */ J2DAnmTransformFullInfo* mTableInfo; }; -struct J2DAnmTextureSRTKeyInfo { - J3DAnmKeyTableBase mScaleInfo; - J3DAnmKeyTableBase mRotationInfo; - J3DAnmKeyTableBase mTranslationInfo; -}; // Size = 0x12 - class J2DAnmTextureSRTKey : public J2DAnmBase { public: /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; @@ -167,30 +160,31 @@ public: /* 8030BC60 */ virtual void searchUpdateMaterialID(J2DScreen*); u16 getUpdateMaterialNum() const { return mUpdateMaterialNum / 3; } -private: /* 0x10 */ int field_0x10; - /* 0x14 */ J2DAnmTextureSRTKeyInfo* mInfoTable; + /* 0x14 */ J3DAnmTransformKeyTable* mInfoTable; /* 0x18 */ u16 mUpdateMaterialNum; /* 0x1A */ u16 field_0x1a; /* 0x1C */ u16 field_0x1c; + /* 0x1E */ u16 field_0x1e; /* 0x20 */ f32* mScaleValues; /* 0x24 */ s16* mRotationValues; /* 0x28 */ f32* mTranslationValues; /* 0x2C */ u8* mUpdateTexMtxID; /* 0x30 */ u16* mUpdateMaterialID; /* 0x34 */ JUTNameTab field_0x34; - /* 0x44 */ u8 field_0x44[4]; + /* 0x44 */ Vec *field_0x44; /* 0x48 */ u16 field_0x48; /* 0x4A */ u16 field_0x4a; /* 0x4C */ u16 field_0x4c; /* 0x4E */ u16 field_0x4e; - /* 0x50 */ int field_0x50; - /* 0x54 */ int field_0x54; - /* 0x58 */ int field_0x58; - /* 0x5C */ int field_0x5c; - /* 0x60 */ u8 field_0x60[8]; + /* 0x50 */ f32* field_0x50; + /* 0x54 */ s16* field_0x54; + /* 0x58 */ f32* field_0x58; + /* 0x5C */ J3DAnmTransformKeyTable* field_0x5c; + /* 0x60 */ u8* field_0x60; + /* 0x64 */ u16* field_0x64; /* 0x68 */ JUTNameTab field_0x68; - /* 0x78 */ u8 field_0x78[4]; + /* 0x78 */ Vec* field_0x78; /* 0x7C */ int field_0x7c; }; diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h index b6867363da2..bf1b882f8cf 100644 --- a/include/JSystem/J2DGraph/J2DAnmLoader.h +++ b/include/JSystem/J2DGraph/J2DAnmLoader.h @@ -11,12 +11,24 @@ struct J2DAnmLoaderDataBase { class J2DAnmLoader { public: - virtual void load(void const*) = 0; + virtual void *load(void const*) = 0; virtual void setResource(J2DAnmBase*, void const*) = 0; - /* 8030A410 */ virtual ~J2DAnmLoader(); + /* 8030A410 */ virtual ~J2DAnmLoader() {} }; -struct J3DAnmTransformKeyData; +struct J3DAnmTransformKeyData { + /* 0x00 */ u8 _0[0x8]; + /* 0x08 */ u8 _8; + /* 0x09 */ u8 _9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 _C; + /* 0x0E */ u8 _E[0x14-0xE]; + /* 0x14 */ s32 mTableOffset; + /* 0x18 */ s32 mScaleOffset; + /* 0x1C */ s32 mRotationOffset; + /* 0x20 */ s32 mTranslateOffset; + +}; struct J3DAnmTextureSRTKeyData; struct J3DAnmColorKeyData; struct J3DAnmVtxColorKeyData; @@ -41,9 +53,11 @@ public: /* 80309FDC */ void readAnmTevReg(J3DAnmTevRegKeyData const*); /* 8030A004 */ void setAnmTevReg(J2DAnmTevRegKey*, J3DAnmTevRegKeyData const*); - /* 80309308 */ virtual void load(void const*); + /* 80309308 */ virtual void *load(void const*); /* 80309414 */ virtual void setResource(J2DAnmBase*, void const*); /* 803092AC */ virtual ~J2DAnmKeyLoader_v15(); + + /* 0x04 */ void* _4; }; class J2DAnmFullLoader_v15 : public J2DAnmLoader { diff --git a/libs/JSystem/J2DGraph/J2DAnimation.cpp b/libs/JSystem/J2DGraph/J2DAnimation.cpp index fcb85ac1b7c..f2241fe9180 100644 --- a/libs/JSystem/J2DGraph/J2DAnimation.cpp +++ b/libs/JSystem/J2DGraph/J2DAnimation.cpp @@ -103,9 +103,9 @@ void J2DAnmTransformFull::getTransform(u16 param_0, J3DTransformInfo* transformI void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1, J3DTransformInfo* transformInfo) const { u16 idx = param_1 * 3; - J2DAnmTransformKeyInfo* xInf = &mInfoTable[idx]; - J2DAnmTransformKeyInfo* yInf = &mInfoTable[idx + 1]; - J2DAnmTransformKeyInfo* zInf = &mInfoTable[idx + 2]; + J3DAnmTransformKeyTable* xInf = &mInfoTable[idx]; + J3DAnmTransformKeyTable* yInf = &mInfoTable[idx + 1]; + J3DAnmTransformKeyTable* zInf = &mInfoTable[idx + 2]; switch (xInf->mScaleInfo.mMaxFrame) { case 0: transformInfo->mScale.x = 1; @@ -464,9 +464,9 @@ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, _GXColor* pColor) cons * calcTransform__19J2DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo */ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTInfo* pInfo) const { u16 idx = param_1 * 3; - J2DAnmTextureSRTKeyInfo* xInf = &mInfoTable[idx]; - J2DAnmTextureSRTKeyInfo* yInf = &mInfoTable[idx + 1]; - J2DAnmTextureSRTKeyInfo* zInf = &mInfoTable[idx + 2]; + J3DAnmTransformKeyTable* xInf = &mInfoTable[idx]; + J3DAnmTransformKeyTable* yInf = &mInfoTable[idx + 1]; + J3DAnmTransformKeyTable* zInf = &mInfoTable[idx + 2]; switch (xInf->mScaleInfo.mMaxFrame) { case 0: pInfo->mScaleX = 1; @@ -502,27 +502,27 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI param_0, &zInf->mRotationInfo, &mRotationValues[zInf->mRotationInfo.mOffset])) << field_0x10; } - switch (xInf->mTranslationInfo.mMaxFrame) { + switch (xInf->mTranslateInfo.mMaxFrame) { case 0: pInfo->mTranslationX = 0; break; case 1: - pInfo->mTranslationX = mTranslationValues[xInf->mTranslationInfo.mOffset]; + pInfo->mTranslationX = mTranslationValues[xInf->mTranslateInfo.mOffset]; break; default: pInfo->mTranslationX = J2DGetKeyFrameInterpolationf( - param_0, &xInf->mTranslationInfo, &mTranslationValues[xInf->mTranslationInfo.mOffset]); + param_0, &xInf->mTranslateInfo, &mTranslationValues[xInf->mTranslateInfo.mOffset]); } - switch (yInf->mTranslationInfo.mMaxFrame) { + switch (yInf->mTranslateInfo.mMaxFrame) { case 0: pInfo->mTranslationY = 0; break; case 1: - pInfo->mTranslationY = mTranslationValues[yInf->mTranslationInfo.mOffset]; + pInfo->mTranslationY = mTranslationValues[yInf->mTranslateInfo.mOffset]; break; default: pInfo->mTranslationY = J2DGetKeyFrameInterpolationf( - param_0, &yInf->mTranslationInfo, &mTranslationValues[yInf->mTranslationInfo.mOffset]); + param_0, &yInf->mTranslateInfo, &mTranslationValues[yInf->mTranslateInfo.mOffset]); } } diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp index 33fff4e5ff8..ee19e3f3d46 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp @@ -18,11 +18,35 @@ struct J3DAnmVtxColorFullData {}; struct J3DAnmVisibilityFullData {}; -struct J3DAnmTransformKeyData {}; - struct J3DAnmTransformFullData {}; -struct J3DAnmTextureSRTKeyData {}; +struct J3DAnmTextureSRTKeyData { + u8 field_0x0[8]; + u8 field_0x8; + u8 field_0x9; + u16 field_0xa; + u16 field_0xc; + u16 field_0xe; + u16 field_0x10; + u16 field_0x12; + s32 mTableOffset; + s32 mUpdateMatIDOffset; + s32 mNameTab1Offset; + s32 mUpdateTexMtxIDOffset; + s32 unkOffset; + s32 mScaleValOffset; + s32 mRotValOffset; + s32 mTransValOffset; + u16 field_0x34; + u16 field_0x36; + u16 field_0x38; + u16 field_0x3a; + s32 mInfoTable2Offset; + u8 field_0x40[4]; + s32 mNameTab2Offset; + u8 field_0x48[0x5C-0x48]; + s32 field_0x5c; +}; struct J3DAnmTexPatternFullData {}; @@ -184,6 +208,9 @@ asm void* J2DAnmLoaderDataBase::load(void const* param_0) { #pragma pop /* 80309290-803092AC 303BD0 001C+00 1/1 0/0 0/0 .text __ct__19J2DAnmKeyLoader_v15Fv */ +#ifndef NM +J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -192,8 +219,12 @@ asm J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() { #include "asm/JSystem/J2DGraph/J2DAnmLoader/__ct__19J2DAnmKeyLoader_v15Fv.s" } #pragma pop +#endif /* 803092AC-80309308 303BEC 005C+00 2/1 0/0 0/0 .text __dt__19J2DAnmKeyLoader_v15Fv */ +#ifndef NM +J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -202,8 +233,48 @@ asm J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() { #include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__19J2DAnmKeyLoader_v15Fv.s" } #pragma pop +#endif + +struct DataBlockHeader { + /* 0x0 */ u32 mType; + /* 0x4 */ u32 mNextOffset; +}; + +struct DataHeader { + /* 0x00 */ u8 _0[0xC]; + /* 0x0C */ u32 mCount; + /* 0x10 */ u8 _10[0x20-0x10]; + /* 0x20 */ DataBlockHeader mFirst; +}; /* 80309308-80309414 303C48 010C+00 2/1 0/0 0/0 .text load__19J2DAnmKeyLoader_v15FPCv */ +#ifndef NM +void *J2DAnmKeyLoader_v15::load(void const* param_0) { + const DataHeader *hdr = (const DataHeader*) param_0; + const DataBlockHeader *dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANK1': + this->readAnmTransform((J3DAnmTransformKeyData*) dataPtr); + break; + case 'PAK1': + this->readAnmColor((J3DAnmColorKeyData*) dataPtr); + break; + case 'TTK1': + this->readAnmTextureSRT((J3DAnmTextureSRTKeyData*) dataPtr); + break; + case 'VCK1': + this->readAnmVtxColor((J3DAnmVtxColorKeyData*) dataPtr); + break; + case 'TRK1': + this->readAnmTevReg((J3DAnmTevRegKeyData*) dataPtr); + break; + } + dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } + return _4; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -213,9 +284,46 @@ extern "C" asm void load__19J2DAnmKeyLoader_v15FPCv() { #include "asm/JSystem/J2DGraph/J2DAnmLoader/load__19J2DAnmKeyLoader_v15FPCv.s" } #pragma pop +#endif /* 80309414-80309570 303D54 015C+00 1/0 0/0 0/0 .text * setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv */ +#ifndef NM +void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { + const DataHeader *hdr = (const DataHeader*) param_1; + const DataBlockHeader *dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANK1': + if (pAnm->getKind() == 0) { + this->setAnmTransform((J2DAnmTransformKey*) pAnm, (J3DAnmTransformKeyData*) dataPtr); + } + break; + case 'PAK1': + if (pAnm->getKind() == 1) { + this->setAnmColor((J2DAnmColorKey*) pAnm, (J3DAnmColorKeyData*) dataPtr); + } + break; + case 'TTK1': + if (pAnm->getKind() == 4) { + this->setAnmTextureSRT((J2DAnmTextureSRTKey*) pAnm, (J3DAnmTextureSRTKeyData*) dataPtr); + } + break; + case 'TRK1': + if (pAnm->getKind() == 5) { + this->setAnmTevReg((J2DAnmTevRegKey*) pAnm, (J3DAnmTevRegKeyData*) dataPtr); + } + break; + case 'VCK1': + if (pAnm->getKind() == 7) { + this->setAnmVtxColor((J2DAnmVtxColorKey*) pAnm, (J3DAnmVtxColorKeyData*) dataPtr); + } + break; + } + dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -224,9 +332,15 @@ asm void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* param_0, void const* param #include "asm/JSystem/J2DGraph/J2DAnmLoader/setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv.s" } #pragma pop +#endif /* 80309570-80309598 303EB0 0028+00 1/1 0/0 0/0 .text * readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ +#ifndef NM +void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* pData) { + this->setAnmTransform((J2DAnmTransformKey*)_4, pData); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -235,9 +349,32 @@ asm void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* par #include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData.s" } #pragma pop +#endif + +template +T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { + if (ptr == NULL) { + return NULL; + } else { + return (T*) ((s32)ptr + (s32)offset); + } +} /* 80309598-80309634 303ED8 009C+00 2/2 0/0 0/0 .text * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ +#ifndef NM +void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, J3DAnmTransformKeyData const* param_1) { + param_0->field_0x22 = param_1->_C; + param_0->mFrameMax = param_1->mFrameMax; + param_0->field_0x4 = param_1->_8; + param_0->field_0x24 = param_1->_9; + param_0->mFrame = 0; + param_0->mInfoTable = JSUConvertOffsetToPtr(param_1, (void*)param_1->mTableOffset); + param_0->mScaleValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mScaleOffset); + param_0->mRotationValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mRotationOffset); + param_0->mTranslateValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mTranslateOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -247,9 +384,15 @@ asm void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, #include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309598.s" } #pragma pop +#endif /* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text * readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ +#ifndef NM +void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { + this->setAnmTextureSRT((J2DAnmTextureSRTKey*) _4, param_0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -258,9 +401,29 @@ asm void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* p #include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData.s" } #pragma pop +#endif /* 8030965C-80309848 303F9C 01EC+00 2/2 0/0 0/0 .text * setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ +#ifndef NM +void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* pAnm, J3DAnmTextureSRTKeyData const* pData) { + pAnm->mUpdateMaterialNum = pData->field_0xc; + pAnm->mFrameMax = pData->field_0xa; + pAnm->field_0x4 = pData->field_0x8; + pAnm->field_0x10 = pData->field_0x9; + pAnm->mFrame = 0; + pAnm->field_0x1a = pData->field_0xe; + pAnm->field_0x1c = pData->field_0x10; + pAnm->field_0x1e = pData->field_0x12; + pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMatIDOffset); + pAnm->field_0x34.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab1Offset)); + pAnm->mUpdateTexMtxID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateTexMtxIDOffset); + pAnm->field_0x44 = JSUConvertOffsetToPtr(pData, (void*)pData->unkOffset); + + +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -270,6 +433,7 @@ asm void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* param_0, #include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030965C.s" } #pragma pop +#endif /* 80309848-80309870 304188 0028+00 1/1 0/0 0/0 .text * readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ From 2fe9bb78aef296af380962c07d90cf0cca38e488 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Fri, 7 Jan 2022 00:36:47 +0100 Subject: [PATCH 2/7] function ordering :( --- include/JSystem/J2DGraph/J2DAnimation.h | 203 ++++- include/JSystem/J2DGraph/J2DAnmLoader.h | 7 +- libs/JSystem/J2DGraph/J2DAnimation.cpp | 30 +- libs/JSystem/J2DGraph/J2DAnmLoader.cpp | 1042 ++++++++++------------- 4 files changed, 632 insertions(+), 650 deletions(-) diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 0757385a1db..77fc4695075 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -10,8 +10,19 @@ class J2DScreen; +struct J3DAnmColorKeyTable { + J3DAnmKeyTableBase mRInfo; + J3DAnmKeyTableBase mGInfo; + J3DAnmKeyTableBase mBInfo; + J3DAnmKeyTableBase mAInfo; +}; // Size = 0x18 + class J2DAnmBase { public: + J2DAnmBase() { + mFrame = 0; + mFrameMax = 0; + } /* 80053C94 */ virtual ~J2DAnmBase() {} /* 800569B0 */ virtual void searchUpdateMaterialID(J2DScreen*); @@ -28,40 +39,48 @@ public: /* 0xC */ s32 mKind; }; // Size: 0x10 +struct J3DAnmVtxColorIndexData; + class J2DAnmVtxColor : public J2DAnmBase { public: + J2DAnmVtxColor() { + mKind = 7; + for (s32 i = 0; i < ARRAY_SIZE(mAnmTableNum); i++) { + mAnmTableNum[i] = NULL; + } + for (s32 i = 0; i < ARRAY_SIZE(mVtxColorIndexData); i++) { + mVtxColorIndexData[i] = NULL; + } + } /* 8030A358 */ virtual ~J2DAnmVtxColor() {} /* 8030363C */ virtual void getColor(u8, u16, _GXColor*) const; -private: /* 0x10 */ u16 mAnmTableNum[2]; - /* 0x14 */ void* mVtxColorIndexData[2]; - /* 0x1C */ void* mVtxColorIndexPointer[2]; + /* 0x14 */ J3DAnmVtxColorIndexData* mVtxColorIndexData[2]; + /* 0x1C */ u16* mVtxColorIndexPointer[2]; }; // Size: 0x24 struct J3DTransformInfo; struct J3DTextureSRTInfo; -struct J2DAnmVtxColorKeyInfo { - J3DAnmKeyTableBase mRInfo; - J3DAnmKeyTableBase mGInfo; - J3DAnmKeyTableBase mBInfo; - J3DAnmKeyTableBase mAInfo; -}; // Size = 0x18 - class J2DAnmVtxColorKey : public J2DAnmVtxColor { +public: + J2DAnmVtxColorKey() { + for (s32 i = 0; i < ARRAY_SIZE(mInfoTable); i++) { + mInfoTable[i] = NULL; + } + } /* 8030CC20 */ virtual ~J2DAnmVtxColorKey() {} /* 8030B704 */ virtual void getColor(u8, u16, _GXColor*) const; -private: - /* 0x24 */ J2DAnmVtxColorKeyInfo* mInfoTable[2]; + /* 0x24 */ J3DAnmColorKeyTable* mInfoTable[2]; /* 0x2C */ s16* mRValues; /* 0x30 */ s16* mGValues; /* 0x34 */ s16* mBValues; /* 0x38 */ s16* mAValues; }; // Size: 0x3C -struct J2DAnmVtxColorFullInfo { +struct J3DAnmColorFullTable { /* 0x00 */ u16 mRMaxFrame; /* 0x02 */ u16 mROffset; /* 0x04 */ u16 mGMaxFrame; @@ -74,36 +93,52 @@ struct J2DAnmVtxColorFullInfo { class J2DAnmVtxColorFull : public J2DAnmVtxColor { public: + J2DAnmVtxColorFull() { + for (s32 i = 0; i < ARRAY_SIZE(mInfoTable); i++) { + mInfoTable[i] = NULL; + } + } /* 8030CC8C */ virtual ~J2DAnmVtxColorFull() {} /* 8030B4C4 */ virtual void getColor(u8, u16, _GXColor*) const; -private: - /* 0x24 */ J2DAnmVtxColorFullInfo* mInfoTable[2]; + /* 0x24 */ J3DAnmColorFullTable* mInfoTable[2]; /* 0x2C */ u8* mRValues; /* 0x30 */ u8* mGValues; /* 0x34 */ u8* mBValues; /* 0x38 */ u8* mAValues; }; // Size: 0x3C -struct J2DAnmVisibilityFullInfo { +struct J3DAnmVisibilityFullTable { u16 _0; u16 _2; }; // Size = 0x4 class J2DAnmVisibilityFull : public J2DAnmBase { public: - /* 8030A3B4 */ virtual ~J2DAnmVisibilityFull(); + J2DAnmVisibilityFull() { + field_0x10 = 0; + mTable = NULL; + field_0x12 = 0; + mValues = NULL; + mKind = 6; + } + /* 8030A3B4 */ virtual ~J2DAnmVisibilityFull() {} /* 8030C048 */ void getVisibility(u16, u8*) const; -private: /* 0x10 */ u16 field_0x10; /* 0x12 */ u16 field_0x12; - /* 0x14 */ J2DAnmVisibilityFullInfo* field_0x14; - /* 0x18 */ u8* field_0x18; + /* 0x14 */ J3DAnmVisibilityFullTable* mTable; + /* 0x18 */ u8* mValues; }; // Size: 0x1C class J2DAnmTransform : public J2DAnmBase { public: + J2DAnmTransform(f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) { + mScaleValues = pScaleValues; + mRotationValues = pRotationValues; + mTranslateValues = pTranslateValues; + mKind = 0; + } /* 80184370 */ virtual ~J2DAnmTransform() {} /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; @@ -120,6 +155,10 @@ struct J3DAnmTransformKeyTable { class J2DAnmTransformKey : public J2DAnmTransform { public: + J2DAnmTransformKey(): J2DAnmTransform(NULL, NULL, NULL) { + field_0x24 = 0; + mInfoTable = NULL; + } /* 801959C0 */ virtual ~J2DAnmTransformKey() {} /* 8030CD7C */ virtual void getTransform(u16 p1, J3DTransformInfo* pInfo) const { this->calcTransform(getFrame(), p1, pInfo); @@ -132,7 +171,7 @@ public: /* 0x28 */ J3DAnmTransformKeyTable* mInfoTable; }; -struct J2DAnmTransformFullInfo { +struct J3DAnmTransformFullTable { /* 0x00 */ u16 mScaleMaxFrame; /* 0x02 */ u16 mScaleOffset; /* 0x04 */ u16 mRotationMaxFrame; @@ -143,17 +182,40 @@ struct J2DAnmTransformFullInfo { class J2DAnmTransformFull : public J2DAnmTransform { public: + J2DAnmTransformFull(): J2DAnmTransform(NULL, NULL, NULL) { + mTableInfo = NULL; + } /* 8030CDAC */ virtual ~J2DAnmTransformFull() {} /* 8030A590 */ virtual void getTransform(u16, J3DTransformInfo*) const; -private: /* 0x1C */ u8 field_0x1c[6]; /* 0x22 */ u16 field_0x22; - /* 0x24 */ J2DAnmTransformFullInfo* mTableInfo; + /* 0x24 */ J3DAnmTransformFullTable* mTableInfo; }; class J2DAnmTextureSRTKey : public J2DAnmBase { public: + J2DAnmTextureSRTKey() { + field_0x10 = 0; + field_0x1e = 0; + field_0x1c = 0; + field_0x1a = 0; + mUpdateMaterialNum = 0; + mInfoTable = NULL; + mTranslationValues = NULL; + mScaleValues = NULL; + mRotationValues = NULL; + field_0x4c = 0; + field_0x4a = 0; + field_0x48 = 0; + field_0x4e = 0; + field_0x5c = NULL; + field_0x58 = NULL; + field_0x50 = NULL; + field_0x54 = NULL; + field_0x7c = 0; + mKind = 4; + } /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; /* 80184274 */ virtual ~J2DAnmTextureSRTKey() {} @@ -188,7 +250,7 @@ public: /* 0x7C */ int field_0x7c; }; -struct J2DAnmTexPatternInfo { +struct J3DAnmTexPatternFullTable { /* 0x00 */ u16 mMaxFrame; /* 0x02 */ u16 mOffset; /* 0x04 */ u16 _4; @@ -205,6 +267,15 @@ public: /* 0x4 */ JUTPalette* mPalette; }; // Size: 0x8 + J2DAnmTexPattern() { + mValues = NULL; + mAnmTable = NULL; + mKind = 2; + mUpdateMaterialNum = 0; + mUpdaterMaterialID = NULL; + mTIMGPtrArray = NULL; + } + /* 8030BEE8 */ void getTexNo(u16, u16*) const; /* 8030BF9C */ ResTIMG* getResTIMG(u16) const; /* 8030BFF0 */ JUTPalette* getPalette(u16) const; @@ -213,17 +284,24 @@ public: /* 8030BD10 */ virtual void searchUpdateMaterialID(J2DScreen*); u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } -private: /* 0x10 */ u16* mValues; - /* 0x14 */ J2DAnmTexPatternInfo* mAnmTable; - /* 0x18 */ u8 field_0x18[2]; + /* 0x14 */ J3DAnmTexPatternFullTable* mAnmTable; + /* 0x18 */ u16 field_0x18; /* 0x1A */ u16 mUpdateMaterialNum; /* 0x1C */ u16* mUpdaterMaterialID; /* 0x20 */ JUTNameTab field_0x20; /* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray; }; -struct J2DAnmTevRegKeyInfo { +struct J3DAnmCRegKeyTable { + /* 0x00 */ J3DAnmKeyTableBase mRTable; + /* 0x06 */ J3DAnmKeyTableBase mGTable; + /* 0x0C */ J3DAnmKeyTableBase mBTable; + /* 0x12 */ J3DAnmKeyTableBase mATable; + /* 0x18 */ u8 _18[4]; +}; // Size = 0x1C + +struct J3DAnmKRegKeyTable { /* 0x00 */ J3DAnmKeyTableBase mRTable; /* 0x06 */ J3DAnmKeyTableBase mGTable; /* 0x0C */ J3DAnmKeyTableBase mBTable; @@ -233,13 +311,35 @@ struct J2DAnmTevRegKeyInfo { class J2DAnmTevRegKey : public J2DAnmBase { public: + J2DAnmTevRegKey() { + mKRegUpdateMaterialNum = 0; + mCRegUpdateMaterialNum = 0; + field_0x1a = 0; + field_0x18 = 0; + field_0x16 = 0; + field_0x14 = 0; + field_0x22 = 0; + field_0x20 = 0; + field_0x1e = 0; + field_0x1c = 0; + mKRegUpdateMaterialID = NULL; + mCRegUpdateMaterialID = NULL; + mCAValues = NULL; + mCBValues = NULL; + mCGValues = NULL; + mCRValues = NULL; + mKAValues = NULL; + mKBValues = NULL; + mKGValues = NULL; + mKRValues = NULL; + mKind = 5; + } /* 8030C0F0 */ void getTevColorReg(u16, _GXColorS10*) const; /* 8030C3B4 */ void getTevKonstReg(u16, _GXColor*) const; /* 801841EC */ virtual ~J2DAnmTevRegKey() {} /* 8030C678 */ virtual void searchUpdateMaterialID(J2DScreen* pScreen); -private: /* 0x10 */ u16 mCRegUpdateMaterialNum; /* 0x12 */ u16 mKRegUpdateMaterialNum; /* 0x14 */ u16 field_0x14; @@ -251,11 +351,11 @@ private: /* 0x20 */ u16 field_0x20; /* 0x22 */ u16 field_0x22; /* 0x24 */ u16* mCRegUpdateMaterialID; - /* 0x28 */ JUTNameTab field_0x28; + /* 0x28 */ JUTNameTab mCRegNameTab; /* 0x38 */ u16* mKRegUpdateMaterialID; - /* 0x3C */ JUTNameTab field_0x3c; - /* 0x4C */ J2DAnmTevRegKeyInfo* mAnmCRegKeyTable; - /* 0x50 */ J2DAnmTevRegKeyInfo* mAnmKRegKeyTable; + /* 0x3C */ JUTNameTab mKRegNameTab; + /* 0x4C */ J3DAnmCRegKeyTable* mAnmCRegKeyTable; + /* 0x50 */ J3DAnmKRegKeyTable* mAnmKRegKeyTable; /* 0x54 */ s16* mCRValues; /* 0x58 */ s16* mCGValues; /* 0x5C */ s16* mCBValues; @@ -268,12 +368,20 @@ private: class J2DAnmColor : public J2DAnmBase { public: + J2DAnmColor() { + field_0x16 = 0; + field_0x14 = 0; + field_0x12 = 0; + field_0x10 = 0; + mUpdateMaterialNum = 0; + mUpdateMaterialID = NULL; + mKind = 1; + } /* 801842FC */ virtual ~J2DAnmColor() {} /* 8030AF24 */ virtual void searchUpdateMaterialID(J2DScreen*); /* 802EB390 */ virtual void getColor(u16, _GXColor*) const; u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; } -private: /* 0x10 */ u16 field_0x10; /* 0x12 */ u16 field_0x12; /* 0x14 */ u16 field_0x14; @@ -283,24 +391,23 @@ private: /* 0x20 */ JUTNameTab field_0x20; }; // Size: 0x30 -struct J2DAnmColorKeyInfo { - J3DAnmKeyTableBase mRInfo; - J3DAnmKeyTableBase mGInfo; - J3DAnmKeyTableBase mBInfo; - J3DAnmKeyTableBase mAInfo; -}; // Size = 0x18 - class J2DAnmColorKey : public J2DAnmColor { public: + J2DAnmColorKey() { + mRValues = NULL; + mGValues = NULL; + mBValues = NULL; + mAValues = NULL; + mInfoTable = NULL; + } /* 80239BE0 */ virtual ~J2DAnmColorKey() {} /* 8030B200 */ virtual void getColor(u16, _GXColor*) const; -private: /* 0x30 */ s16* mRValues; /* 0x34 */ s16* mGValues; /* 0x38 */ s16* mBValues; /* 0x3C */ s16* mAValues; - /* 0x40 */ J2DAnmColorKeyInfo* mInfoTable; + /* 0x40 */ J3DAnmColorKeyTable* mInfoTable; }; struct J2DAnmColorFullInfo { @@ -316,15 +423,21 @@ struct J2DAnmColorFullInfo { class J2DAnmColorFull : public J2DAnmColor { public: + J2DAnmColorFull() { + mRValues = NULL; + mGValues = NULL; + mBValues = NULL; + mAValues = NULL; + mInfoTable = NULL; + } /* 8030CCF8 */ virtual ~J2DAnmColorFull() {} /* 8030AFC8 */ virtual void getColor(u16, _GXColor*) const; -private: /* 0x30 */ u8* mRValues; /* 0x34 */ u8* mGValues; /* 0x38 */ u8* mBValues; /* 0x3C */ u8* mAValues; - /* 0x40 */ J2DAnmColorFullInfo* mInfoTable; + /* 0x40 */ J3DAnmColorFullTable* mInfoTable; }; template diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h index bf1b882f8cf..c098b105e5c 100644 --- a/include/JSystem/J2DGraph/J2DAnmLoader.h +++ b/include/JSystem/J2DGraph/J2DAnmLoader.h @@ -14,6 +14,7 @@ public: virtual void *load(void const*) = 0; virtual void setResource(J2DAnmBase*, void const*) = 0; /* 8030A410 */ virtual ~J2DAnmLoader() {} + void* _4; }; struct J3DAnmTransformKeyData { @@ -57,7 +58,7 @@ public: /* 80309414 */ virtual void setResource(J2DAnmBase*, void const*); /* 803092AC */ virtual ~J2DAnmKeyLoader_v15(); - /* 0x04 */ void* _4; + // /* 0x04 */ void* _4; }; class J2DAnmFullLoader_v15 : public J2DAnmLoader { @@ -74,9 +75,11 @@ public: /* 8030A234 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*); /* 8030A25C */ void setAnmVtxColor(J2DAnmVtxColorFull*, J3DAnmVtxColorFullData const*); - /* 80309A80 */ virtual void load(void const*); + /* 80309A80 */ virtual void *load(void const*); /* 80309B8C */ virtual void setResource(J2DAnmBase*, void const*); /* 80309D04 */ virtual ~J2DAnmFullLoader_v15(); + + // void* _4; }; #endif /* J2DANMLOADER_H */ diff --git a/libs/JSystem/J2DGraph/J2DAnimation.cpp b/libs/JSystem/J2DGraph/J2DAnimation.cpp index f2241fe9180..5235e7813ed 100644 --- a/libs/JSystem/J2DGraph/J2DAnimation.cpp +++ b/libs/JSystem/J2DGraph/J2DAnimation.cpp @@ -21,9 +21,9 @@ f32 J2DGetKeyFrameInterpolations(f32 param_0, J3DAnmKeyTableBase* param_1, s16* * getTransform__19J2DAnmTransformFullCFUsP16J3DTransformInfo */ void J2DAnmTransformFull::getTransform(u16 param_0, J3DTransformInfo* transformInfo) const { u16 idx = (param_0 * 3); - J2DAnmTransformFullInfo* xPart = &mTableInfo[idx]; - J2DAnmTransformFullInfo* yPart = &mTableInfo[idx + 1]; - J2DAnmTransformFullInfo* zPart = &mTableInfo[idx + 2]; + J3DAnmTransformFullTable* xPart = &mTableInfo[idx]; + J3DAnmTransformFullTable* yPart = &mTableInfo[idx + 1]; + J3DAnmTransformFullTable* zPart = &mTableInfo[idx + 2]; u16 xMaxFrame = xPart->mScaleMaxFrame; if (getFrame() < 0) { transformInfo->mScale.x = mScaleValues[xPart->mScaleOffset]; @@ -230,7 +230,7 @@ void J2DAnmColor::searchUpdateMaterialID(J2DScreen* pScreen) { /* 8030AFC8-8030B200 305908 0238+00 1/0 0/0 0/0 .text getColor__15J2DAnmColorFullCFUsP8_GXColor */ void J2DAnmColorFull::getColor(u16 param_0, _GXColor* pColor) const { - J2DAnmColorFullInfo* info = &mInfoTable[param_0]; + J3DAnmColorFullTable* info = &mInfoTable[param_0]; u16 maxFrame = info->mRMaxFrame; if (getFrame() < 0) { pColor->r = mRValues[info->mROffset]; @@ -267,7 +267,7 @@ void J2DAnmColorFull::getColor(u16 param_0, _GXColor* pColor) const { /* 8030B200-8030B4C4 305B40 02C4+00 1/0 0/0 0/0 .text getColor__14J2DAnmColorKeyCFUsP8_GXColor */ void J2DAnmColorKey::getColor(u16 param_0, _GXColor* pColor) const { - J2DAnmColorKeyInfo* info = &mInfoTable[param_0]; + J3DAnmColorKeyTable* info = &mInfoTable[param_0]; f32 val; switch (info->mRInfo.mMaxFrame) { case 0: @@ -346,7 +346,7 @@ void J2DAnmColorKey::getColor(u16 param_0, _GXColor* pColor) const { /* 8030B4C4-8030B704 305E04 0240+00 1/0 0/0 0/0 .text * getColor__18J2DAnmVtxColorFullCFUcUsP8_GXColor */ void J2DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* pColor) const { - J2DAnmVtxColorFullInfo* info = &mInfoTable[param_0][param_1]; + J3DAnmColorFullTable* info = &mInfoTable[param_0][param_1]; u16 maxFrame = info->mRMaxFrame; if (getFrame() < 0) { pColor->r = mRValues[info->mROffset]; @@ -384,7 +384,7 @@ void J2DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* pColor) con /* 8030B704-8030B9F0 306044 02EC+00 1/0 0/0 0/0 .text * getColor__17J2DAnmVtxColorKeyCFUcUsP8_GXColor */ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, _GXColor* pColor) const { - J2DAnmVtxColorKeyInfo* info = &mInfoTable[param_0][param_1]; + J3DAnmColorKeyTable* info = &mInfoTable[param_0][param_1]; f32 val; switch (info->mRInfo.mMaxFrame) { case 0: @@ -621,21 +621,21 @@ JUTPalette* J2DAnmTexPattern::getPalette(u16 param_0) const { /* 8030C048-8030C0F0 306988 00A8+00 0/0 3/3 0/0 .text getVisibility__20J2DAnmVisibilityFullCFUsPUc */ void J2DAnmVisibilityFull::getVisibility(u16 param_0, u8* pOut) const { - u16 maxFrame = field_0x14[param_0]._0; + u16 maxFrame = mTable[param_0]._0; if (getFrame() < 0) { - *pOut = field_0x18[field_0x14[param_0]._2]; + *pOut = mValues[mTable[param_0]._2]; } else if (getFrame() >= maxFrame) { - *pOut = field_0x18[field_0x14[param_0]._2 + (maxFrame - 1)]; + *pOut = mValues[mTable[param_0]._2 + (maxFrame - 1)]; } else { int frame = getFrame(); - *pOut = field_0x18[field_0x14[param_0]._2 + frame]; + *pOut = mValues[mTable[param_0]._2 + frame]; } } /* 8030C0F0-8030C3B4 306A30 02C4+00 0/0 1/1 0/0 .text * getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10 */ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, _GXColorS10* pColor) const { - J2DAnmTevRegKeyInfo* info = &mAnmCRegKeyTable[param_0]; + J3DAnmCRegKeyTable* info = &mAnmCRegKeyTable[param_0]; f32 val; switch (info->mRTable.mMaxFrame) { case 0: @@ -714,7 +714,7 @@ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, _GXColorS10* pColor) const { /* 8030C3B4-8030C678 306CF4 02C4+00 0/0 1/1 0/0 .text * getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor */ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, _GXColor* pColor) const { - J2DAnmTevRegKeyInfo* info = &mAnmKRegKeyTable[param_0]; + J3DAnmKRegKeyTable* info = &mAnmKRegKeyTable[param_0]; f32 val; switch (info->mRTable.mMaxFrame) { case 0: @@ -795,7 +795,7 @@ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, _GXColor* pColor) const { void J2DAnmTevRegKey::searchUpdateMaterialID(J2DScreen* pScreen) { if (pScreen != NULL && pScreen->mNameTable != NULL) { for (u16 i = 0; i < mCRegUpdateMaterialNum; i++) { - s32 idx = pScreen->mNameTable->getIndex(field_0x28.getName(i)); + s32 idx = pScreen->mNameTable->getIndex(mCRegNameTab.getName(i)); if (idx != -1) { mCRegUpdateMaterialID[i] = idx; } else { @@ -803,7 +803,7 @@ void J2DAnmTevRegKey::searchUpdateMaterialID(J2DScreen* pScreen) { } } for (u16 i = 0; i < mKRegUpdateMaterialNum; i++) { - s32 idx = pScreen->mNameTable->getIndex(field_0x3c.getName(i)); + s32 idx = pScreen->mNameTable->getIndex(mKRegNameTab.getName(i)); if (idx != -1) { mKRegUpdateMaterialID[i] = idx; } else { diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp index ee19e3f3d46..7260bd4f696 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp @@ -12,19 +12,84 @@ // Types: // -struct J3DAnmVtxColorKeyData {}; +struct DataBlockHeader { + /* 0x0 */ u32 mType; + /* 0x4 */ u32 mNextOffset; +}; -struct J3DAnmVtxColorFullData {}; +struct DataHeader { + /* 0x00 */ u32 mMagic; + /* 0x04 */ u32 mType; + /* 0x08 */ u8 _8[4]; + /* 0x0C */ u32 mCount; + /* 0x10 */ u8 _10[0x20-0x10]; + /* 0x20 */ DataBlockHeader mFirst; +}; -struct J3DAnmVisibilityFullData {}; +struct J3DAnmVtxColorFullData { /* PlaceHolder Structure */ + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9; // padding? + s16 mFrameMax; + u16 mAnmTableNum[2]; + u8 field_0x10[0x18-0x10]; + s32 mTableOffsets[2]; + s32 mVtxColorIndexDataOffsets[2]; + s32 mVtxColorIndexPointerOffsets[2]; + s32 mRValuesOffset; + s32 mGValuesOffset; + s32 mBValuesOffset; + s32 mAValuesOffset; +}; -struct J3DAnmTransformFullData {}; +struct J3DAnmVisibilityFullData { + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9; // padding? + s16 mFrameMax; + u16 field_0xc; + u16 field_0xe; + s32 mTableOffset; + s32 mValuesOffset; +}; -struct J3DAnmTextureSRTKeyData { - u8 field_0x0[8]; +struct J3DAnmTransformFullData { + /* 0x00 */ DataBlockHeader mHeader; u8 field_0x8; u8 field_0x9; - u16 field_0xa; + s16 mFrameMax; + u16 field_0xc; + u8 field_0xe[0x14-0xe]; + s32 mTableOffset; + s32 mScaleValOffset; + s32 mRotValOffset; + s32 mTransValOffset; +}; + +struct J3DAnmColorKeyData { + /* 0x00 */ DataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9[3]; + /* 0x0C */ s16 mFrameMax; + /* 0x0E */ u16 mUpdateMaterialNum; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; + /* 0x18 */ s32 mTableOffset; /* Created by retype action */ + /* 0x1C */ s32 mUpdateMaterialIDOffset; + /* 0x20 */ s32 mNameTabOffset; /* Created by retype action */ + /* 0x24 */ s32 mRValOffset; + /* 0x28 */ s32 mGValOffset; + /* 0x2C */ s32 mBValOffset; + /* 0x30 */ s32 mAValOffset; +}; // Size = 0x34 + +struct J3DAnmTextureSRTKeyData { + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9; + s16 field_0xa; u16 field_0xc; u16 field_0xe; u16 field_0x10; @@ -42,213 +107,188 @@ struct J3DAnmTextureSRTKeyData { u16 field_0x38; u16 field_0x3a; s32 mInfoTable2Offset; - u8 field_0x40[4]; - s32 mNameTab2Offset; - u8 field_0x48[0x5C-0x48]; + s32 field_0x40; + u32 mNameTab2Offset; + s32 field_0x48; + s32 field_0x4c; + s32 field_0x50; + s32 field_0x54; + s32 field_0x58; s32 field_0x5c; }; -struct J3DAnmTexPatternFullData {}; +struct J3DAnmVtxColorKeyData { + /* 0x00 */ DataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 mAnmTableNum[2]; + /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x18 */ s32 mTableOffsets[2]; + /* 0x20 */ s32 mVtxColoIndexDataOffset[2]; + /* 0x28 */ s32 mVtxColoIndexPointerOffset[2]; + /* 0x30 */ s32 mRValOffset; + /* 0x34 */ s32 mGValOffset; + /* 0x38 */ s32 mBValOffset; + /* 0x3C */ s32 mAValOffset; +}; // Size = 0x40 -struct J3DAnmTevRegKeyData {}; +struct J3DAnmTexPatternFullData { + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9; + s16 mFrameMax; + u16 field_0xc; + u16 field_0xe; + s32 mTableOffset; + s32 mValuesOffset; + s32 mUpdaterMaterialIDOffset; + s32 mNameTabOffset; +}; -struct J3DAnmColorKeyData {}; +struct J3DAnmTevRegKeyData { + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9; // maybe padding + s16 mFrameMax; + u16 mCRegUpdateMaterialNum; + u16 mKRegUpdateMaterialNum; + u16 field_0x10; + u16 field_0x12; + u16 field_0x14; + u16 field_0x16; + u16 field_0x18; + u16 field_0x1a; + u16 field_0x1c; + u16 field_0x1e; + s32 mCRegTableOffset; + s32 mKRegTableOffset; + s32 mCRegUpdateMaterialIDOffset; + s32 mKRegUpdateMaterialIDOffset; + s32 mCRegNameTabOffset; + s32 mKRegNameTabOffset; + s32 mCRValuesOffset; + s32 mCGValuesOffset; + s32 mCBValuesOffset; + s32 mCAValuesOffset; + s32 mKRValuesOffset; + s32 mKGValuesOffset; + s32 mKBValuesOffset; + s32 mKAValuesOffset; +}; -struct J3DAnmColorFullData {}; +struct J3DAnmColorFullData { /* PlaceHolder Structure */ + /* 0x00 */ DataBlockHeader mHeader; + u8 field_0x8; + u8 field_0x9[3]; + s16 mFrameMax; + u16 mUpdateMaterialNum; + u8 field_0x10[0x18-0x10]; + s32 mTableOffset; + s32 mUpdateMaterialIDOffset; + s32 mNameTabOffset; + s32 mRValuesOffset; + s32 mGValuesOffset; + s32 mBValuesOffset; + s32 mAValuesOffset; +}; struct J2DScreen {}; -// -// Forward References: -// - -extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); -extern "C" void __ct__19J2DAnmKeyLoader_v15Fv(); -extern "C" void __dt__19J2DAnmKeyLoader_v15Fv(); -extern "C" void load__19J2DAnmKeyLoader_v15FPCv(); -extern "C" void setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv(); -extern "C" void readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData(); -extern "C" void -setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData(); -extern "C" void readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData(); -extern "C" void -setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData(); -extern "C" void readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData(); -extern "C" void setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData(); -extern "C" void readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData(); -extern "C" void -setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData(); -extern "C" void load__20J2DAnmFullLoader_v15FPCv(); -extern "C" void setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv(); -extern "C" void __ct__20J2DAnmFullLoader_v15Fv(); -extern "C" void __dt__20J2DAnmFullLoader_v15Fv(); -extern "C" void readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData(); -extern "C" void -setAnmTransform__20J2DAnmFullLoader_v15FP19J2DAnmTransformFullPC23J3DAnmTransformFullData(); -extern "C" void readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData(); -extern "C" void setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData(); -extern "C" void readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData(); -extern "C" void -setAnmTexPattern__20J2DAnmFullLoader_v15FP16J2DAnmTexPatternPC24J3DAnmTexPatternFullData(); -extern "C" void readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData(); -extern "C" void setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData(); -extern "C" void readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData(); -extern "C" void -setAnmVisibility__20J2DAnmFullLoader_v15FP20J2DAnmVisibilityFullPC24J3DAnmVisibilityFullData(); -extern "C" void readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData(); -extern "C" void -setAnmVtxColor__20J2DAnmFullLoader_v15FP18J2DAnmVtxColorFullPC22J3DAnmVtxColorFullData(); -extern "C" void __dt__14J2DAnmVtxColorFv(); -extern "C" void __dt__20J2DAnmVisibilityFullFv(); -extern "C" void __dt__12J2DAnmLoaderFv(); -extern "C" void func_8030A458(void* _this, void const*, void const*); -extern "C" void func_8030A470(void* _this, void const*, void const*); -extern "C" void func_8030A488(void* _this, void const*, void const*); -extern "C" void func_8030A4A0(void* _this, void const*, void const*); -extern "C" void func_8030A4B8(void* _this, void const*, void const*); -extern "C" void func_8030A4D0(void* _this, void const*, void const*); -extern "C" void func_8030A4E8(void* _this, void const*, void const*); -extern "C" void func_8030A500(void* _this, void const*, void const*); -extern "C" void func_8030A518(void* _this, void const*, void const*); -extern "C" void func_8030A530(void* _this, void const*, void const*); -extern "C" void func_8030A548(void* _this, void const*, void const*); -extern "C" void func_8030A560(void* _this, void const*, void const*); -extern "C" void func_8030A578(void* _this, void const*, void const*); - -// -// External References: -// - -extern "C" void searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void __ct__10JUTNameTabFv(); -extern "C" void setResource__10JUTNameTabFPC7ResNTAB(); -extern "C" void func_802F4260(void* _this, void const*, void const*); -extern "C" void func_802F42C0(void* _this, void const*, void const*); -extern "C" void getColor__14J2DAnmVtxColorCFUcUsP8_GXColor(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" extern void* __vt__10J2DAnmBase[4]; -extern "C" extern void* __vt__15J2DAnmTransform[5 + 4 /* padding */]; -extern "C" extern void* __vt__15J2DAnmTevRegKey[4]; -extern "C" extern void* __vt__16J2DAnmTexPattern[4]; -extern "C" extern void* __vt__19J2DAnmTextureSRTKey[4]; -extern "C" extern void* __vt__17J2DAnmVtxColorKey[5]; -extern "C" extern void* __vt__18J2DAnmVtxColorFull[5]; -extern "C" extern void* __vt__14J2DAnmColorKey[5]; -extern "C" extern void* __vt__15J2DAnmColorFull[5]; -extern "C" extern void* __vt__11J2DAnmColor[5]; -extern "C" extern void* __vt__18J2DAnmTransformKey[6]; -extern "C" extern void* __vt__19J2DAnmTransformFull[5]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803CD6C8-803CD6DC 02A7E8 0014+00 2/2 0/0 0/0 .data __vt__20J2DAnmFullLoader_v15 */ -SECTION_DATA extern void* __vt__20J2DAnmFullLoader_v15[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)load__20J2DAnmFullLoader_v15FPCv, - (void*)setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv, - (void*)__dt__20J2DAnmFullLoader_v15Fv, -}; - -/* 803CD6DC-803CD6F0 02A7FC 0014+00 2/2 0/0 0/0 .data __vt__19J2DAnmKeyLoader_v15 */ -SECTION_DATA extern void* __vt__19J2DAnmKeyLoader_v15[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)load__19J2DAnmKeyLoader_v15FPCv, - (void*)setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv, - (void*)__dt__19J2DAnmKeyLoader_v15Fv, -}; - -/* 803CD6F0-803CD704 02A810 0014+00 5/5 0/0 0/0 .data __vt__12J2DAnmLoader */ -SECTION_DATA extern void* __vt__12J2DAnmLoader[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)__dt__12J2DAnmLoaderFv, -}; - -/* 803CD704-803CD714 02A824 0010+00 2/2 0/0 0/0 .data __vt__20J2DAnmVisibilityFull */ -SECTION_DATA extern void* __vt__20J2DAnmVisibilityFull[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__20J2DAnmVisibilityFullFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, -}; - -/* 803CD714-803CD728 02A834 0014+00 2/2 2/2 0/0 .data __vt__14J2DAnmVtxColor */ -SECTION_DATA extern void* __vt__14J2DAnmVtxColor[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14J2DAnmVtxColorFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, - (void*)getColor__14J2DAnmVtxColorCFUcUsP8_GXColor, -}; - -/* 804562F8-80456300 0048F8 0004+04 11/11 0/0 0/0 .sdata2 @1581 */ -SECTION_SDATA2 static f32 lit_1581[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - /* 80308A6C-80309290 3033AC 0824+00 0/0 26/26 2/2 .text load__20J2DAnmLoaderDataBaseFPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* J2DAnmLoaderDataBase::load(void const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__20J2DAnmLoaderDataBaseFPCv.s" +void* J2DAnmLoaderDataBase::load(void const* param_0) { + const DataHeader* hdr = (const DataHeader*) param_0; + if (hdr == NULL) { + return NULL; + } else if (hdr->mMagic == 'J3D1') { + switch (hdr->mType) { + case 'bck1': + {J2DAnmKeyLoader_v15 loader; + J2DAnmTransformKey* anm = new J2DAnmTransformKey(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'bpk1': + {J2DAnmKeyLoader_v15 loader; + J2DAnmColorKey* anm = new J2DAnmColorKey(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'blk1': + return NULL; + case 'btk1': + {J2DAnmKeyLoader_v15 loader; + J2DAnmTextureSRTKey* anm = new J2DAnmTextureSRTKey(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'brk1': + {J2DAnmKeyLoader_v15 loader; + J2DAnmTevRegKey* anm = new J2DAnmTevRegKey(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'bxk1': + {J2DAnmKeyLoader_v15 loader; + J2DAnmVtxColorKey* anm = new J2DAnmVtxColorKey(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'bca1': + {J2DAnmFullLoader_v15 loader; + J2DAnmTransformFull* anm = new J2DAnmTransformFull(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'bpa1': + {J2DAnmFullLoader_v15 loader; + J2DAnmColorFull* anm = new J2DAnmColorFull(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'btp1': + {J2DAnmFullLoader_v15 loader; + J2DAnmTexPattern* anm = new J2DAnmTexPattern(); + loader._4 = anm; + return loader.load(param_0); + } + case 'bva1': + {J2DAnmFullLoader_v15 loader; + J2DAnmVisibilityFull* anm = new J2DAnmVisibilityFull(); + loader._4 = anm; + return loader.load(param_0); + break; + } + case 'bla1': + return NULL; + case 'bxa1': + {J2DAnmFullLoader_v15 loader; + J2DAnmVtxColorFull* anm = new J2DAnmVtxColorFull(); + loader._4 = anm; + return loader.load(param_0); + } + } + return NULL; + } else { + return NULL; + } } -#pragma pop /* 80309290-803092AC 303BD0 001C+00 1/1 0/0 0/0 .text __ct__19J2DAnmKeyLoader_v15Fv */ -#ifndef NM J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__ct__19J2DAnmKeyLoader_v15Fv.s" -} -#pragma pop -#endif /* 803092AC-80309308 303BEC 005C+00 2/1 0/0 0/0 .text __dt__19J2DAnmKeyLoader_v15Fv */ -#ifndef NM J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__19J2DAnmKeyLoader_v15Fv.s" -} -#pragma pop -#endif - -struct DataBlockHeader { - /* 0x0 */ u32 mType; - /* 0x4 */ u32 mNextOffset; -}; - -struct DataHeader { - /* 0x00 */ u8 _0[0xC]; - /* 0x0C */ u32 mCount; - /* 0x10 */ u8 _10[0x20-0x10]; - /* 0x20 */ DataBlockHeader mFirst; -}; /* 80309308-80309414 303C48 010C+00 2/1 0/0 0/0 .text load__19J2DAnmKeyLoader_v15FPCv */ -#ifndef NM void *J2DAnmKeyLoader_v15::load(void const* param_0) { const DataHeader *hdr = (const DataHeader*) param_0; const DataBlockHeader *dataPtr = &hdr->mFirst; @@ -274,21 +314,9 @@ void *J2DAnmKeyLoader_v15::load(void const* param_0) { } return _4; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void load__19J2DAnmKeyLoader_v15FPCv() { - // asm void J2DAnmKeyLoader_v15::load(void const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__19J2DAnmKeyLoader_v15FPCv.s" -} -#pragma pop -#endif /* 80309414-80309570 303D54 015C+00 1/0 0/0 0/0 .text * setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv */ -#ifndef NM void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { const DataHeader *hdr = (const DataHeader*) param_1; const DataBlockHeader *dataPtr = &hdr->mFirst; @@ -323,35 +351,14 @@ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv.s" -} -#pragma pop -#endif /* 80309570-80309598 303EB0 0028+00 1/1 0/0 0/0 .text * readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ -#ifndef NM void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* pData) { this->setAnmTransform((J2DAnmTransformKey*)_4, pData); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData.s" -} -#pragma pop -#endif -template +template // TODO move T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { if (ptr == NULL) { return NULL; @@ -362,7 +369,6 @@ T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { /* 80309598-80309634 303ED8 009C+00 2/2 0/0 0/0 .text * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ -#ifndef NM void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, J3DAnmTransformKeyData const* param_1) { param_0->field_0x22 = param_1->_C; param_0->mFrameMax = param_1->mFrameMax; @@ -374,44 +380,22 @@ void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, J3DAnmTra param_0->mRotationValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mRotationOffset); param_0->mTranslateValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mTranslateOffset); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, - J3DAnmTransformKeyData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309598.s" -} -#pragma pop -#endif /* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text * readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ -#ifndef NM void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { this->setAnmTextureSRT((J2DAnmTextureSRTKey*) _4, param_0); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData.s" -} -#pragma pop -#endif /* 8030965C-80309848 303F9C 01EC+00 2/2 0/0 0/0 .text * setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ -#ifndef NM void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* pAnm, J3DAnmTextureSRTKeyData const* pData) { pAnm->mUpdateMaterialNum = pData->field_0xc; pAnm->mFrameMax = pData->field_0xa; pAnm->field_0x4 = pData->field_0x8; pAnm->field_0x10 = pData->field_0x9; pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->field_0xc; pAnm->field_0x1a = pData->field_0xe; pAnm->field_0x1c = pData->field_0x10; pAnm->field_0x1e = pData->field_0x12; @@ -420,418 +404,300 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* pAnm, J3DAnmText pAnm->field_0x34.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab1Offset)); pAnm->mUpdateTexMtxID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateTexMtxIDOffset); pAnm->field_0x44 = JSUConvertOffsetToPtr(pData, (void*)pData->unkOffset); - - + pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*)pData->mScaleValOffset); + pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRotValOffset); + pAnm->mTranslationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mTransValOffset); + if (pData->mNameTab2Offset != 0) { + pAnm->field_0x68.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab2Offset)); + } + pAnm->field_0x4e = pData->field_0x34; + pAnm->field_0x48 = pData->field_0x36; + pAnm->field_0x4a = pData->field_0x38; + pAnm->field_0x4c = pData->field_0x3a; + pAnm->field_0x5c = JSUConvertOffsetToPtr(pData, (void*)pData->mInfoTable2Offset); + pAnm->field_0x64 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x40); + pAnm->field_0x60 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); + pAnm->field_0x78 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); + pAnm->field_0x50 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x50); + pAnm->field_0x54 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x54); + pAnm->field_0x58 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x58); + switch (pData->field_0x5c) { + case 0: + pAnm->field_0x7c = 0; + break; + case 1: + pAnm->field_0x7c = 1; + break; + default: + pAnm->field_0x7c = 0; + break; + } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* param_0, - J3DAnmTextureSRTKeyData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030965C.s" -} -#pragma pop -#endif /* 80309848-80309870 304188 0028+00 1/1 0/0 0/0 .text * readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData.s" +void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* pData) { + this->setAnmColor((J2DAnmColorKey*)_4, pData); } -#pragma pop /* 80309870-8030995C 3041B0 00EC+00 2/2 0/0 0/0 .text * setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* param_0, - J3DAnmColorKeyData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData.s" +void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* pAnm, J3DAnmColorKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; + pAnm->field_0x10 = pData->field_0x10; + pAnm->field_0x12 = pData->field_0x12; + pAnm->field_0x14 = pData->field_0x14; + pAnm->field_0x16 = pData->field_0x16; + pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValOffset); + pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMaterialIDOffset); + pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTabOffset)); } -#pragma pop /* 8030995C-80309984 30429C 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData.s" +void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* pData) { + this->setAnmVtxColor((J2DAnmVtxColorKey*) _4, pData); } -#pragma pop /* 80309984-80309A80 3042C4 00FC+00 2/2 0/0 0/0 .text * setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* param_0, - J3DAnmVtxColorKeyData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData.s" +void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* pAnm, J3DAnmVtxColorKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; + pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; + pAnm->mInfoTable[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[0]); + pAnm->mInfoTable[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[1]); + pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexDataOffset[0]); + pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexDataOffset[1]); + pAnm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexPointerOffset[0]); + pAnm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexPointerOffset[1]); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValOffset); } -#pragma pop /* 80309A80-80309B8C 3043C0 010C+00 2/1 0/0 0/0 .text load__20J2DAnmFullLoader_v15FPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void load__20J2DAnmFullLoader_v15FPCv() { - // asm void J2DAnmFullLoader_v15::load(void const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__20J2DAnmFullLoader_v15FPCv.s" +void *J2DAnmFullLoader_v15::load(void const* param_0) { + const DataHeader *hdr = (const DataHeader*) param_0; + const DataBlockHeader *dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANF1': + this->readAnmTransform((J3DAnmTransformFullData*) dataPtr); + break; + case 'PAF1': + this->readAnmColor((J3DAnmColorFullData*) dataPtr); + break; + case 'TPT1': + this->readAnmTexPattern((J3DAnmTexPatternFullData*) dataPtr); + break; + case 'VAF1': + this->readAnmVisibility((J3DAnmVisibilityFullData*) dataPtr); + break; + case 'VCF1': + this->readAnmVtxColor((J3DAnmVtxColorFullData*) dataPtr); + break; + } + dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } + return _4; } -#pragma pop /* 80309B8C-80309CE8 3044CC 015C+00 1/0 0/0 0/0 .text * setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setResource(J2DAnmBase* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv.s" +void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { + const DataHeader *hdr = (const DataHeader*) pData; + const DataBlockHeader *dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANF1': + if (pAnm->getKind() == 0) + this->setAnmTransform((J2DAnmTransformFull*) pAnm, (J3DAnmTransformFullData*) dataPtr); + break; + case 'PAF1': + if (pAnm->getKind() == 1) + this->setAnmColor((J2DAnmColorFull*) pAnm, (J3DAnmColorFullData*) dataPtr); + break; + case 'TPT1': + if (pAnm->getKind() == 2) + this->setAnmTexPattern((J2DAnmTexPattern*) pAnm, (J3DAnmTexPatternFullData*) dataPtr); + break; + case 'VAF1': + if (pAnm->getKind() == 6) + this->setAnmVisibility((J2DAnmVisibilityFull*) pAnm, (J3DAnmVisibilityFullData*) dataPtr); + break; + case 'VCF1': + if (pAnm->getKind() == 7) + this->setAnmVtxColor((J2DAnmVtxColorFull*) pAnm, (J3DAnmVtxColorFullData*) dataPtr); + break; + } + dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } } -#pragma pop /* 80309CE8-80309D04 304628 001C+00 1/1 0/0 0/0 .text __ct__20J2DAnmFullLoader_v15Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__ct__20J2DAnmFullLoader_v15Fv.s" -} -#pragma pop +J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() {} /* 80309D04-80309D60 304644 005C+00 2/1 0/0 0/0 .text __dt__20J2DAnmFullLoader_v15Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__20J2DAnmFullLoader_v15Fv.s" -} -#pragma pop +J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() {} /* 80309D60-80309D88 3046A0 0028+00 1/1 0/0 0/0 .text * readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData.s" +void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* pData) { + this->setAnmTransform((J2DAnmTransformFull*) _4, pData); } -#pragma pop /* 80309D88-80309E1C 3046C8 0094+00 2/2 0/0 0/0 .text * setAnmTransform__20J2DAnmFullLoader_v15FP19J2DAnmTransformFullPC23J3DAnmTransformFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* param_0, - J3DAnmTransformFullData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309D88.s" +void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* pAnm, J3DAnmTransformFullData const* pData) { + pAnm->field_0x22 = pData->field_0xc; + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mTableInfo = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); + pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*) pData->mScaleValOffset); + pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRotValOffset); + pAnm->mTranslateValues = JSUConvertOffsetToPtr(pData, (void*) pData->mTransValOffset); + } -#pragma pop /* 80309E1C-80309E44 30475C 0028+00 1/1 0/0 0/0 .text * readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData.s" +void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* pData) { + this->setAnmColor((J2DAnmColorFull*) _4, pData); } -#pragma pop /* 80309E44-80309F10 304784 00CC+00 2/2 0/0 0/0 .text * setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* param_0, - J3DAnmColorFullData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData.s" +void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* pAnm, J3DAnmColorFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; + pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValuesOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValuesOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValuesOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValuesOffset); + pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mUpdateMaterialIDOffset); + pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mNameTabOffset)); + } -#pragma pop /* 80309F10-80309F38 304850 0028+00 1/1 0/0 0/0 .text * readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData.s" +void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* pData) { + this->setAnmTexPattern((J2DAnmTexPattern*) _4, pData); } -#pragma pop /* 80309F38-80309FDC 304878 00A4+00 2/2 0/0 0/0 .text * setAnmTexPattern__20J2DAnmFullLoader_v15FP16J2DAnmTexPatternPC24J3DAnmTexPatternFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* param_0, - J3DAnmTexPatternFullData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309F38.s" +void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* pAnm, J3DAnmTexPatternFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->field_0xc; + pAnm->field_0x18 = pData->field_0xe; + pAnm->mAnmTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); + pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*) pData->mValuesOffset); + pAnm->mUpdaterMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mUpdaterMaterialIDOffset); + pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mNameTabOffset)); } -#pragma pop /* 80309FDC-8030A004 30491C 0028+00 1/1 0/0 0/0 .text * readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData.s" +void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* pData) { + this->setAnmTevReg((J2DAnmTevRegKey*) _4, pData); } -#pragma pop /* 8030A004-8030A190 304944 018C+00 2/2 0/0 0/0 .text * setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* param_0, - J3DAnmTevRegKeyData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData.s" +void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* pAnm, J3DAnmTevRegKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mCRegUpdateMaterialNum = pData->mCRegUpdateMaterialNum; + pAnm->mAnmCRegKeyTable = JSUConvertOffsetToPtr(pData, (void*) pData->mCRegTableOffset); + pAnm->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mCRegUpdateMaterialIDOffset); + pAnm->mCRegNameTab.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mCRegNameTabOffset)); + pAnm->mKRegUpdateMaterialNum = pData->mKRegUpdateMaterialNum; + pAnm->mAnmKRegKeyTable = JSUConvertOffsetToPtr(pData, (void*) pData->mKRegTableOffset); + pAnm->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mKRegUpdateMaterialIDOffset); + pAnm->mKRegNameTab.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mKRegNameTabOffset)); + pAnm->field_0x14 = pData->field_0x10; + pAnm->field_0x16 = pData->field_0x12; + pAnm->field_0x18 = pData->field_0x14; + pAnm->field_0x1a = pData->field_0x16; + pAnm->mCRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCRValuesOffset); + pAnm->mCGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCGValuesOffset); + pAnm->mCBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCBValuesOffset); + pAnm->mCAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCAValuesOffset); + pAnm->field_0x1c = pData->field_0x18; + pAnm->field_0x1e = pData->field_0x1a; + pAnm->field_0x20 = pData->field_0x1c; + pAnm->field_0x22 = pData->field_0x1e; + pAnm->mKRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKRValuesOffset); + pAnm->mKGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKGValuesOffset); + pAnm->mKBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKBValuesOffset); + pAnm->mKAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKAValuesOffset); } -#pragma pop /* 8030A190-8030A1B8 304AD0 0028+00 1/1 0/0 0/0 .text * readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData.s" +void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* pData) { + this->setAnmVisibility((J2DAnmVisibilityFull*) _4, pData); } -#pragma pop /* 8030A1B8-8030A234 304AF8 007C+00 2/2 0/0 0/0 .text * setAnmVisibility__20J2DAnmFullLoader_v15FP20J2DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* param_0, - J3DAnmVisibilityFullData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A1B8.s" +void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* pAnm, J3DAnmVisibilityFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->field_0x10 = pData->field_0xc; + pAnm->field_0x12 = pData->field_0xe; + pAnm->mTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); + pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*) pData->mValuesOffset); } -#pragma pop /* 8030A234-8030A25C 304B74 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData.s" +void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* pData) { + this->setAnmVtxColor((J2DAnmVtxColorFull*) _4, pData); } -#pragma pop /* 8030A25C-8030A358 304B9C 00FC+00 2/2 0/0 0/0 .text * setAnmVtxColor__20J2DAnmFullLoader_v15FP18J2DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* param_0, - J3DAnmVtxColorFullData const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A25C.s" +void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* pAnm, J3DAnmVtxColorFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; + pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; + pAnm->mInfoTable[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[0]); + pAnm->mInfoTable[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[1]); + pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexDataOffsets[0]); + pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexDataOffsets[1]); + pAnm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexPointerOffsets[0]); + pAnm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexPointerOffsets[1]); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValuesOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValuesOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValuesOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValuesOffset); + } -#pragma pop /* 8030A358-8030A3B4 304C98 005C+00 1/0 0/0 0/0 .text __dt__14J2DAnmVtxColorFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm J2DAnmVtxColor::~J2DAnmVtxColor() { -extern "C" asm void __dt__14J2DAnmVtxColorFv() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__14J2DAnmVtxColorFv.s" -} -#pragma pop - +// J2DAnmVtxColor::~J2DAnmVtxColor() {} /* 8030A3B4-8030A410 304CF4 005C+00 1/0 0/0 0/0 .text __dt__20J2DAnmVisibilityFullFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm J2DAnmVisibilityFull::~J2DAnmVisibilityFull() { -extern "C" asm void __dt__20J2DAnmVisibilityFullFv() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__20J2DAnmVisibilityFullFv.s" -} -#pragma pop - -/* 8030A410-8030A458 304D50 0048+00 1/0 0/0 0/0 .text __dt__12J2DAnmLoaderFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm J2DAnmLoader::~J2DAnmLoader() { -extern "C" asm void __dt__12J2DAnmLoaderFv() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__12J2DAnmLoaderFv.s" -} -#pragma pop - -/* 8030A458-8030A470 304D98 0018+00 1/1 1/1 0/0 .text - * JSUConvertOffsetToPtr<25J3DAnmVisibilityFullTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A458(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A458.s" -} -#pragma pop - -/* 8030A470-8030A488 304DB0 0018+00 1/1 1/1 0/0 .text - * JSUConvertOffsetToPtr<18J3DAnmKRegKeyTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A470(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A470.s" -} -#pragma pop - -/* 8030A488-8030A4A0 304DC8 0018+00 1/1 1/1 0/0 .text - * JSUConvertOffsetToPtr<18J3DAnmCRegKeyTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A488(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A488.s" -} -#pragma pop - -/* 8030A4A0-8030A4B8 304DE0 0018+00 1/1 1/1 0/0 .text - * JSUConvertOffsetToPtr<25J3DAnmTexPatternFullTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A4A0(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4A0.s" -} -#pragma pop - -/* 8030A4B8-8030A4D0 304DF8 0018+00 2/2 2/2 0/0 .text - * JSUConvertOffsetToPtr<20J3DAnmColorFullTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A4B8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4B8.s" -} -#pragma pop - -/* 8030A4D0-8030A4E8 304E10 0018+00 1/1 1/1 0/0 .text - * JSUConvertOffsetToPtr<24J3DAnmTransformFullTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A4D0(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4D0.s" -} -#pragma pop - -/* 8030A4E8-8030A500 304E28 0018+00 2/2 2/2 0/0 .text - * JSUConvertOffsetToPtr<23J3DAnmVtxColorIndexData>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A4E8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4E8.s" -} -#pragma pop - -/* 8030A500-8030A518 304E40 0018+00 2/2 2/2 0/0 .text - * JSUConvertOffsetToPtr<19J3DAnmColorKeyTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A500(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A500.s" -} -#pragma pop - -/* 8030A518-8030A530 304E58 0018+00 1/1 1/1 0/0 .text JSUConvertOffsetToPtr<3Vec>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A518(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A518.s" -} -#pragma pop - -/* 8030A530-8030A548 304E70 0018+00 5/5 16/16 0/0 .text JSUConvertOffsetToPtr<7ResNTAB>__FPCvPCv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A530(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A530.s" -} -#pragma pop - -/* 8030A548-8030A560 304E88 0018+00 6/6 6/6 0/0 .text JSUConvertOffsetToPtr__FPCvPCv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A548(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A548.s" -} -#pragma pop - -/* 8030A560-8030A578 304EA0 0018+00 3/3 7/7 0/0 .text JSUConvertOffsetToPtr__FPCvPCv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A560(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A560.s" -} -#pragma pop - -/* 8030A578-8030A590 304EB8 0018+00 2/2 2/2 0/0 .text - * JSUConvertOffsetToPtr<23J3DAnmTransformKeyTable>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030A578(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A578.s" -} -#pragma pop +// J2DAnmVisibilityFull::~J2DAnmVisibilityFull() {} From 16ee7c98130cdc884f90df77c76b2d3e193f066d Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Tue, 11 Jan 2022 11:03:02 +0100 Subject: [PATCH 3/7] improvement --- libs/JSystem/J2DGraph/J2DAnmLoader.cpp | 30 +++++++++----------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp index 7260bd4f696..b5397bc2ca3 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp @@ -205,15 +205,13 @@ void* J2DAnmLoaderDataBase::load(void const* param_0) { switch (hdr->mType) { case 'bck1': {J2DAnmKeyLoader_v15 loader; - J2DAnmTransformKey* anm = new J2DAnmTransformKey(); - loader._4 = anm; + loader._4 = new J2DAnmTransformKey(); return loader.load(param_0); break; } case 'bpk1': {J2DAnmKeyLoader_v15 loader; - J2DAnmColorKey* anm = new J2DAnmColorKey(); - loader._4 = anm; + loader._4 = new J2DAnmColorKey(); return loader.load(param_0); break; } @@ -221,49 +219,42 @@ void* J2DAnmLoaderDataBase::load(void const* param_0) { return NULL; case 'btk1': {J2DAnmKeyLoader_v15 loader; - J2DAnmTextureSRTKey* anm = new J2DAnmTextureSRTKey(); - loader._4 = anm; + loader._4 = new J2DAnmTextureSRTKey(); return loader.load(param_0); break; } case 'brk1': {J2DAnmKeyLoader_v15 loader; - J2DAnmTevRegKey* anm = new J2DAnmTevRegKey(); - loader._4 = anm; + loader._4 = new J2DAnmTevRegKey(); return loader.load(param_0); break; } case 'bxk1': {J2DAnmKeyLoader_v15 loader; - J2DAnmVtxColorKey* anm = new J2DAnmVtxColorKey(); - loader._4 = anm; + loader._4 = new J2DAnmVtxColorKey(); return loader.load(param_0); break; } case 'bca1': {J2DAnmFullLoader_v15 loader; - J2DAnmTransformFull* anm = new J2DAnmTransformFull(); - loader._4 = anm; + loader._4 = new J2DAnmTransformFull(); return loader.load(param_0); break; } case 'bpa1': {J2DAnmFullLoader_v15 loader; - J2DAnmColorFull* anm = new J2DAnmColorFull(); - loader._4 = anm; + loader._4 = new J2DAnmColorFull(); return loader.load(param_0); break; } case 'btp1': {J2DAnmFullLoader_v15 loader; - J2DAnmTexPattern* anm = new J2DAnmTexPattern(); - loader._4 = anm; + loader._4 = new J2DAnmTexPattern(); return loader.load(param_0); } case 'bva1': {J2DAnmFullLoader_v15 loader; - J2DAnmVisibilityFull* anm = new J2DAnmVisibilityFull(); - loader._4 = anm; + loader._4 = new J2DAnmVisibilityFull(); return loader.load(param_0); break; } @@ -271,8 +262,7 @@ void* J2DAnmLoaderDataBase::load(void const* param_0) { return NULL; case 'bxa1': {J2DAnmFullLoader_v15 loader; - J2DAnmVtxColorFull* anm = new J2DAnmVtxColorFull(); - loader._4 = anm; + loader._4 = new J2DAnmVtxColorFull(); return loader.load(param_0); } } From e1903d20cfd0e3499a9805b0b0a84dd8074d3b6a Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Wed, 12 Jan 2022 19:14:44 +0100 Subject: [PATCH 4/7] slight cleanup --- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 199 ++++++++++++++++ include/JSystem/JSupport/JSupport.h | 13 ++ libs/JSystem/J2DGraph/J2DAnmLoader.cpp | 219 ++---------------- 3 files changed, 226 insertions(+), 205 deletions(-) create mode 100644 include/JSystem/JSupport/JSupport.h diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 15ded86a066..562818b5bcd 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -6,6 +6,205 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" +struct J3DAnmDataBlockHeader { // actual name unknown + /* 0x0 */ u32 mType; + /* 0x4 */ u32 mNextOffset; +}; // Size = 0x8 + +struct J3DAnmDataHeader { // actual name unknown + /* 0x00 */ u32 mMagic; + /* 0x04 */ u32 mType; + /* 0x08 */ u8 _8[4]; + /* 0x0C */ u32 mCount; + /* 0x10 */ u8 _10[0x20-0x10]; + /* 0x20 */ J3DAnmDataBlockHeader mFirst; +}; + +struct J3DAnmVtxColorFullData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; // padding? + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 mAnmTableNum[2]; + /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x18 */ s32 mTableOffsets[2]; + /* 0x20 */ s32 mVtxColorIndexDataOffsets[2]; + /* 0x28 */ s32 mVtxColorIndexPointerOffsets[2]; + /* 0x30 */ s32 mRValuesOffset; + /* 0x34 */ s32 mGValuesOffset; + /* 0x38 */ s32 mBValuesOffset; + /* 0x3C */ s32 mAValuesOffset; +}; // Size = 0x40 + +STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40); + +struct J3DAnmVisibilityFullData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; // padding? + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ s32 mTableOffset; + /* 0x14 */ s32 mValuesOffset; +}; // Size = 0x18 + +STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18); + +struct J3DAnmTransformFullData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u8 field_0xe[0x14-0xe]; + /* 0x14 */ s32 mTableOffset; + /* 0x18 */ s32 mScaleValOffset; + /* 0x1C */ s32 mRotValOffset; + /* 0x20 */ s32 mTransValOffset; +}; // Size = 0x24 + +STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24); + +struct J3DAnmColorKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9[3]; + /* 0x0C */ s16 mFrameMax; + /* 0x0E */ u16 mUpdateMaterialNum; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; + /* 0x18 */ s32 mTableOffset; /* Created by retype action */ + /* 0x1C */ s32 mUpdateMaterialIDOffset; + /* 0x20 */ s32 mNameTabOffset; /* Created by retype action */ + /* 0x24 */ s32 mRValOffset; + /* 0x28 */ s32 mGValOffset; + /* 0x2C */ s32 mBValOffset; + /* 0x30 */ s32 mAValOffset; +}; // Size = 0x34 + +STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34); + +struct J3DAnmTextureSRTKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 field_0xa; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ s32 mTableOffset; + /* 0x18 */ s32 mUpdateMatIDOffset; + /* 0x1C */ s32 mNameTab1Offset; + /* 0x20 */ s32 mUpdateTexMtxIDOffset; + /* 0x24 */ s32 unkOffset; + /* 0x28 */ s32 mScaleValOffset; + /* 0x2C */ s32 mRotValOffset; + /* 0x30 */ s32 mTransValOffset; + /* 0x34 */ u16 field_0x34; + /* 0x36 */ u16 field_0x36; + /* 0x38 */ u16 field_0x38; + /* 0x3A */ u16 field_0x3a; + /* 0x3C */ s32 mInfoTable2Offset; + /* 0x40 */ s32 field_0x40; + /* 0x44 */ u32 mNameTab2Offset; + /* 0x48 */ s32 field_0x48; + /* 0x4C */ s32 field_0x4c; + /* 0x50 */ s32 field_0x50; + /* 0x54 */ s32 field_0x54; + /* 0x58 */ s32 field_0x58; + /* 0x5C */ s32 field_0x5c; +}; // Size = 0x60 + +STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60); + +struct J3DAnmVtxColorKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 mAnmTableNum[2]; + /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x18 */ s32 mTableOffsets[2]; + /* 0x20 */ s32 mVtxColoIndexDataOffset[2]; + /* 0x28 */ s32 mVtxColoIndexPointerOffset[2]; + /* 0x30 */ s32 mRValOffset; + /* 0x34 */ s32 mGValOffset; + /* 0x38 */ s32 mBValOffset; + /* 0x3C */ s32 mAValOffset; +}; // Size = 0x40 + +STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40); + +struct J3DAnmTexPatternFullData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ s32 mTableOffset; + /* 0x14 */ s32 mValuesOffset; + /* 0x18 */ s32 mUpdaterMaterialIDOffset; + /* 0x1C */ s32 mNameTabOffset; +}; // Size = 0x20 + +STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20); + +struct J3DAnmTevRegKeyData { + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9; // maybe padding + /* 0x0A */ s16 mFrameMax; + /* 0x0C */ u16 mCRegUpdateMaterialNum; + /* 0x0E */ u16 mKRegUpdateMaterialNum; + /* 0x10 */ u16 field_0x10; + /* 0x12 */ u16 field_0x12; + /* 0x14 */ u16 field_0x14; + /* 0x16 */ u16 field_0x16; + /* 0x18 */ u16 field_0x18; + /* 0x1A */ u16 field_0x1a; + /* 0x1C */ u16 field_0x1c; + /* 0x1E */ u16 field_0x1e; + /* 0x20 */ s32 mCRegTableOffset; + /* 0x24 */ s32 mKRegTableOffset; + /* 0x28 */ s32 mCRegUpdateMaterialIDOffset; + /* 0x2C */ s32 mKRegUpdateMaterialIDOffset; + /* 0x30 */ s32 mCRegNameTabOffset; + /* 0x34 */ s32 mKRegNameTabOffset; + /* 0x38 */ s32 mCRValuesOffset; + /* 0x3C */ s32 mCGValuesOffset; + /* 0x40 */ s32 mCBValuesOffset; + /* 0x44 */ s32 mCAValuesOffset; + /* 0x48 */ s32 mKRValuesOffset; + /* 0x4C */ s32 mKGValuesOffset; + /* 0x50 */ s32 mKBValuesOffset; + /* 0x54 */ s32 mKAValuesOffset; +}; // Size = 0x58 + +STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58); + +struct J3DAnmColorFullData { /* PlaceHolder Structure */ + /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9[3]; + /* 0x0C */ s16 mFrameMax; + /* 0x0E */ u16 mUpdateMaterialNum; + /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x18 */ s32 mTableOffset; + /* 0x1C */ s32 mUpdateMaterialIDOffset; + /* 0x20 */ s32 mNameTabOffset; + /* 0x24 */ s32 mRValuesOffset; + /* 0x28 */ s32 mGValuesOffset; + /* 0x2C */ s32 mBValuesOffset; + /* 0x30 */ s32 mAValuesOffset; +}; // Size = 0x34 + +STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34); + class J3DAnmBase { public: virtual ~J3DAnmBase(); diff --git a/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h new file mode 100644 index 00000000000..830116e95e3 --- /dev/null +++ b/include/JSystem/JSupport/JSupport.h @@ -0,0 +1,13 @@ +#ifndef JSUPPORT_H +#define JSUPPORT_H + +template +T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { + if (ptr == NULL) { + return NULL; + } else { + return (T*) ((s32)ptr + (s32)offset); + } +} + +#endif diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp index b5397bc2ca3..31e29f891e3 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp @@ -5,6 +5,7 @@ #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/JSupport/JSupport.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -12,193 +13,10 @@ // Types: // -struct DataBlockHeader { - /* 0x0 */ u32 mType; - /* 0x4 */ u32 mNextOffset; -}; - -struct DataHeader { - /* 0x00 */ u32 mMagic; - /* 0x04 */ u32 mType; - /* 0x08 */ u8 _8[4]; - /* 0x0C */ u32 mCount; - /* 0x10 */ u8 _10[0x20-0x10]; - /* 0x20 */ DataBlockHeader mFirst; -}; - -struct J3DAnmVtxColorFullData { /* PlaceHolder Structure */ - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; // padding? - s16 mFrameMax; - u16 mAnmTableNum[2]; - u8 field_0x10[0x18-0x10]; - s32 mTableOffsets[2]; - s32 mVtxColorIndexDataOffsets[2]; - s32 mVtxColorIndexPointerOffsets[2]; - s32 mRValuesOffset; - s32 mGValuesOffset; - s32 mBValuesOffset; - s32 mAValuesOffset; -}; - -struct J3DAnmVisibilityFullData { - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; // padding? - s16 mFrameMax; - u16 field_0xc; - u16 field_0xe; - s32 mTableOffset; - s32 mValuesOffset; -}; - -struct J3DAnmTransformFullData { - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; - s16 mFrameMax; - u16 field_0xc; - u8 field_0xe[0x14-0xe]; - s32 mTableOffset; - s32 mScaleValOffset; - s32 mRotValOffset; - s32 mTransValOffset; -}; - -struct J3DAnmColorKeyData { - /* 0x00 */ DataBlockHeader mHeader; - /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9[3]; - /* 0x0C */ s16 mFrameMax; - /* 0x0E */ u16 mUpdateMaterialNum; - /* 0x10 */ u16 field_0x10; - /* 0x12 */ u16 field_0x12; - /* 0x14 */ u16 field_0x14; - /* 0x16 */ u16 field_0x16; - /* 0x18 */ s32 mTableOffset; /* Created by retype action */ - /* 0x1C */ s32 mUpdateMaterialIDOffset; - /* 0x20 */ s32 mNameTabOffset; /* Created by retype action */ - /* 0x24 */ s32 mRValOffset; - /* 0x28 */ s32 mGValOffset; - /* 0x2C */ s32 mBValOffset; - /* 0x30 */ s32 mAValOffset; -}; // Size = 0x34 - -struct J3DAnmTextureSRTKeyData { - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; - s16 field_0xa; - u16 field_0xc; - u16 field_0xe; - u16 field_0x10; - u16 field_0x12; - s32 mTableOffset; - s32 mUpdateMatIDOffset; - s32 mNameTab1Offset; - s32 mUpdateTexMtxIDOffset; - s32 unkOffset; - s32 mScaleValOffset; - s32 mRotValOffset; - s32 mTransValOffset; - u16 field_0x34; - u16 field_0x36; - u16 field_0x38; - u16 field_0x3a; - s32 mInfoTable2Offset; - s32 field_0x40; - u32 mNameTab2Offset; - s32 field_0x48; - s32 field_0x4c; - s32 field_0x50; - s32 field_0x54; - s32 field_0x58; - s32 field_0x5c; -}; - -struct J3DAnmVtxColorKeyData { - /* 0x00 */ DataBlockHeader mHeader; - /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; - /* 0x0A */ s16 mFrameMax; - /* 0x0C */ u16 mAnmTableNum[2]; - /* 0x10 */ u8 field_0x10[0x18-0x10]; - /* 0x18 */ s32 mTableOffsets[2]; - /* 0x20 */ s32 mVtxColoIndexDataOffset[2]; - /* 0x28 */ s32 mVtxColoIndexPointerOffset[2]; - /* 0x30 */ s32 mRValOffset; - /* 0x34 */ s32 mGValOffset; - /* 0x38 */ s32 mBValOffset; - /* 0x3C */ s32 mAValOffset; -}; // Size = 0x40 - -struct J3DAnmTexPatternFullData { - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; - s16 mFrameMax; - u16 field_0xc; - u16 field_0xe; - s32 mTableOffset; - s32 mValuesOffset; - s32 mUpdaterMaterialIDOffset; - s32 mNameTabOffset; -}; - -struct J3DAnmTevRegKeyData { - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9; // maybe padding - s16 mFrameMax; - u16 mCRegUpdateMaterialNum; - u16 mKRegUpdateMaterialNum; - u16 field_0x10; - u16 field_0x12; - u16 field_0x14; - u16 field_0x16; - u16 field_0x18; - u16 field_0x1a; - u16 field_0x1c; - u16 field_0x1e; - s32 mCRegTableOffset; - s32 mKRegTableOffset; - s32 mCRegUpdateMaterialIDOffset; - s32 mKRegUpdateMaterialIDOffset; - s32 mCRegNameTabOffset; - s32 mKRegNameTabOffset; - s32 mCRValuesOffset; - s32 mCGValuesOffset; - s32 mCBValuesOffset; - s32 mCAValuesOffset; - s32 mKRValuesOffset; - s32 mKGValuesOffset; - s32 mKBValuesOffset; - s32 mKAValuesOffset; -}; - -struct J3DAnmColorFullData { /* PlaceHolder Structure */ - /* 0x00 */ DataBlockHeader mHeader; - u8 field_0x8; - u8 field_0x9[3]; - s16 mFrameMax; - u16 mUpdateMaterialNum; - u8 field_0x10[0x18-0x10]; - s32 mTableOffset; - s32 mUpdateMaterialIDOffset; - s32 mNameTabOffset; - s32 mRValuesOffset; - s32 mGValuesOffset; - s32 mBValuesOffset; - s32 mAValuesOffset; -}; - -struct J2DScreen {}; - /* 80308A6C-80309290 3033AC 0824+00 0/0 26/26 2/2 .text load__20J2DAnmLoaderDataBaseFPCv */ void* J2DAnmLoaderDataBase::load(void const* param_0) { - const DataHeader* hdr = (const DataHeader*) param_0; + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*) param_0; if (hdr == NULL) { return NULL; } else if (hdr->mMagic == 'J3D1') { @@ -280,8 +98,8 @@ J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} /* 80309308-80309414 303C48 010C+00 2/1 0/0 0/0 .text load__19J2DAnmKeyLoader_v15FPCv */ void *J2DAnmKeyLoader_v15::load(void const* param_0) { - const DataHeader *hdr = (const DataHeader*) param_0; - const DataBlockHeader *dataPtr = &hdr->mFirst; + const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_0; + const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': @@ -300,7 +118,7 @@ void *J2DAnmKeyLoader_v15::load(void const* param_0) { this->readAnmTevReg((J3DAnmTevRegKeyData*) dataPtr); break; } - dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } return _4; } @@ -308,8 +126,8 @@ void *J2DAnmKeyLoader_v15::load(void const* param_0) { /* 80309414-80309570 303D54 015C+00 1/0 0/0 0/0 .text * setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv */ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { - const DataHeader *hdr = (const DataHeader*) param_1; - const DataBlockHeader *dataPtr = &hdr->mFirst; + const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_1; + const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': @@ -338,7 +156,7 @@ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { } break; } - dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } } @@ -348,15 +166,6 @@ void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* pData) this->setAnmTransform((J2DAnmTransformKey*)_4, pData); } -template // TODO move -T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { - if (ptr == NULL) { - return NULL; - } else { - return (T*) ((s32)ptr + (s32)offset); - } -} - /* 80309598-80309634 303ED8 009C+00 2/2 0/0 0/0 .text * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, J3DAnmTransformKeyData const* param_1) { @@ -478,8 +287,8 @@ void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* pAnm, J3DAnmVtxColor /* 80309A80-80309B8C 3043C0 010C+00 2/1 0/0 0/0 .text load__20J2DAnmFullLoader_v15FPCv */ void *J2DAnmFullLoader_v15::load(void const* param_0) { - const DataHeader *hdr = (const DataHeader*) param_0; - const DataBlockHeader *dataPtr = &hdr->mFirst; + const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_0; + const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': @@ -498,7 +307,7 @@ void *J2DAnmFullLoader_v15::load(void const* param_0) { this->readAnmVtxColor((J3DAnmVtxColorFullData*) dataPtr); break; } - dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } return _4; } @@ -506,8 +315,8 @@ void *J2DAnmFullLoader_v15::load(void const* param_0) { /* 80309B8C-80309CE8 3044CC 015C+00 1/0 0/0 0/0 .text * setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv */ void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { - const DataHeader *hdr = (const DataHeader*) pData; - const DataBlockHeader *dataPtr = &hdr->mFirst; + const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) pData; + const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': @@ -531,7 +340,7 @@ void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { this->setAnmVtxColor((J2DAnmVtxColorFull*) pAnm, (J3DAnmVtxColorFullData*) dataPtr); break; } - dataPtr = (DataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); } } From ef1757a63b42bf7f1b43388abf6f3aa4fc12058c Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Wed, 12 Jan 2022 19:23:08 +0100 Subject: [PATCH 5/7] giving up for now --- include/JSystem/J2DGraph/J2DAnimation.h | 8 +- include/JSystem/J2DGraph/J2DAnmLoader.h | 9 +- include/JSystem/JSupport/JSupport.h | 2 +- libs/JSystem/J2DGraph/J2DAnmLoader.cpp | 1013 ++++++++++------- .../J2DGraph/J2DAnmLoader_nonmatching.cpp | 547 +++++++++ 5 files changed, 1186 insertions(+), 393 deletions(-) create mode 100644 libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 77fc4695075..675c3eddc19 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -155,7 +155,7 @@ struct J3DAnmTransformKeyTable { class J2DAnmTransformKey : public J2DAnmTransform { public: - J2DAnmTransformKey(): J2DAnmTransform(NULL, NULL, NULL) { + J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) { field_0x24 = 0; mInfoTable = NULL; } @@ -182,9 +182,7 @@ struct J3DAnmTransformFullTable { class J2DAnmTransformFull : public J2DAnmTransform { public: - J2DAnmTransformFull(): J2DAnmTransform(NULL, NULL, NULL) { - mTableInfo = NULL; - } + J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; } /* 8030CDAC */ virtual ~J2DAnmTransformFull() {} /* 8030A590 */ virtual void getTransform(u16, J3DTransformInfo*) const; @@ -234,7 +232,7 @@ public: /* 0x2C */ u8* mUpdateTexMtxID; /* 0x30 */ u16* mUpdateMaterialID; /* 0x34 */ JUTNameTab field_0x34; - /* 0x44 */ Vec *field_0x44; + /* 0x44 */ Vec* field_0x44; /* 0x48 */ u16 field_0x48; /* 0x4A */ u16 field_0x4a; /* 0x4C */ u16 field_0x4c; diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h index c098b105e5c..398623d9c83 100644 --- a/include/JSystem/J2DGraph/J2DAnmLoader.h +++ b/include/JSystem/J2DGraph/J2DAnmLoader.h @@ -11,7 +11,7 @@ struct J2DAnmLoaderDataBase { class J2DAnmLoader { public: - virtual void *load(void const*) = 0; + virtual void* load(void const*) = 0; virtual void setResource(J2DAnmBase*, void const*) = 0; /* 8030A410 */ virtual ~J2DAnmLoader() {} void* _4; @@ -23,12 +23,11 @@ struct J3DAnmTransformKeyData { /* 0x09 */ u8 _9; /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 _C; - /* 0x0E */ u8 _E[0x14-0xE]; + /* 0x0E */ u8 _E[0x14 - 0xE]; /* 0x14 */ s32 mTableOffset; /* 0x18 */ s32 mScaleOffset; /* 0x1C */ s32 mRotationOffset; /* 0x20 */ s32 mTranslateOffset; - }; struct J3DAnmTextureSRTKeyData; struct J3DAnmColorKeyData; @@ -54,7 +53,7 @@ public: /* 80309FDC */ void readAnmTevReg(J3DAnmTevRegKeyData const*); /* 8030A004 */ void setAnmTevReg(J2DAnmTevRegKey*, J3DAnmTevRegKeyData const*); - /* 80309308 */ virtual void *load(void const*); + /* 80309308 */ virtual void* load(void const*); /* 80309414 */ virtual void setResource(J2DAnmBase*, void const*); /* 803092AC */ virtual ~J2DAnmKeyLoader_v15(); @@ -75,7 +74,7 @@ public: /* 8030A234 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*); /* 8030A25C */ void setAnmVtxColor(J2DAnmVtxColorFull*, J3DAnmVtxColorFullData const*); - /* 80309A80 */ virtual void *load(void const*); + /* 80309A80 */ virtual void* load(void const*); /* 80309B8C */ virtual void setResource(J2DAnmBase*, void const*); /* 80309D04 */ virtual ~J2DAnmFullLoader_v15(); diff --git a/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h index 830116e95e3..7c1d91058ab 100644 --- a/include/JSystem/JSupport/JSupport.h +++ b/include/JSystem/JSupport/JSupport.h @@ -6,7 +6,7 @@ T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { if (ptr == NULL) { return NULL; } else { - return (T*) ((s32)ptr + (s32)offset); + return (T*)((s32)ptr + (s32)offset); } } diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp index 31e29f891e3..4ed0e1c6743 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader.cpp @@ -3,9 +3,9 @@ // Translation Unit: J2DAnmLoader // -#include "JSystem/J2DGraph/J2DAnmLoader.h" -#include "JSystem/J2DGraph/J2DAnimation.h" -#include "JSystem/JSupport/JSupport.h" +// See J2DAnmLoader_nonmatching.cpp + +// #include "JSystem/J2DGraph/J2DAnmLoader.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -13,490 +13,739 @@ // Types: // +struct _GXColor {}; + +struct ResNTAB {}; + +struct JUTNameTab { + /* 802DE9A0 */ JUTNameTab(); + /* 802DEA1C */ void setResource(ResNTAB const*); +}; + +struct J3DAnmVtxColorKeyData {}; + +struct J3DAnmVtxColorFullData {}; + +struct J3DAnmVisibilityFullData {}; + +struct J3DAnmTransformKeyData {}; + +struct J3DAnmTransformFullData {}; + +struct J3DAnmTextureSRTKeyData {}; + +struct J3DAnmTexPatternFullData {}; + +struct J3DAnmTevRegKeyData {}; + +struct J3DAnmColorKeyData {}; + +struct J3DAnmColorFullData {}; + +struct J2DScreen {}; + +struct J2DAnmVtxColorKey {}; + +struct J2DAnmVtxColorFull {}; + +struct J2DAnmVtxColor { + /* 8030363C */ void getColor(u8, u16, _GXColor*) const; + /* 8030A358 */ ~J2DAnmVtxColor(); +}; + +struct J2DAnmVisibilityFull { + /* 8030A3B4 */ ~J2DAnmVisibilityFull(); +}; + +struct J2DAnmTransformKey {}; + +struct J2DAnmTransformFull {}; + +struct J2DAnmTextureSRTKey {}; + +struct J2DAnmTexPattern {}; + +struct J2DAnmTevRegKey {}; + +struct J2DAnmLoaderDataBase { + /* 80308A6C */ void load(void const*); +}; + +struct J2DAnmLoader { + /* 8030A410 */ ~J2DAnmLoader(); +}; + +struct J2DAnmBase { + /* 800569B0 */ void searchUpdateMaterialID(J2DScreen*); +}; + +struct J2DAnmColorKey {}; + +struct J2DAnmKeyLoader_v15 { + /* 80309290 */ J2DAnmKeyLoader_v15(); + /* 803092AC */ ~J2DAnmKeyLoader_v15(); + /* 80309308 */ void load(void const*); + /* 80309414 */ void setResource(J2DAnmBase*, void const*); + /* 80309570 */ void readAnmTransform(J3DAnmTransformKeyData const*); + /* 80309598 */ void setAnmTransform(J2DAnmTransformKey*, J3DAnmTransformKeyData const*); + /* 80309634 */ void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*); + /* 8030965C */ void setAnmTextureSRT(J2DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*); + /* 80309848 */ void readAnmColor(J3DAnmColorKeyData const*); + /* 80309870 */ void setAnmColor(J2DAnmColorKey*, J3DAnmColorKeyData const*); + /* 8030995C */ void readAnmVtxColor(J3DAnmVtxColorKeyData const*); + /* 80309984 */ void setAnmVtxColor(J2DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*); + /* 80309FDC */ void readAnmTevReg(J3DAnmTevRegKeyData const*); + /* 8030A004 */ void setAnmTevReg(J2DAnmTevRegKey*, J3DAnmTevRegKeyData const*); +}; + +struct J2DAnmColorFull {}; + +struct J2DAnmFullLoader_v15 { + /* 80309A80 */ void load(void const*); + /* 80309B8C */ void setResource(J2DAnmBase*, void const*); + /* 80309CE8 */ J2DAnmFullLoader_v15(); + /* 80309D04 */ ~J2DAnmFullLoader_v15(); + /* 80309D60 */ void readAnmTransform(J3DAnmTransformFullData const*); + /* 80309D88 */ void setAnmTransform(J2DAnmTransformFull*, J3DAnmTransformFullData const*); + /* 80309E1C */ void readAnmColor(J3DAnmColorFullData const*); + /* 80309E44 */ void setAnmColor(J2DAnmColorFull*, J3DAnmColorFullData const*); + /* 80309F10 */ void readAnmTexPattern(J3DAnmTexPatternFullData const*); + /* 80309F38 */ void setAnmTexPattern(J2DAnmTexPattern*, J3DAnmTexPatternFullData const*); + /* 8030A190 */ void readAnmVisibility(J3DAnmVisibilityFullData const*); + /* 8030A1B8 */ void setAnmVisibility(J2DAnmVisibilityFull*, J3DAnmVisibilityFullData const*); + /* 8030A234 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*); + /* 8030A25C */ void setAnmVtxColor(J2DAnmVtxColorFull*, J3DAnmVtxColorFullData const*); +}; + +// +// Forward References: +// + +extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); +extern "C" void __ct__19J2DAnmKeyLoader_v15Fv(); +extern "C" void __dt__19J2DAnmKeyLoader_v15Fv(); +extern "C" void load__19J2DAnmKeyLoader_v15FPCv(); +extern "C" void setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv(); +extern "C" void readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData(); +extern "C" void +setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData(); +extern "C" void readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData(); +extern "C" void +setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData(); +extern "C" void readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData(); +extern "C" void setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData(); +extern "C" void readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData(); +extern "C" void +setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData(); +extern "C" void load__20J2DAnmFullLoader_v15FPCv(); +extern "C" void setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv(); +extern "C" void __ct__20J2DAnmFullLoader_v15Fv(); +extern "C" void __dt__20J2DAnmFullLoader_v15Fv(); +extern "C" void readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData(); +extern "C" void +setAnmTransform__20J2DAnmFullLoader_v15FP19J2DAnmTransformFullPC23J3DAnmTransformFullData(); +extern "C" void readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData(); +extern "C" void setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData(); +extern "C" void readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData(); +extern "C" void +setAnmTexPattern__20J2DAnmFullLoader_v15FP16J2DAnmTexPatternPC24J3DAnmTexPatternFullData(); +extern "C" void readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData(); +extern "C" void setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData(); +extern "C" void readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData(); +extern "C" void +setAnmVisibility__20J2DAnmFullLoader_v15FP20J2DAnmVisibilityFullPC24J3DAnmVisibilityFullData(); +extern "C" void readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData(); +extern "C" void +setAnmVtxColor__20J2DAnmFullLoader_v15FP18J2DAnmVtxColorFullPC22J3DAnmVtxColorFullData(); +extern "C" void __dt__14J2DAnmVtxColorFv(); +extern "C" void __dt__20J2DAnmVisibilityFullFv(); +extern "C" void __dt__12J2DAnmLoaderFv(); +extern "C" void func_8030A458(void const*, void const*); +extern "C" void func_8030A470(void const*, void const*); +extern "C" void func_8030A488(void const*, void const*); +extern "C" void func_8030A4A0(void const*, void const*); +extern "C" void func_8030A4B8(void const*, void const*); +extern "C" void func_8030A4D0(void const*, void const*); +extern "C" void func_8030A4E8(void const*, void const*); +extern "C" void func_8030A500(void const*, void const*); +extern "C" void func_8030A518(void const*, void const*); +extern "C" void func_8030A530(void const*, void const*); +extern "C" void func_8030A548(void const*, void const*); +extern "C" void func_8030A560(void const*, void const*); +extern "C" void func_8030A578(void const*, void const*); + +// +// External References: +// + +extern "C" void searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen(); +extern "C" void* __nw__FUl(); +extern "C" void __dl__FPv(); +extern "C" void __ct__10JUTNameTabFv(); +extern "C" void setResource__10JUTNameTabFPC7ResNTAB(); +extern "C" void func_802F4260(void const*, void const*); +extern "C" void func_802F42C0(void const*, void const*); +extern "C" void getColor__14J2DAnmVtxColorCFUcUsP8_GXColor(); +extern "C" void _savegpr_26(); +extern "C" void _savegpr_27(); +extern "C" void _restgpr_26(); +extern "C" void _restgpr_27(); +extern "C" extern void* __vt__10J2DAnmBase[4]; +extern "C" extern void* __vt__15J2DAnmTransform[5 + 4 /* padding */]; +extern "C" extern void* __vt__15J2DAnmTevRegKey[4]; +extern "C" extern void* __vt__16J2DAnmTexPattern[4]; +extern "C" extern void* __vt__19J2DAnmTextureSRTKey[4]; +extern "C" extern void* __vt__17J2DAnmVtxColorKey[5]; +extern "C" extern void* __vt__18J2DAnmVtxColorFull[5]; +extern "C" extern void* __vt__14J2DAnmColorKey[5]; +extern "C" extern void* __vt__15J2DAnmColorFull[5]; +extern "C" extern void* __vt__11J2DAnmColor[5]; +extern "C" extern void* __vt__18J2DAnmTransformKey[6]; +extern "C" extern void* __vt__19J2DAnmTransformFull[5]; + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 803CD6C8-803CD6DC 02A7E8 0014+00 2/2 0/0 0/0 .data __vt__20J2DAnmFullLoader_v15 */ +SECTION_DATA extern void* __vt__20J2DAnmFullLoader_v15[5] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__20J2DAnmFullLoader_v15FPCv, + (void*)setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv, + (void*)__dt__20J2DAnmFullLoader_v15Fv, +}; + +/* 803CD6DC-803CD6F0 02A7FC 0014+00 2/2 0/0 0/0 .data __vt__19J2DAnmKeyLoader_v15 */ +SECTION_DATA extern void* __vt__19J2DAnmKeyLoader_v15[5] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)load__19J2DAnmKeyLoader_v15FPCv, + (void*)setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv, + (void*)__dt__19J2DAnmKeyLoader_v15Fv, +}; + +/* 803CD6F0-803CD704 02A810 0014+00 5/5 0/0 0/0 .data __vt__12J2DAnmLoader */ +SECTION_DATA extern void* __vt__12J2DAnmLoader[5] = { + (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)__dt__12J2DAnmLoaderFv, +}; + +/* 803CD704-803CD714 02A824 0010+00 2/2 0/0 0/0 .data __vt__20J2DAnmVisibilityFull */ +SECTION_DATA extern void* __vt__20J2DAnmVisibilityFull[4] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)__dt__20J2DAnmVisibilityFullFv, + (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, +}; + +/* 803CD714-803CD728 02A834 0014+00 2/2 2/2 0/0 .data __vt__14J2DAnmVtxColor */ +SECTION_DATA extern void* __vt__14J2DAnmVtxColor[5] = { + (void*)NULL /* RTTI */, + (void*)NULL, + (void*)__dt__14J2DAnmVtxColorFv, + (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, + (void*)getColor__14J2DAnmVtxColorCFUcUsP8_GXColor, +}; + +/* 804562F8-80456300 0048F8 0004+04 11/11 0/0 0/0 .sdata2 @1581 */ +SECTION_SDATA2 static f32 lit_1581[1 + 1 /* padding */] = { + 0.0f, + /* padding */ + 0.0f, +}; + /* 80308A6C-80309290 3033AC 0824+00 0/0 26/26 2/2 .text load__20J2DAnmLoaderDataBaseFPCv */ -void* J2DAnmLoaderDataBase::load(void const* param_0) { - const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*) param_0; - if (hdr == NULL) { - return NULL; - } else if (hdr->mMagic == 'J3D1') { - switch (hdr->mType) { - case 'bck1': - {J2DAnmKeyLoader_v15 loader; - loader._4 = new J2DAnmTransformKey(); - return loader.load(param_0); - break; - } - case 'bpk1': - {J2DAnmKeyLoader_v15 loader; - loader._4 = new J2DAnmColorKey(); - return loader.load(param_0); - break; - } - case 'blk1': - return NULL; - case 'btk1': - {J2DAnmKeyLoader_v15 loader; - loader._4 = new J2DAnmTextureSRTKey(); - return loader.load(param_0); - break; - } - case 'brk1': - {J2DAnmKeyLoader_v15 loader; - loader._4 = new J2DAnmTevRegKey(); - return loader.load(param_0); - break; - } - case 'bxk1': - {J2DAnmKeyLoader_v15 loader; - loader._4 = new J2DAnmVtxColorKey(); - return loader.load(param_0); - break; - } - case 'bca1': - {J2DAnmFullLoader_v15 loader; - loader._4 = new J2DAnmTransformFull(); - return loader.load(param_0); - break; - } - case 'bpa1': - {J2DAnmFullLoader_v15 loader; - loader._4 = new J2DAnmColorFull(); - return loader.load(param_0); - break; - } - case 'btp1': - {J2DAnmFullLoader_v15 loader; - loader._4 = new J2DAnmTexPattern(); - return loader.load(param_0); - } - case 'bva1': - {J2DAnmFullLoader_v15 loader; - loader._4 = new J2DAnmVisibilityFull(); - return loader.load(param_0); - break; - } - case 'bla1': - return NULL; - case 'bxa1': - {J2DAnmFullLoader_v15 loader; - loader._4 = new J2DAnmVtxColorFull(); - return loader.load(param_0); - } - } - return NULL; - } else { - return NULL; - } +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmLoaderDataBase::load(void const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__20J2DAnmLoaderDataBaseFPCv.s" } +#pragma pop /* 80309290-803092AC 303BD0 001C+00 1/1 0/0 0/0 .text __ct__19J2DAnmKeyLoader_v15Fv */ -J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__ct__19J2DAnmKeyLoader_v15Fv.s" +} +#pragma pop /* 803092AC-80309308 303BEC 005C+00 2/1 0/0 0/0 .text __dt__19J2DAnmKeyLoader_v15Fv */ -J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__19J2DAnmKeyLoader_v15Fv.s" +} +#pragma pop /* 80309308-80309414 303C48 010C+00 2/1 0/0 0/0 .text load__19J2DAnmKeyLoader_v15FPCv */ -void *J2DAnmKeyLoader_v15::load(void const* param_0) { - const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_0; - const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; - for (s32 i = 0; i < hdr->mCount; i++) { - switch (dataPtr->mType) { - case 'ANK1': - this->readAnmTransform((J3DAnmTransformKeyData*) dataPtr); - break; - case 'PAK1': - this->readAnmColor((J3DAnmColorKeyData*) dataPtr); - break; - case 'TTK1': - this->readAnmTextureSRT((J3DAnmTextureSRTKeyData*) dataPtr); - break; - case 'VCK1': - this->readAnmVtxColor((J3DAnmVtxColorKeyData*) dataPtr); - break; - case 'TRK1': - this->readAnmTevReg((J3DAnmTevRegKeyData*) dataPtr); - break; - } - dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); - } - return _4; +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::load(void const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__19J2DAnmKeyLoader_v15FPCv.s" } +#pragma pop /* 80309414-80309570 303D54 015C+00 1/0 0/0 0/0 .text * setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv */ -void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { - const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_1; - const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; - for (s32 i = 0; i < hdr->mCount; i++) { - switch (dataPtr->mType) { - case 'ANK1': - if (pAnm->getKind() == 0) { - this->setAnmTransform((J2DAnmTransformKey*) pAnm, (J3DAnmTransformKeyData*) dataPtr); - } - break; - case 'PAK1': - if (pAnm->getKind() == 1) { - this->setAnmColor((J2DAnmColorKey*) pAnm, (J3DAnmColorKeyData*) dataPtr); - } - break; - case 'TTK1': - if (pAnm->getKind() == 4) { - this->setAnmTextureSRT((J2DAnmTextureSRTKey*) pAnm, (J3DAnmTextureSRTKeyData*) dataPtr); - } - break; - case 'TRK1': - if (pAnm->getKind() == 5) { - this->setAnmTevReg((J2DAnmTevRegKey*) pAnm, (J3DAnmTevRegKeyData*) dataPtr); - } - break; - case 'VCK1': - if (pAnm->getKind() == 7) { - this->setAnmVtxColor((J2DAnmVtxColorKey*) pAnm, (J3DAnmVtxColorKeyData*) dataPtr); - } - break; - } - dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); - } +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv.s" } +#pragma pop /* 80309570-80309598 303EB0 0028+00 1/1 0/0 0/0 .text * readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ -void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* pData) { - this->setAnmTransform((J2DAnmTransformKey*)_4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData.s" } +#pragma pop /* 80309598-80309634 303ED8 009C+00 2/2 0/0 0/0 .text * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ -void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, J3DAnmTransformKeyData const* param_1) { - param_0->field_0x22 = param_1->_C; - param_0->mFrameMax = param_1->mFrameMax; - param_0->field_0x4 = param_1->_8; - param_0->field_0x24 = param_1->_9; - param_0->mFrame = 0; - param_0->mInfoTable = JSUConvertOffsetToPtr(param_1, (void*)param_1->mTableOffset); - param_0->mScaleValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mScaleOffset); - param_0->mRotationValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mRotationOffset); - param_0->mTranslateValues = JSUConvertOffsetToPtr(param_1, (void*) param_1->mTranslateOffset); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, + J3DAnmTransformKeyData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309598.s" } +#pragma pop /* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text * readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ -void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { - this->setAnmTextureSRT((J2DAnmTextureSRTKey*) _4, param_0); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData.s" } +#pragma pop /* 8030965C-80309848 303F9C 01EC+00 2/2 0/0 0/0 .text * setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ -void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* pAnm, J3DAnmTextureSRTKeyData const* pData) { - pAnm->mUpdateMaterialNum = pData->field_0xc; - pAnm->mFrameMax = pData->field_0xa; - pAnm->field_0x4 = pData->field_0x8; - pAnm->field_0x10 = pData->field_0x9; - pAnm->mFrame = 0; - pAnm->mUpdateMaterialNum = pData->field_0xc; - pAnm->field_0x1a = pData->field_0xe; - pAnm->field_0x1c = pData->field_0x10; - pAnm->field_0x1e = pData->field_0x12; - pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); - pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMatIDOffset); - pAnm->field_0x34.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab1Offset)); - pAnm->mUpdateTexMtxID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateTexMtxIDOffset); - pAnm->field_0x44 = JSUConvertOffsetToPtr(pData, (void*)pData->unkOffset); - pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*)pData->mScaleValOffset); - pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRotValOffset); - pAnm->mTranslationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mTransValOffset); - if (pData->mNameTab2Offset != 0) { - pAnm->field_0x68.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab2Offset)); - } - pAnm->field_0x4e = pData->field_0x34; - pAnm->field_0x48 = pData->field_0x36; - pAnm->field_0x4a = pData->field_0x38; - pAnm->field_0x4c = pData->field_0x3a; - pAnm->field_0x5c = JSUConvertOffsetToPtr(pData, (void*)pData->mInfoTable2Offset); - pAnm->field_0x64 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x40); - pAnm->field_0x60 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); - pAnm->field_0x78 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); - pAnm->field_0x50 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x50); - pAnm->field_0x54 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x54); - pAnm->field_0x58 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x58); - switch (pData->field_0x5c) { - case 0: - pAnm->field_0x7c = 0; - break; - case 1: - pAnm->field_0x7c = 1; - break; - default: - pAnm->field_0x7c = 0; - break; - } +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* param_0, + J3DAnmTextureSRTKeyData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030965C.s" } +#pragma pop /* 80309848-80309870 304188 0028+00 1/1 0/0 0/0 .text * readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ -void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* pData) { - this->setAnmColor((J2DAnmColorKey*)_4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData.s" } +#pragma pop /* 80309870-8030995C 3041B0 00EC+00 2/2 0/0 0/0 .text * setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData */ -void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* pAnm, J3DAnmColorKeyData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; - pAnm->field_0x10 = pData->field_0x10; - pAnm->field_0x12 = pData->field_0x12; - pAnm->field_0x14 = pData->field_0x14; - pAnm->field_0x16 = pData->field_0x16; - pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); - pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValOffset); - pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValOffset); - pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValOffset); - pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValOffset); - pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMaterialIDOffset); - pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*)pData->mNameTabOffset)); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* param_0, + J3DAnmColorKeyData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData.s" } +#pragma pop /* 8030995C-80309984 30429C 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ -void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* pData) { - this->setAnmVtxColor((J2DAnmVtxColorKey*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData.s" } +#pragma pop /* 80309984-80309A80 3042C4 00FC+00 2/2 0/0 0/0 .text * setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */ -void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* pAnm, J3DAnmVtxColorKeyData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; - pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; - pAnm->mInfoTable[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[0]); - pAnm->mInfoTable[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[1]); - pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexDataOffset[0]); - pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexDataOffset[1]); - pAnm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexPointerOffset[0]); - pAnm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColoIndexPointerOffset[1]); - pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValOffset); - pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValOffset); - pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValOffset); - pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValOffset); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* param_0, + J3DAnmVtxColorKeyData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData.s" } +#pragma pop /* 80309A80-80309B8C 3043C0 010C+00 2/1 0/0 0/0 .text load__20J2DAnmFullLoader_v15FPCv */ -void *J2DAnmFullLoader_v15::load(void const* param_0) { - const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) param_0; - const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; - for (s32 i = 0; i < hdr->mCount; i++) { - switch (dataPtr->mType) { - case 'ANF1': - this->readAnmTransform((J3DAnmTransformFullData*) dataPtr); - break; - case 'PAF1': - this->readAnmColor((J3DAnmColorFullData*) dataPtr); - break; - case 'TPT1': - this->readAnmTexPattern((J3DAnmTexPatternFullData*) dataPtr); - break; - case 'VAF1': - this->readAnmVisibility((J3DAnmVisibilityFullData*) dataPtr); - break; - case 'VCF1': - this->readAnmVtxColor((J3DAnmVtxColorFullData*) dataPtr); - break; - } - dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); - } - return _4; +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::load(void const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/load__20J2DAnmFullLoader_v15FPCv.s" } +#pragma pop /* 80309B8C-80309CE8 3044CC 015C+00 1/0 0/0 0/0 .text * setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv */ -void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { - const J3DAnmDataHeader *hdr = (const J3DAnmDataHeader*) pData; - const J3DAnmDataBlockHeader *dataPtr = &hdr->mFirst; - for (s32 i = 0; i < hdr->mCount; i++) { - switch (dataPtr->mType) { - case 'ANF1': - if (pAnm->getKind() == 0) - this->setAnmTransform((J2DAnmTransformFull*) pAnm, (J3DAnmTransformFullData*) dataPtr); - break; - case 'PAF1': - if (pAnm->getKind() == 1) - this->setAnmColor((J2DAnmColorFull*) pAnm, (J3DAnmColorFullData*) dataPtr); - break; - case 'TPT1': - if (pAnm->getKind() == 2) - this->setAnmTexPattern((J2DAnmTexPattern*) pAnm, (J3DAnmTexPatternFullData*) dataPtr); - break; - case 'VAF1': - if (pAnm->getKind() == 6) - this->setAnmVisibility((J2DAnmVisibilityFull*) pAnm, (J3DAnmVisibilityFullData*) dataPtr); - break; - case 'VCF1': - if (pAnm->getKind() == 7) - this->setAnmVtxColor((J2DAnmVtxColorFull*) pAnm, (J3DAnmVtxColorFullData*) dataPtr); - break; - } - dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); - } +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setResource(J2DAnmBase* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv.s" } +#pragma pop /* 80309CE8-80309D04 304628 001C+00 1/1 0/0 0/0 .text __ct__20J2DAnmFullLoader_v15Fv */ -J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__ct__20J2DAnmFullLoader_v15Fv.s" +} +#pragma pop /* 80309D04-80309D60 304644 005C+00 2/1 0/0 0/0 .text __dt__20J2DAnmFullLoader_v15Fv */ -J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__20J2DAnmFullLoader_v15Fv.s" +} +#pragma pop /* 80309D60-80309D88 3046A0 0028+00 1/1 0/0 0/0 .text * readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ -void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* pData) { - this->setAnmTransform((J2DAnmTransformFull*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData.s" } +#pragma pop /* 80309D88-80309E1C 3046C8 0094+00 2/2 0/0 0/0 .text * setAnmTransform__20J2DAnmFullLoader_v15FP19J2DAnmTransformFullPC23J3DAnmTransformFullData */ -void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* pAnm, J3DAnmTransformFullData const* pData) { - pAnm->field_0x22 = pData->field_0xc; - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mTableInfo = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); - pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*) pData->mScaleValOffset); - pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRotValOffset); - pAnm->mTranslateValues = JSUConvertOffsetToPtr(pData, (void*) pData->mTransValOffset); - +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* param_0, + J3DAnmTransformFullData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309D88.s" } +#pragma pop /* 80309E1C-80309E44 30475C 0028+00 1/1 0/0 0/0 .text * readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData */ -void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* pData) { - this->setAnmColor((J2DAnmColorFull*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData.s" } +#pragma pop /* 80309E44-80309F10 304784 00CC+00 2/2 0/0 0/0 .text * setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData */ -void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* pAnm, J3DAnmColorFullData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; - pAnm->mInfoTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); - pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValuesOffset); - pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValuesOffset); - pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValuesOffset); - pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValuesOffset); - pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mUpdateMaterialIDOffset); - pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mNameTabOffset)); - +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* param_0, + J3DAnmColorFullData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData.s" } +#pragma pop /* 80309F10-80309F38 304850 0028+00 1/1 0/0 0/0 .text * readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ -void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* pData) { - this->setAnmTexPattern((J2DAnmTexPattern*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData.s" } +#pragma pop /* 80309F38-80309FDC 304878 00A4+00 2/2 0/0 0/0 .text * setAnmTexPattern__20J2DAnmFullLoader_v15FP16J2DAnmTexPatternPC24J3DAnmTexPatternFullData */ -void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* pAnm, J3DAnmTexPatternFullData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mUpdateMaterialNum = pData->field_0xc; - pAnm->field_0x18 = pData->field_0xe; - pAnm->mAnmTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); - pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*) pData->mValuesOffset); - pAnm->mUpdaterMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mUpdaterMaterialIDOffset); - pAnm->field_0x20.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mNameTabOffset)); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* param_0, + J3DAnmTexPatternFullData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_80309F38.s" } +#pragma pop /* 80309FDC-8030A004 30491C 0028+00 1/1 0/0 0/0 .text * readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ -void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* pData) { - this->setAnmTevReg((J2DAnmTevRegKey*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData.s" } +#pragma pop /* 8030A004-8030A190 304944 018C+00 2/2 0/0 0/0 .text * setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ -void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* pAnm, J3DAnmTevRegKeyData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mCRegUpdateMaterialNum = pData->mCRegUpdateMaterialNum; - pAnm->mAnmCRegKeyTable = JSUConvertOffsetToPtr(pData, (void*) pData->mCRegTableOffset); - pAnm->mCRegUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mCRegUpdateMaterialIDOffset); - pAnm->mCRegNameTab.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mCRegNameTabOffset)); - pAnm->mKRegUpdateMaterialNum = pData->mKRegUpdateMaterialNum; - pAnm->mAnmKRegKeyTable = JSUConvertOffsetToPtr(pData, (void*) pData->mKRegTableOffset); - pAnm->mKRegUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*) pData->mKRegUpdateMaterialIDOffset); - pAnm->mKRegNameTab.setResource(JSUConvertOffsetToPtr(pData, (void*) pData->mKRegNameTabOffset)); - pAnm->field_0x14 = pData->field_0x10; - pAnm->field_0x16 = pData->field_0x12; - pAnm->field_0x18 = pData->field_0x14; - pAnm->field_0x1a = pData->field_0x16; - pAnm->mCRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCRValuesOffset); - pAnm->mCGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCGValuesOffset); - pAnm->mCBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCBValuesOffset); - pAnm->mCAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mCAValuesOffset); - pAnm->field_0x1c = pData->field_0x18; - pAnm->field_0x1e = pData->field_0x1a; - pAnm->field_0x20 = pData->field_0x1c; - pAnm->field_0x22 = pData->field_0x1e; - pAnm->mKRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKRValuesOffset); - pAnm->mKGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKGValuesOffset); - pAnm->mKBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKBValuesOffset); - pAnm->mKAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mKAValuesOffset); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* param_0, + J3DAnmTevRegKeyData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData.s" } +#pragma pop /* 8030A190-8030A1B8 304AD0 0028+00 1/1 0/0 0/0 .text * readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ -void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* pData) { - this->setAnmVisibility((J2DAnmVisibilityFull*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData.s" } +#pragma pop /* 8030A1B8-8030A234 304AF8 007C+00 2/2 0/0 0/0 .text * setAnmVisibility__20J2DAnmFullLoader_v15FP20J2DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ -void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* pAnm, J3DAnmVisibilityFullData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->field_0x10 = pData->field_0xc; - pAnm->field_0x12 = pData->field_0xe; - pAnm->mTable = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffset); - pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*) pData->mValuesOffset); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* param_0, + J3DAnmVisibilityFullData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A1B8.s" } +#pragma pop /* 8030A234-8030A25C 304B74 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ -void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* pData) { - this->setAnmVtxColor((J2DAnmVtxColorFull*) _4, pData); +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* param_0) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData.s" } +#pragma pop /* 8030A25C-8030A358 304B9C 00FC+00 2/2 0/0 0/0 .text * setAnmVtxColor__20J2DAnmFullLoader_v15FP18J2DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ -void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* pAnm, J3DAnmVtxColorFullData const* pData) { - pAnm->mFrameMax = pData->mFrameMax; - pAnm->field_0x4 = pData->field_0x8; - pAnm->mFrame = 0; - pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; - pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; - pAnm->mInfoTable[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[0]); - pAnm->mInfoTable[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mTableOffsets[1]); - pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexDataOffsets[0]); - pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexDataOffsets[1]); - pAnm->mVtxColorIndexPointer[0] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexPointerOffsets[0]); - pAnm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr(pData, (void*) pData->mVtxColorIndexPointerOffsets[1]); - pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*) pData->mRValuesOffset); - pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*) pData->mGValuesOffset); - pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*) pData->mBValuesOffset); - pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*) pData->mAValuesOffset); - +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* param_0, + J3DAnmVtxColorFullData const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A25C.s" } +#pragma pop /* 8030A358-8030A3B4 304C98 005C+00 1/0 0/0 0/0 .text __dt__14J2DAnmVtxColorFv */ -// J2DAnmVtxColor::~J2DAnmVtxColor() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmVtxColor::~J2DAnmVtxColor() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__14J2DAnmVtxColorFv.s" +} +#pragma pop + /* 8030A3B4-8030A410 304CF4 005C+00 1/0 0/0 0/0 .text __dt__20J2DAnmVisibilityFullFv */ -// J2DAnmVisibilityFull::~J2DAnmVisibilityFull() {} +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmVisibilityFull::~J2DAnmVisibilityFull() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__20J2DAnmVisibilityFullFv.s" +} +#pragma pop + +/* 8030A410-8030A458 304D50 0048+00 1/0 0/0 0/0 .text __dt__12J2DAnmLoaderFv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm J2DAnmLoader::~J2DAnmLoader() { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/__dt__12J2DAnmLoaderFv.s" +} +#pragma pop + +/* 8030A458-8030A470 304D98 0018+00 1/1 1/1 0/0 .text + * JSUConvertOffsetToPtr<25J3DAnmVisibilityFullTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A458(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A458.s" +} +#pragma pop + +/* 8030A470-8030A488 304DB0 0018+00 1/1 1/1 0/0 .text + * JSUConvertOffsetToPtr<18J3DAnmKRegKeyTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A470(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A470.s" +} +#pragma pop + +/* 8030A488-8030A4A0 304DC8 0018+00 1/1 1/1 0/0 .text + * JSUConvertOffsetToPtr<18J3DAnmCRegKeyTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A488(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A488.s" +} +#pragma pop + +/* 8030A4A0-8030A4B8 304DE0 0018+00 1/1 1/1 0/0 .text + * JSUConvertOffsetToPtr<25J3DAnmTexPatternFullTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A4A0(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4A0.s" +} +#pragma pop + +/* 8030A4B8-8030A4D0 304DF8 0018+00 2/2 2/2 0/0 .text + * JSUConvertOffsetToPtr<20J3DAnmColorFullTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A4B8(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4B8.s" +} +#pragma pop + +/* 8030A4D0-8030A4E8 304E10 0018+00 1/1 1/1 0/0 .text + * JSUConvertOffsetToPtr<24J3DAnmTransformFullTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A4D0(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4D0.s" +} +#pragma pop + +/* 8030A4E8-8030A500 304E28 0018+00 2/2 2/2 0/0 .text + * JSUConvertOffsetToPtr<23J3DAnmVtxColorIndexData>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A4E8(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A4E8.s" +} +#pragma pop + +/* 8030A500-8030A518 304E40 0018+00 2/2 2/2 0/0 .text + * JSUConvertOffsetToPtr<19J3DAnmColorKeyTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A500(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A500.s" +} +#pragma pop + +/* 8030A518-8030A530 304E58 0018+00 1/1 1/1 0/0 .text JSUConvertOffsetToPtr<3Vec>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A518(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A518.s" +} +#pragma pop + +/* 8030A530-8030A548 304E70 0018+00 5/5 16/16 0/0 .text JSUConvertOffsetToPtr<7ResNTAB>__FPCvPCv + */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A530(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A530.s" +} +#pragma pop + +/* 8030A548-8030A560 304E88 0018+00 6/6 6/6 0/0 .text JSUConvertOffsetToPtr__FPCvPCv + */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A548(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A548.s" +} +#pragma pop + +/* 8030A560-8030A578 304EA0 0018+00 3/3 7/7 0/0 .text JSUConvertOffsetToPtr__FPCvPCv + */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A560(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A560.s" +} +#pragma pop + +/* 8030A578-8030A590 304EB8 0018+00 2/2 2/2 0/0 .text + * JSUConvertOffsetToPtr<23J3DAnmTransformKeyTable>__FPCvPCv */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8030A578(void const* param_0, void const* param_1) { + nofralloc +#include "asm/JSystem/J2DGraph/J2DAnmLoader/func_8030A578.s" +} +#pragma pop diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp new file mode 100644 index 00000000000..157e08795b1 --- /dev/null +++ b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp @@ -0,0 +1,547 @@ +// +// Generated By: dol2asm +// Translation Unit: J2DAnmLoader +// + +// non matching because some dtors are emitted immediately after +// J2DAnmLoaderDataBase::load but they should be at the very end + +#include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/J2DGraph/J2DAnmLoader.h" +#include "JSystem/JSupport/JSupport.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// Types: +// + +/* 80308A6C-80309290 3033AC 0824+00 0/0 26/26 2/2 .text load__20J2DAnmLoaderDataBaseFPCv + */ +void* J2DAnmLoaderDataBase::load(void const* param_0) { + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)param_0; + if (hdr == NULL) { + return NULL; + } else if (hdr->mMagic == 'J3D1') { + switch (hdr->mType) { + case 'bck1': { + J2DAnmKeyLoader_v15 loader; + loader._4 = new J2DAnmTransformKey(); + return loader.load(param_0); + break; + } + case 'bpk1': { + J2DAnmKeyLoader_v15 loader; + loader._4 = new J2DAnmColorKey(); + return loader.load(param_0); + break; + } + case 'blk1': + return NULL; + case 'btk1': { + J2DAnmKeyLoader_v15 loader; + loader._4 = new J2DAnmTextureSRTKey(); + return loader.load(param_0); + break; + } + case 'brk1': { + J2DAnmKeyLoader_v15 loader; + loader._4 = new J2DAnmTevRegKey(); + return loader.load(param_0); + break; + } + case 'bxk1': { + J2DAnmKeyLoader_v15 loader; + loader._4 = new J2DAnmVtxColorKey(); + return loader.load(param_0); + break; + } + case 'bca1': { + J2DAnmFullLoader_v15 loader; + loader._4 = new J2DAnmTransformFull(); + return loader.load(param_0); + break; + } + case 'bpa1': { + J2DAnmFullLoader_v15 loader; + loader._4 = new J2DAnmColorFull(); + return loader.load(param_0); + break; + } + case 'btp1': { + J2DAnmFullLoader_v15 loader; + loader._4 = new J2DAnmTexPattern(); + return loader.load(param_0); + } + case 'bva1': { + J2DAnmFullLoader_v15 loader; + loader._4 = new J2DAnmVisibilityFull(); + return loader.load(param_0); + break; + } + case 'bla1': + return NULL; + case 'bxa1': { + J2DAnmFullLoader_v15 loader; + loader._4 = new J2DAnmVtxColorFull(); + return loader.load(param_0); + } + } + return NULL; + } else { + return NULL; + } +} + +/* 80309290-803092AC 303BD0 001C+00 1/1 0/0 0/0 .text __ct__19J2DAnmKeyLoader_v15Fv */ +J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {} + +/* 803092AC-80309308 303BEC 005C+00 2/1 0/0 0/0 .text __dt__19J2DAnmKeyLoader_v15Fv */ +J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {} + +/* 80309308-80309414 303C48 010C+00 2/1 0/0 0/0 .text load__19J2DAnmKeyLoader_v15FPCv */ +void* J2DAnmKeyLoader_v15::load(void const* param_0) { + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)param_0; + const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANK1': + this->readAnmTransform((J3DAnmTransformKeyData*)dataPtr); + break; + case 'PAK1': + this->readAnmColor((J3DAnmColorKeyData*)dataPtr); + break; + case 'TTK1': + this->readAnmTextureSRT((J3DAnmTextureSRTKeyData*)dataPtr); + break; + case 'VCK1': + this->readAnmVtxColor((J3DAnmVtxColorKeyData*)dataPtr); + break; + case 'TRK1': + this->readAnmTevReg((J3DAnmTevRegKeyData*)dataPtr); + break; + } + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } + return _4; +} + +/* 80309414-80309570 303D54 015C+00 1/0 0/0 0/0 .text + * setResource__19J2DAnmKeyLoader_v15FP10J2DAnmBasePCv */ +void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)param_1; + const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANK1': + if (pAnm->getKind() == 0) { + this->setAnmTransform((J2DAnmTransformKey*)pAnm, (J3DAnmTransformKeyData*)dataPtr); + } + break; + case 'PAK1': + if (pAnm->getKind() == 1) { + this->setAnmColor((J2DAnmColorKey*)pAnm, (J3DAnmColorKeyData*)dataPtr); + } + break; + case 'TTK1': + if (pAnm->getKind() == 4) { + this->setAnmTextureSRT((J2DAnmTextureSRTKey*)pAnm, + (J3DAnmTextureSRTKeyData*)dataPtr); + } + break; + case 'TRK1': + if (pAnm->getKind() == 5) { + this->setAnmTevReg((J2DAnmTevRegKey*)pAnm, (J3DAnmTevRegKeyData*)dataPtr); + } + break; + case 'VCK1': + if (pAnm->getKind() == 7) { + this->setAnmVtxColor((J2DAnmVtxColorKey*)pAnm, (J3DAnmVtxColorKeyData*)dataPtr); + } + break; + } + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } +} + +/* 80309570-80309598 303EB0 0028+00 1/1 0/0 0/0 .text + * readAnmTransform__19J2DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ +void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* pData) { + this->setAnmTransform((J2DAnmTransformKey*)_4, pData); +} + +/* 80309598-80309634 303ED8 009C+00 2/2 0/0 0/0 .text + * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ +void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* param_0, + J3DAnmTransformKeyData const* param_1) { + param_0->field_0x22 = param_1->_C; + param_0->mFrameMax = param_1->mFrameMax; + param_0->field_0x4 = param_1->_8; + param_0->field_0x24 = param_1->_9; + param_0->mFrame = 0; + param_0->mInfoTable = + JSUConvertOffsetToPtr(param_1, (void*)param_1->mTableOffset); + param_0->mScaleValues = JSUConvertOffsetToPtr(param_1, (void*)param_1->mScaleOffset); + param_0->mRotationValues = JSUConvertOffsetToPtr(param_1, (void*)param_1->mRotationOffset); + param_0->mTranslateValues = + JSUConvertOffsetToPtr(param_1, (void*)param_1->mTranslateOffset); +} + +/* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text + * readAnmTextureSRT__19J2DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ +void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { + this->setAnmTextureSRT((J2DAnmTextureSRTKey*)_4, param_0); +} + +/* 8030965C-80309848 303F9C 01EC+00 2/2 0/0 0/0 .text + * setAnmTextureSRT__19J2DAnmKeyLoader_v15FP19J2DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ +void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* pAnm, + J3DAnmTextureSRTKeyData const* pData) { + pAnm->mUpdateMaterialNum = pData->field_0xc; + pAnm->mFrameMax = pData->field_0xa; + pAnm->field_0x4 = pData->field_0x8; + pAnm->field_0x10 = pData->field_0x9; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->field_0xc; + pAnm->field_0x1a = pData->field_0xe; + pAnm->field_0x1c = pData->field_0x10; + pAnm->field_0x1e = pData->field_0x12; + pAnm->mInfoTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mUpdateMaterialID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMatIDOffset); + pAnm->field_0x34.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab1Offset)); + pAnm->mUpdateTexMtxID = JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateTexMtxIDOffset); + pAnm->field_0x44 = JSUConvertOffsetToPtr(pData, (void*)pData->unkOffset); + pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*)pData->mScaleValOffset); + pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRotValOffset); + pAnm->mTranslationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mTransValOffset); + if (pData->mNameTab2Offset != 0) { + pAnm->field_0x68.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mNameTab2Offset)); + } + pAnm->field_0x4e = pData->field_0x34; + pAnm->field_0x48 = pData->field_0x36; + pAnm->field_0x4a = pData->field_0x38; + pAnm->field_0x4c = pData->field_0x3a; + pAnm->field_0x5c = + JSUConvertOffsetToPtr(pData, (void*)pData->mInfoTable2Offset); + pAnm->field_0x64 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x40); + pAnm->field_0x60 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); + pAnm->field_0x78 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x48); + pAnm->field_0x50 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x50); + pAnm->field_0x54 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x54); + pAnm->field_0x58 = JSUConvertOffsetToPtr(pData, (void*)pData->field_0x58); + switch (pData->field_0x5c) { + case 0: + pAnm->field_0x7c = 0; + break; + case 1: + pAnm->field_0x7c = 1; + break; + default: + pAnm->field_0x7c = 0; + break; + } +} + +/* 80309848-80309870 304188 0028+00 1/1 0/0 0/0 .text + * readAnmColor__19J2DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ +void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* pData) { + this->setAnmColor((J2DAnmColorKey*)_4, pData); +} + +/* 80309870-8030995C 3041B0 00EC+00 2/2 0/0 0/0 .text + * setAnmColor__19J2DAnmKeyLoader_v15FP14J2DAnmColorKeyPC18J3DAnmColorKeyData */ +void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* pAnm, J3DAnmColorKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; + pAnm->field_0x10 = pData->field_0x10; + pAnm->field_0x12 = pData->field_0x12; + pAnm->field_0x14 = pData->field_0x14; + pAnm->field_0x16 = pData->field_0x16; + pAnm->mInfoTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValOffset); + pAnm->mUpdateMaterialID = + JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMaterialIDOffset); + pAnm->field_0x20.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mNameTabOffset)); +} + +/* 8030995C-80309984 30429C 0028+00 1/1 0/0 0/0 .text + * readAnmVtxColor__19J2DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ +void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* pData) { + this->setAnmVtxColor((J2DAnmVtxColorKey*)_4, pData); +} + +/* 80309984-80309A80 3042C4 00FC+00 2/2 0/0 0/0 .text + * setAnmVtxColor__19J2DAnmKeyLoader_v15FP17J2DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */ +void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* pAnm, + J3DAnmVtxColorKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; + pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; + pAnm->mInfoTable[0] = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffsets[0]); + pAnm->mInfoTable[1] = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffsets[1]); + pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr( + pData, (void*)pData->mVtxColoIndexDataOffset[0]); + pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr( + pData, (void*)pData->mVtxColoIndexDataOffset[1]); + pAnm->mVtxColorIndexPointer[0] = + JSUConvertOffsetToPtr(pData, (void*)pData->mVtxColoIndexPointerOffset[0]); + pAnm->mVtxColorIndexPointer[1] = + JSUConvertOffsetToPtr(pData, (void*)pData->mVtxColoIndexPointerOffset[1]); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValOffset); +} + +/* 80309A80-80309B8C 3043C0 010C+00 2/1 0/0 0/0 .text load__20J2DAnmFullLoader_v15FPCv */ +void* J2DAnmFullLoader_v15::load(void const* param_0) { + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)param_0; + const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANF1': + this->readAnmTransform((J3DAnmTransformFullData*)dataPtr); + break; + case 'PAF1': + this->readAnmColor((J3DAnmColorFullData*)dataPtr); + break; + case 'TPT1': + this->readAnmTexPattern((J3DAnmTexPatternFullData*)dataPtr); + break; + case 'VAF1': + this->readAnmVisibility((J3DAnmVisibilityFullData*)dataPtr); + break; + case 'VCF1': + this->readAnmVtxColor((J3DAnmVtxColorFullData*)dataPtr); + break; + } + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } + return _4; +} + +/* 80309B8C-80309CE8 3044CC 015C+00 1/0 0/0 0/0 .text + * setResource__20J2DAnmFullLoader_v15FP10J2DAnmBasePCv */ +void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { + const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)pData; + const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst; + for (s32 i = 0; i < hdr->mCount; i++) { + switch (dataPtr->mType) { + case 'ANF1': + if (pAnm->getKind() == 0) + this->setAnmTransform((J2DAnmTransformFull*)pAnm, + (J3DAnmTransformFullData*)dataPtr); + break; + case 'PAF1': + if (pAnm->getKind() == 1) + this->setAnmColor((J2DAnmColorFull*)pAnm, (J3DAnmColorFullData*)dataPtr); + break; + case 'TPT1': + if (pAnm->getKind() == 2) + this->setAnmTexPattern((J2DAnmTexPattern*)pAnm, (J3DAnmTexPatternFullData*)dataPtr); + break; + case 'VAF1': + if (pAnm->getKind() == 6) + this->setAnmVisibility((J2DAnmVisibilityFull*)pAnm, + (J3DAnmVisibilityFullData*)dataPtr); + break; + case 'VCF1': + if (pAnm->getKind() == 7) + this->setAnmVtxColor((J2DAnmVtxColorFull*)pAnm, (J3DAnmVtxColorFullData*)dataPtr); + break; + } + dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset); + } +} + +/* 80309CE8-80309D04 304628 001C+00 1/1 0/0 0/0 .text __ct__20J2DAnmFullLoader_v15Fv */ +J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() {} + +/* 80309D04-80309D60 304644 005C+00 2/1 0/0 0/0 .text __dt__20J2DAnmFullLoader_v15Fv */ +J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() {} + +/* 80309D60-80309D88 3046A0 0028+00 1/1 0/0 0/0 .text + * readAnmTransform__20J2DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ +void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* pData) { + this->setAnmTransform((J2DAnmTransformFull*)_4, pData); +} + +/* 80309D88-80309E1C 3046C8 0094+00 2/2 0/0 0/0 .text + * setAnmTransform__20J2DAnmFullLoader_v15FP19J2DAnmTransformFullPC23J3DAnmTransformFullData */ +void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* pAnm, + J3DAnmTransformFullData const* pData) { + pAnm->field_0x22 = pData->field_0xc; + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mTableInfo = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mScaleValues = JSUConvertOffsetToPtr(pData, (void*)pData->mScaleValOffset); + pAnm->mRotationValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRotValOffset); + pAnm->mTranslateValues = JSUConvertOffsetToPtr(pData, (void*)pData->mTransValOffset); +} + +/* 80309E1C-80309E44 30475C 0028+00 1/1 0/0 0/0 .text + * readAnmColor__20J2DAnmFullLoader_v15FPC19J3DAnmColorFullData */ +void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* pData) { + this->setAnmColor((J2DAnmColorFull*)_4, pData); +} + +/* 80309E44-80309F10 304784 00CC+00 2/2 0/0 0/0 .text + * setAnmColor__20J2DAnmFullLoader_v15FP15J2DAnmColorFullPC19J3DAnmColorFullData */ +void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* pAnm, J3DAnmColorFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->mUpdateMaterialNum; + pAnm->mInfoTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValuesOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValuesOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValuesOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValuesOffset); + pAnm->mUpdateMaterialID = + JSUConvertOffsetToPtr(pData, (void*)pData->mUpdateMaterialIDOffset); + pAnm->field_0x20.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mNameTabOffset)); +} + +/* 80309F10-80309F38 304850 0028+00 1/1 0/0 0/0 .text + * readAnmTexPattern__20J2DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ +void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* pData) { + this->setAnmTexPattern((J2DAnmTexPattern*)_4, pData); +} + +/* 80309F38-80309FDC 304878 00A4+00 2/2 0/0 0/0 .text + * setAnmTexPattern__20J2DAnmFullLoader_v15FP16J2DAnmTexPatternPC24J3DAnmTexPatternFullData */ +void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* pAnm, + J3DAnmTexPatternFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mUpdateMaterialNum = pData->field_0xc; + pAnm->field_0x18 = pData->field_0xe; + pAnm->mAnmTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*)pData->mValuesOffset); + pAnm->mUpdaterMaterialID = + JSUConvertOffsetToPtr(pData, (void*)pData->mUpdaterMaterialIDOffset); + pAnm->field_0x20.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mNameTabOffset)); +} + +/* 80309FDC-8030A004 30491C 0028+00 1/1 0/0 0/0 .text + * readAnmTevReg__19J2DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ +void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* pData) { + this->setAnmTevReg((J2DAnmTevRegKey*)_4, pData); +} + +/* 8030A004-8030A190 304944 018C+00 2/2 0/0 0/0 .text + * setAnmTevReg__19J2DAnmKeyLoader_v15FP15J2DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ +void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* pAnm, J3DAnmTevRegKeyData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mCRegUpdateMaterialNum = pData->mCRegUpdateMaterialNum; + pAnm->mAnmCRegKeyTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mCRegTableOffset); + pAnm->mCRegUpdateMaterialID = + JSUConvertOffsetToPtr(pData, (void*)pData->mCRegUpdateMaterialIDOffset); + pAnm->mCRegNameTab.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mCRegNameTabOffset)); + pAnm->mKRegUpdateMaterialNum = pData->mKRegUpdateMaterialNum; + pAnm->mAnmKRegKeyTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mKRegTableOffset); + pAnm->mKRegUpdateMaterialID = + JSUConvertOffsetToPtr(pData, (void*)pData->mKRegUpdateMaterialIDOffset); + pAnm->mKRegNameTab.setResource( + JSUConvertOffsetToPtr(pData, (void*)pData->mKRegNameTabOffset)); + pAnm->field_0x14 = pData->field_0x10; + pAnm->field_0x16 = pData->field_0x12; + pAnm->field_0x18 = pData->field_0x14; + pAnm->field_0x1a = pData->field_0x16; + pAnm->mCRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mCRValuesOffset); + pAnm->mCGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mCGValuesOffset); + pAnm->mCBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mCBValuesOffset); + pAnm->mCAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mCAValuesOffset); + pAnm->field_0x1c = pData->field_0x18; + pAnm->field_0x1e = pData->field_0x1a; + pAnm->field_0x20 = pData->field_0x1c; + pAnm->field_0x22 = pData->field_0x1e; + pAnm->mKRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mKRValuesOffset); + pAnm->mKGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mKGValuesOffset); + pAnm->mKBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mKBValuesOffset); + pAnm->mKAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mKAValuesOffset); +} + +/* 8030A190-8030A1B8 304AD0 0028+00 1/1 0/0 0/0 .text + * readAnmVisibility__20J2DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ +void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* pData) { + this->setAnmVisibility((J2DAnmVisibilityFull*)_4, pData); +} + +/* 8030A1B8-8030A234 304AF8 007C+00 2/2 0/0 0/0 .text + * setAnmVisibility__20J2DAnmFullLoader_v15FP20J2DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ +void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* pAnm, + J3DAnmVisibilityFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->field_0x10 = pData->field_0xc; + pAnm->field_0x12 = pData->field_0xe; + pAnm->mTable = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffset); + pAnm->mValues = JSUConvertOffsetToPtr(pData, (void*)pData->mValuesOffset); +} + +/* 8030A234-8030A25C 304B74 0028+00 1/1 0/0 0/0 .text + * readAnmVtxColor__20J2DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ +void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* pData) { + this->setAnmVtxColor((J2DAnmVtxColorFull*)_4, pData); +} + +/* 8030A25C-8030A358 304B9C 00FC+00 2/2 0/0 0/0 .text + * setAnmVtxColor__20J2DAnmFullLoader_v15FP18J2DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ +void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* pAnm, + J3DAnmVtxColorFullData const* pData) { + pAnm->mFrameMax = pData->mFrameMax; + pAnm->field_0x4 = pData->field_0x8; + pAnm->mFrame = 0; + pAnm->mAnmTableNum[0] = pData->mAnmTableNum[0]; + pAnm->mAnmTableNum[1] = pData->mAnmTableNum[1]; + pAnm->mInfoTable[0] = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffsets[0]); + pAnm->mInfoTable[1] = + JSUConvertOffsetToPtr(pData, (void*)pData->mTableOffsets[1]); + pAnm->mVtxColorIndexData[0] = JSUConvertOffsetToPtr( + pData, (void*)pData->mVtxColorIndexDataOffsets[0]); + pAnm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr( + pData, (void*)pData->mVtxColorIndexDataOffsets[1]); + pAnm->mVtxColorIndexPointer[0] = + JSUConvertOffsetToPtr(pData, (void*)pData->mVtxColorIndexPointerOffsets[0]); + pAnm->mVtxColorIndexPointer[1] = + JSUConvertOffsetToPtr(pData, (void*)pData->mVtxColorIndexPointerOffsets[1]); + pAnm->mRValues = JSUConvertOffsetToPtr(pData, (void*)pData->mRValuesOffset); + pAnm->mGValues = JSUConvertOffsetToPtr(pData, (void*)pData->mGValuesOffset); + pAnm->mBValues = JSUConvertOffsetToPtr(pData, (void*)pData->mBValuesOffset); + pAnm->mAValues = JSUConvertOffsetToPtr(pData, (void*)pData->mAValuesOffset); +} + +/* 8030A358-8030A3B4 304C98 005C+00 1/0 0/0 0/0 .text __dt__14J2DAnmVtxColorFv */ +// J2DAnmVtxColor::~J2DAnmVtxColor() {} +/* 8030A3B4-8030A410 304CF4 005C+00 1/0 0/0 0/0 .text __dt__20J2DAnmVisibilityFullFv */ +// J2DAnmVisibilityFull::~J2DAnmVisibilityFull() {} From 36e7f7639e59e8d808fe237d56464b9064dc5874 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Wed, 12 Jan 2022 20:40:23 +0100 Subject: [PATCH 6/7] J2DAnmKind enum --- include/JSystem/J2DGraph/J2DAnimation.h | 89 +++----------- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 114 ++++++++++++++---- .../J2DGraph/J2DAnmLoader_nonmatching.cpp | 20 +-- 3 files changed, 117 insertions(+), 106 deletions(-) diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 675c3eddc19..b54a0ed8140 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -10,12 +10,15 @@ class J2DScreen; -struct J3DAnmColorKeyTable { - J3DAnmKeyTableBase mRInfo; - J3DAnmKeyTableBase mGInfo; - J3DAnmKeyTableBase mBInfo; - J3DAnmKeyTableBase mAInfo; -}; // Size = 0x18 +enum J2DAnmKind { + J2DAnmTransformKind = 0, + J2DAnmColorKind = 1, + J2DAnmTexPatternKind = 2, + J2DAnmTextureSRTKeyKind = 4, + J2DAnmTevRegKeyKind = 5, + J2DAnmVisibilityFullKind = 6, + J2DAnmVtxColorKind = 7 +}; class J2DAnmBase { public: @@ -29,22 +32,20 @@ public: s16 getFrameMax() const { return mFrameMax; } void setFrame(f32 frame) { mFrame = frame; } f32 getFrame() const { return mFrame; } - s32 getKind() const { return mKind; } + J2DAnmKind getKind() const { return mKind; } /* 0x0 */ // vtable /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 field_0x5; /* 0x6 */ s16 mFrameMax; /* 0x8 */ f32 mFrame; - /* 0xC */ s32 mKind; + /* 0xC */ J2DAnmKind mKind; }; // Size: 0x10 -struct J3DAnmVtxColorIndexData; - class J2DAnmVtxColor : public J2DAnmBase { public: J2DAnmVtxColor() { - mKind = 7; + mKind = J2DAnmVtxColorKind; for (s32 i = 0; i < ARRAY_SIZE(mAnmTableNum); i++) { mAnmTableNum[i] = NULL; } @@ -80,17 +81,6 @@ public: /* 0x38 */ s16* mAValues; }; // Size: 0x3C -struct J3DAnmColorFullTable { - /* 0x00 */ u16 mRMaxFrame; - /* 0x02 */ u16 mROffset; - /* 0x04 */ u16 mGMaxFrame; - /* 0x06 */ u16 mGOffset; - /* 0x08 */ u16 mBMaxFrame; - /* 0x0A */ u16 mBOffset; - /* 0x0C */ u16 mAMaxFrame; - /* 0x0E */ u16 mAOffset; -}; // Size = 0x10 - class J2DAnmVtxColorFull : public J2DAnmVtxColor { public: J2DAnmVtxColorFull() { @@ -108,11 +98,6 @@ public: /* 0x38 */ u8* mAValues; }; // Size: 0x3C -struct J3DAnmVisibilityFullTable { - u16 _0; - u16 _2; -}; // Size = 0x4 - class J2DAnmVisibilityFull : public J2DAnmBase { public: J2DAnmVisibilityFull() { @@ -120,7 +105,7 @@ public: mTable = NULL; field_0x12 = 0; mValues = NULL; - mKind = 6; + mKind = J2DAnmVisibilityFullKind; } /* 8030A3B4 */ virtual ~J2DAnmVisibilityFull() {} /* 8030C048 */ void getVisibility(u16, u8*) const; @@ -137,7 +122,7 @@ public: mScaleValues = pScaleValues; mRotationValues = pRotationValues; mTranslateValues = pTranslateValues; - mKind = 0; + mKind = J2DAnmTransformKind; } /* 80184370 */ virtual ~J2DAnmTransform() {} /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; @@ -147,12 +132,6 @@ public: /* 0x18 */ f32* mTranslateValues; }; // Size: 0x1C -struct J3DAnmTransformKeyTable { - J3DAnmKeyTableBase mScaleInfo; - J3DAnmKeyTableBase mRotationInfo; - J3DAnmKeyTableBase mTranslateInfo; -}; // Size = 0x12 - class J2DAnmTransformKey : public J2DAnmTransform { public: J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) { @@ -171,15 +150,6 @@ public: /* 0x28 */ J3DAnmTransformKeyTable* mInfoTable; }; -struct J3DAnmTransformFullTable { - /* 0x00 */ u16 mScaleMaxFrame; - /* 0x02 */ u16 mScaleOffset; - /* 0x04 */ u16 mRotationMaxFrame; - /* 0x06 */ u16 mRotationOffset; - /* 0x08 */ u16 mTranslateMaxFrame; - /* 0x0A */ u16 mTranslateOffset; -}; // Size = 0xC - class J2DAnmTransformFull : public J2DAnmTransform { public: J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; } @@ -212,7 +182,7 @@ public: field_0x50 = NULL; field_0x54 = NULL; field_0x7c = 0; - mKind = 4; + mKind = J2DAnmTextureSRTKeyKind; } /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; @@ -248,13 +218,6 @@ public: /* 0x7C */ int field_0x7c; }; -struct J3DAnmTexPatternFullTable { - /* 0x00 */ u16 mMaxFrame; - /* 0x02 */ u16 mOffset; - /* 0x04 */ u16 _4; - /* 0x06 */ u16 _6; -}; // Size = 0x8 - class J2DAnmTexPattern : public J2DAnmBase { public: struct J2DAnmTexPatternTIMGPointer { @@ -268,7 +231,7 @@ public: J2DAnmTexPattern() { mValues = NULL; mAnmTable = NULL; - mKind = 2; + mKind = J2DAnmTexPatternKind; mUpdateMaterialNum = 0; mUpdaterMaterialID = NULL; mTIMGPtrArray = NULL; @@ -291,22 +254,6 @@ public: /* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray; }; -struct J3DAnmCRegKeyTable { - /* 0x00 */ J3DAnmKeyTableBase mRTable; - /* 0x06 */ J3DAnmKeyTableBase mGTable; - /* 0x0C */ J3DAnmKeyTableBase mBTable; - /* 0x12 */ J3DAnmKeyTableBase mATable; - /* 0x18 */ u8 _18[4]; -}; // Size = 0x1C - -struct J3DAnmKRegKeyTable { - /* 0x00 */ J3DAnmKeyTableBase mRTable; - /* 0x06 */ J3DAnmKeyTableBase mGTable; - /* 0x0C */ J3DAnmKeyTableBase mBTable; - /* 0x12 */ J3DAnmKeyTableBase mATable; - /* 0x18 */ u8 _18[4]; -}; // Size = 0x1C - class J2DAnmTevRegKey : public J2DAnmBase { public: J2DAnmTevRegKey() { @@ -330,7 +277,7 @@ public: mKBValues = NULL; mKGValues = NULL; mKRValues = NULL; - mKind = 5; + mKind = J2DAnmTevRegKeyKind; } /* 8030C0F0 */ void getTevColorReg(u16, _GXColorS10*) const; /* 8030C3B4 */ void getTevKonstReg(u16, _GXColor*) const; @@ -373,7 +320,7 @@ public: field_0x10 = 0; mUpdateMaterialNum = 0; mUpdateMaterialID = NULL; - mKind = 1; + mKind = J2DAnmColorKind; } /* 801842FC */ virtual ~J2DAnmColor() {} /* 8030AF24 */ virtual void searchUpdateMaterialID(J2DScreen*); diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 562818b5bcd..77d82db311a 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -6,27 +6,96 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" -struct J3DAnmDataBlockHeader { // actual name unknown +struct J3DAnmKeyTableBase { + /* 0x00 */ u16 mMaxFrame; + /* 0x02 */ u16 mOffset; + /* 0x04 */ u16 mType; +}; // Size = 0x6 + +struct J3DAnmColorKeyTable { + J3DAnmKeyTableBase mRInfo; + J3DAnmKeyTableBase mGInfo; + J3DAnmKeyTableBase mBInfo; + J3DAnmKeyTableBase mAInfo; +}; // Size = 0x18 + +struct J3DAnmVtxColorIndexData; + +struct J3DAnmColorFullTable { + /* 0x00 */ u16 mRMaxFrame; + /* 0x02 */ u16 mROffset; + /* 0x04 */ u16 mGMaxFrame; + /* 0x06 */ u16 mGOffset; + /* 0x08 */ u16 mBMaxFrame; + /* 0x0A */ u16 mBOffset; + /* 0x0C */ u16 mAMaxFrame; + /* 0x0E */ u16 mAOffset; +}; // Size = 0x10 + +struct J3DAnmVisibilityFullTable { + u16 _0; + u16 _2; +}; // Size = 0x4 + +struct J3DAnmTransformKeyTable { + J3DAnmKeyTableBase mScaleInfo; + J3DAnmKeyTableBase mRotationInfo; + J3DAnmKeyTableBase mTranslateInfo; +}; // Size = 0x12 + +struct J3DAnmTransformFullTable { + /* 0x00 */ u16 mScaleMaxFrame; + /* 0x02 */ u16 mScaleOffset; + /* 0x04 */ u16 mRotationMaxFrame; + /* 0x06 */ u16 mRotationOffset; + /* 0x08 */ u16 mTranslateMaxFrame; + /* 0x0A */ u16 mTranslateOffset; +}; // Size = 0xC + +struct J3DAnmTexPatternFullTable { + /* 0x00 */ u16 mMaxFrame; + /* 0x02 */ u16 mOffset; + /* 0x04 */ u16 _4; + /* 0x06 */ u16 _6; +}; // Size = 0x8 + +struct J3DAnmCRegKeyTable { + /* 0x00 */ J3DAnmKeyTableBase mRTable; + /* 0x06 */ J3DAnmKeyTableBase mGTable; + /* 0x0C */ J3DAnmKeyTableBase mBTable; + /* 0x12 */ J3DAnmKeyTableBase mATable; + /* 0x18 */ u8 _18[4]; +}; // Size = 0x1C + +struct J3DAnmKRegKeyTable { + /* 0x00 */ J3DAnmKeyTableBase mRTable; + /* 0x06 */ J3DAnmKeyTableBase mGTable; + /* 0x0C */ J3DAnmKeyTableBase mBTable; + /* 0x12 */ J3DAnmKeyTableBase mATable; + /* 0x18 */ u8 _18[4]; +}; // Size = 0x1C + +struct J3DAnmDataBlockHeader { // actual name unknown /* 0x0 */ u32 mType; /* 0x4 */ u32 mNextOffset; -}; // Size = 0x8 +}; // Size = 0x8 -struct J3DAnmDataHeader { // actual name unknown +struct J3DAnmDataHeader { // actual name unknown /* 0x00 */ u32 mMagic; /* 0x04 */ u32 mType; /* 0x08 */ u8 _8[4]; /* 0x0C */ u32 mCount; - /* 0x10 */ u8 _10[0x20-0x10]; + /* 0x10 */ u8 _10[0x20 - 0x10]; /* 0x20 */ J3DAnmDataBlockHeader mFirst; }; struct J3DAnmVtxColorFullData { /* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; // padding? + /* 0x09 */ u8 field_0x9; // padding? /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 mAnmTableNum[2]; - /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x10 */ u8 field_0x10[0x18 - 0x10]; /* 0x18 */ s32 mTableOffsets[2]; /* 0x20 */ s32 mVtxColorIndexDataOffsets[2]; /* 0x28 */ s32 mVtxColorIndexPointerOffsets[2]; @@ -34,20 +103,20 @@ struct J3DAnmVtxColorFullData { /* 0x34 */ s32 mGValuesOffset; /* 0x38 */ s32 mBValuesOffset; /* 0x3C */ s32 mAValuesOffset; -}; // Size = 0x40 +}; // Size = 0x40 STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40); struct J3DAnmVisibilityFullData { /* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; // padding? + /* 0x09 */ u8 field_0x9; // padding? /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 field_0xc; /* 0x0E */ u16 field_0xe; /* 0x10 */ s32 mTableOffset; /* 0x14 */ s32 mValuesOffset; -}; // Size = 0x18 +}; // Size = 0x18 STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18); @@ -57,12 +126,12 @@ struct J3DAnmTransformFullData { /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 field_0xc; - /* 0x0E */ u8 field_0xe[0x14-0xe]; + /* 0x0E */ u8 field_0xe[0x14 - 0xe]; /* 0x14 */ s32 mTableOffset; /* 0x18 */ s32 mScaleValOffset; /* 0x1C */ s32 mRotValOffset; /* 0x20 */ s32 mTransValOffset; -}; // Size = 0x24 +}; // Size = 0x24 STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24); @@ -83,7 +152,7 @@ struct J3DAnmColorKeyData { /* 0x28 */ s32 mGValOffset; /* 0x2C */ s32 mBValOffset; /* 0x30 */ s32 mAValOffset; -}; // Size = 0x34 +}; // Size = 0x34 STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34); @@ -117,7 +186,7 @@ struct J3DAnmTextureSRTKeyData { /* 0x54 */ s32 field_0x54; /* 0x58 */ s32 field_0x58; /* 0x5C */ s32 field_0x5c; -}; // Size = 0x60 +}; // Size = 0x60 STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60); @@ -127,7 +196,7 @@ struct J3DAnmVtxColorKeyData { /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 mAnmTableNum[2]; - /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x10 */ u8 field_0x10[0x18 - 0x10]; /* 0x18 */ s32 mTableOffsets[2]; /* 0x20 */ s32 mVtxColoIndexDataOffset[2]; /* 0x28 */ s32 mVtxColoIndexPointerOffset[2]; @@ -135,7 +204,7 @@ struct J3DAnmVtxColorKeyData { /* 0x34 */ s32 mGValOffset; /* 0x38 */ s32 mBValOffset; /* 0x3C */ s32 mAValOffset; -}; // Size = 0x40 +}; // Size = 0x40 STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40); @@ -150,14 +219,14 @@ struct J3DAnmTexPatternFullData { /* 0x14 */ s32 mValuesOffset; /* 0x18 */ s32 mUpdaterMaterialIDOffset; /* 0x1C */ s32 mNameTabOffset; -}; // Size = 0x20 +}; // Size = 0x20 STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20); struct J3DAnmTevRegKeyData { /* 0x00 */ J3DAnmDataBlockHeader mHeader; /* 0x08 */ u8 field_0x8; - /* 0x09 */ u8 field_0x9; // maybe padding + /* 0x09 */ u8 field_0x9; // maybe padding /* 0x0A */ s16 mFrameMax; /* 0x0C */ u16 mCRegUpdateMaterialNum; /* 0x0E */ u16 mKRegUpdateMaterialNum; @@ -183,7 +252,7 @@ struct J3DAnmTevRegKeyData { /* 0x4C */ s32 mKGValuesOffset; /* 0x50 */ s32 mKBValuesOffset; /* 0x54 */ s32 mKAValuesOffset; -}; // Size = 0x58 +}; // Size = 0x58 STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58); @@ -193,7 +262,7 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */ /* 0x09 */ u8 field_0x9[3]; /* 0x0C */ s16 mFrameMax; /* 0x0E */ u16 mUpdateMaterialNum; - /* 0x10 */ u8 field_0x10[0x18-0x10]; + /* 0x10 */ u8 field_0x10[0x18 - 0x10]; /* 0x18 */ s32 mTableOffset; /* 0x1C */ s32 mUpdateMaterialIDOffset; /* 0x20 */ s32 mNameTabOffset; @@ -201,7 +270,7 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */ /* 0x28 */ s32 mGValuesOffset; /* 0x2C */ s32 mBValuesOffset; /* 0x30 */ s32 mAValuesOffset; -}; // Size = 0x34 +}; // Size = 0x34 STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34); @@ -274,11 +343,6 @@ class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull { struct J3DTextureSRTInfo; struct J3DModelData; struct J3DMaterialTable; -struct J3DAnmKeyTableBase { - /* 0x00 */ u16 mMaxFrame; - /* 0x02 */ u16 mOffset; - /* 0x04 */ u16 mType; -}; // Size = 0x6 class J3DAnmTextureSRTKey : public J3DAnmBase { public: diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp index 157e08795b1..839764515e6 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp @@ -134,28 +134,28 @@ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': - if (pAnm->getKind() == 0) { + if (pAnm->getKind() == J2DAnmTransformKind) { this->setAnmTransform((J2DAnmTransformKey*)pAnm, (J3DAnmTransformKeyData*)dataPtr); } break; case 'PAK1': - if (pAnm->getKind() == 1) { + if (pAnm->getKind() == J2DAnmColorKind) { this->setAnmColor((J2DAnmColorKey*)pAnm, (J3DAnmColorKeyData*)dataPtr); } break; case 'TTK1': - if (pAnm->getKind() == 4) { + if (pAnm->getKind() == J2DAnmTextureSRTKeyKind) { this->setAnmTextureSRT((J2DAnmTextureSRTKey*)pAnm, (J3DAnmTextureSRTKeyData*)dataPtr); } break; case 'TRK1': - if (pAnm->getKind() == 5) { + if (pAnm->getKind() == J2DAnmTevRegKeyKind) { this->setAnmTevReg((J2DAnmTevRegKey*)pAnm, (J3DAnmTevRegKeyData*)dataPtr); } break; case 'VCK1': - if (pAnm->getKind() == 7) { + if (pAnm->getKind() == J2DAnmVtxColorKind) { this->setAnmVtxColor((J2DAnmVtxColorKey*)pAnm, (J3DAnmVtxColorKeyData*)dataPtr); } break; @@ -342,25 +342,25 @@ void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': - if (pAnm->getKind() == 0) + if (pAnm->getKind() == J2DAnmTransformKind) this->setAnmTransform((J2DAnmTransformFull*)pAnm, (J3DAnmTransformFullData*)dataPtr); break; case 'PAF1': - if (pAnm->getKind() == 1) + if (pAnm->getKind() == J2DAnmColorKind) this->setAnmColor((J2DAnmColorFull*)pAnm, (J3DAnmColorFullData*)dataPtr); break; case 'TPT1': - if (pAnm->getKind() == 2) + if (pAnm->getKind() == J2DAnmTexPatternKind) this->setAnmTexPattern((J2DAnmTexPattern*)pAnm, (J3DAnmTexPatternFullData*)dataPtr); break; case 'VAF1': - if (pAnm->getKind() == 6) + if (pAnm->getKind() == J2DAnmVisibilityFullKind) this->setAnmVisibility((J2DAnmVisibilityFull*)pAnm, (J3DAnmVisibilityFullData*)dataPtr); break; case 'VCF1': - if (pAnm->getKind() == 7) + if (pAnm->getKind() == J2DAnmVtxColorKind) this->setAnmVtxColor((J2DAnmVtxColorFull*)pAnm, (J3DAnmVtxColorFullData*)dataPtr); break; } From ce5a8c47ad45f002421a9997fafa67737e668788 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Mon, 17 Jan 2022 20:58:30 +0100 Subject: [PATCH 7/7] fix enum --- include/JSystem/J2DGraph/J2DAnimation.h | 28 +++++++++---------- .../J2DGraph/J2DAnmLoader_nonmatching.cpp | 20 ++++++------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index b54a0ed8140..bc4d9a94bc5 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -11,13 +11,13 @@ class J2DScreen; enum J2DAnmKind { - J2DAnmTransformKind = 0, - J2DAnmColorKind = 1, - J2DAnmTexPatternKind = 2, - J2DAnmTextureSRTKeyKind = 4, - J2DAnmTevRegKeyKind = 5, - J2DAnmVisibilityFullKind = 6, - J2DAnmVtxColorKind = 7 + KIND_TRANSFORM = 0, + KIND_COLOR = 1, + KIND_TEX_PATTERN = 2, + KIND_TEXTURE_SRT = 4, + KIND_TEV_REG = 5, + KIND_VISIBILITY = 6, + KIND_VTX_COLOR = 7 }; class J2DAnmBase { @@ -45,7 +45,7 @@ public: class J2DAnmVtxColor : public J2DAnmBase { public: J2DAnmVtxColor() { - mKind = J2DAnmVtxColorKind; + mKind = KIND_VTX_COLOR; for (s32 i = 0; i < ARRAY_SIZE(mAnmTableNum); i++) { mAnmTableNum[i] = NULL; } @@ -105,7 +105,7 @@ public: mTable = NULL; field_0x12 = 0; mValues = NULL; - mKind = J2DAnmVisibilityFullKind; + mKind = KIND_VISIBILITY; } /* 8030A3B4 */ virtual ~J2DAnmVisibilityFull() {} /* 8030C048 */ void getVisibility(u16, u8*) const; @@ -122,7 +122,7 @@ public: mScaleValues = pScaleValues; mRotationValues = pRotationValues; mTranslateValues = pTranslateValues; - mKind = J2DAnmTransformKind; + mKind = KIND_TRANSFORM; } /* 80184370 */ virtual ~J2DAnmTransform() {} /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; @@ -182,7 +182,7 @@ public: field_0x50 = NULL; field_0x54 = NULL; field_0x7c = 0; - mKind = J2DAnmTextureSRTKeyKind; + mKind = KIND_TEXTURE_SRT; } /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; @@ -231,7 +231,7 @@ public: J2DAnmTexPattern() { mValues = NULL; mAnmTable = NULL; - mKind = J2DAnmTexPatternKind; + mKind = KIND_TEX_PATTERN; mUpdateMaterialNum = 0; mUpdaterMaterialID = NULL; mTIMGPtrArray = NULL; @@ -277,7 +277,7 @@ public: mKBValues = NULL; mKGValues = NULL; mKRValues = NULL; - mKind = J2DAnmTevRegKeyKind; + mKind = KIND_TEV_REG; } /* 8030C0F0 */ void getTevColorReg(u16, _GXColorS10*) const; /* 8030C3B4 */ void getTevKonstReg(u16, _GXColor*) const; @@ -320,7 +320,7 @@ public: field_0x10 = 0; mUpdateMaterialNum = 0; mUpdateMaterialID = NULL; - mKind = J2DAnmColorKind; + mKind = KIND_COLOR; } /* 801842FC */ virtual ~J2DAnmColor() {} /* 8030AF24 */ virtual void searchUpdateMaterialID(J2DScreen*); diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp index 839764515e6..51d22877c84 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp @@ -134,28 +134,28 @@ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* pAnm, void const* param_1) { for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANK1': - if (pAnm->getKind() == J2DAnmTransformKind) { + if (pAnm->getKind() == KIND_TRANSFORM) { this->setAnmTransform((J2DAnmTransformKey*)pAnm, (J3DAnmTransformKeyData*)dataPtr); } break; case 'PAK1': - if (pAnm->getKind() == J2DAnmColorKind) { + if (pAnm->getKind() == KIND_COLOR) { this->setAnmColor((J2DAnmColorKey*)pAnm, (J3DAnmColorKeyData*)dataPtr); } break; case 'TTK1': - if (pAnm->getKind() == J2DAnmTextureSRTKeyKind) { + if (pAnm->getKind() == KIND_TEXTURE_SRT) { this->setAnmTextureSRT((J2DAnmTextureSRTKey*)pAnm, (J3DAnmTextureSRTKeyData*)dataPtr); } break; case 'TRK1': - if (pAnm->getKind() == J2DAnmTevRegKeyKind) { + if (pAnm->getKind() == KIND_TEV_REG) { this->setAnmTevReg((J2DAnmTevRegKey*)pAnm, (J3DAnmTevRegKeyData*)dataPtr); } break; case 'VCK1': - if (pAnm->getKind() == J2DAnmVtxColorKind) { + if (pAnm->getKind() == KIND_VTX_COLOR) { this->setAnmVtxColor((J2DAnmVtxColorKey*)pAnm, (J3DAnmVtxColorKeyData*)dataPtr); } break; @@ -342,25 +342,25 @@ void J2DAnmFullLoader_v15::setResource(J2DAnmBase* pAnm, void const* pData) { for (s32 i = 0; i < hdr->mCount; i++) { switch (dataPtr->mType) { case 'ANF1': - if (pAnm->getKind() == J2DAnmTransformKind) + if (pAnm->getKind() == KIND_TRANSFORM) this->setAnmTransform((J2DAnmTransformFull*)pAnm, (J3DAnmTransformFullData*)dataPtr); break; case 'PAF1': - if (pAnm->getKind() == J2DAnmColorKind) + if (pAnm->getKind() == KIND_COLOR) this->setAnmColor((J2DAnmColorFull*)pAnm, (J3DAnmColorFullData*)dataPtr); break; case 'TPT1': - if (pAnm->getKind() == J2DAnmTexPatternKind) + if (pAnm->getKind() == KIND_TEX_PATTERN) this->setAnmTexPattern((J2DAnmTexPattern*)pAnm, (J3DAnmTexPatternFullData*)dataPtr); break; case 'VAF1': - if (pAnm->getKind() == J2DAnmVisibilityFullKind) + if (pAnm->getKind() == KIND_VISIBILITY) this->setAnmVisibility((J2DAnmVisibilityFull*)pAnm, (J3DAnmVisibilityFullData*)dataPtr); break; case 'VCF1': - if (pAnm->getKind() == J2DAnmVtxColorKind) + if (pAnm->getKind() == KIND_VTX_COLOR) this->setAnmVtxColor((J2DAnmVtxColorFull*)pAnm, (J3DAnmVtxColorFullData*)dataPtr); break; }