diff options
Diffstat (limited to 'libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp')
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 857 |
1 files changed, 664 insertions, 193 deletions
diff --git a/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 55c70f9e20..81439fab8d 100644 --- a/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -4,86 +4,25 @@ // #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" +#include "JSystem/JSupport/JSupport.h" #include "dol2asm.h" +#include "dolphin/os.h" // // Types: // -struct ResNTAB {}; - -struct JUTNameTab { - /* 802DEA1C */ void setResource(ResNTAB const*); -}; - -struct J3DAnmVtxColorKeyData {}; - -struct J3DAnmVtxColorKey { - /* 8032A4E0 */ J3DAnmVtxColorKey(); -}; - -struct J3DAnmVtxColorFullData {}; - -struct J3DAnmVtxColorFull { - /* 8032A30C */ J3DAnmVtxColorFull(); -}; - -struct J3DAnmVisibilityFullData {}; - -struct J3DAnmVisibilityFull { - /* 8033979C */ ~J3DAnmVisibilityFull(); - /* 803397F8 */ s32 getKind() const; -}; - -struct J3DAnmTransformKeyData {}; - -struct J3DAnmTransformKey {}; - -struct J3DAnmTransformFullData {}; - -struct J3DAnmTransformFull {}; - -struct J3DAnmTransform { - /* 80328E40 */ J3DAnmTransform(s16, f32*, s16*, f32*); +class J3DAnmLoader { +public: + virtual J3DAnmBase* load(const void*) = 0; + virtual void setResource(J3DAnmBase*, const void*) = 0; + /* 80339800 */ virtual ~J3DAnmLoader() {} }; -struct J3DAnmTextureSRTKeyData {}; - -struct J3DAnmTextureSRTKey { - /* 80329E5C */ J3DAnmTextureSRTKey(); -}; - -struct J3DAnmTexPatternFullData {}; - -struct J3DAnmTexPattern { - /* 8032AED8 */ J3DAnmTexPattern(); -}; - -struct J3DAnmTevRegKeyData {}; - -struct J3DAnmTevRegKey { - /* 8032AE18 */ J3DAnmTevRegKey(); -}; - -struct J3DAnmLoader { - /* 80339800 */ ~J3DAnmLoader(); -}; - -struct J3DAnmClusterKey {}; - -struct J3DAnmColorKey { - /* 8032AB00 */ J3DAnmColorKey(); -}; - -struct J3DAnmColorKeyData {}; - -struct J3DAnmClusterKeyData {}; - -struct J3DAnmKeyLoader_v15 { +class J3DAnmKeyLoader_v15 : public J3DAnmLoader { +public: /* 803384E0 */ J3DAnmKeyLoader_v15(); - /* 803384FC */ ~J3DAnmKeyLoader_v15(); - /* 80338D44 */ void load(void const*); - /* 80338E8C */ void setResource(J3DAnmBase*, void const*); /* 80338FEC */ void readAnmTransform(J3DAnmTransformKeyData const*); /* 80339014 */ void setAnmTransform(J3DAnmTransformKey*, J3DAnmTransformKeyData const*); /* 803390B0 */ void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*); @@ -96,23 +35,17 @@ struct J3DAnmKeyLoader_v15 { /* 80339480 */ void setAnmTevReg(J3DAnmTevRegKey*, J3DAnmTevRegKeyData const*); /* 8033960C */ void readAnmVtxColor(J3DAnmVtxColorKeyData const*); /* 80339634 */ void setAnmVtxColor(J3DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*); -}; - -struct J3DAnmClusterFullData {}; -struct J3DAnmClusterFull {}; + /* 80338D44 */ virtual J3DAnmBase* load(void const*); + /* 80338E8C */ virtual void setResource(J3DAnmBase*, void const*); + /* 803384FC */ virtual ~J3DAnmKeyLoader_v15(); -struct J3DAnmColorFull { - /* 8032A93C */ J3DAnmColorFull(); + /* 0x4 */ J3DAnmBase* mAnm; }; -struct J3DAnmColorFullData {}; - -struct J3DAnmFullLoader_v15 { +class J3DAnmFullLoader_v15 : public J3DAnmLoader { +public: /* 80338468 */ J3DAnmFullLoader_v15(); - /* 80338484 */ ~J3DAnmFullLoader_v15(); - /* 80338558 */ void load(void const*); - /* 803386A0 */ void setResource(J3DAnmBase*, void const*); /* 80338800 */ void readAnmTransform(J3DAnmTransformFullData const*); /* 80338828 */ void setAnmTransform(J3DAnmTransformFull*, J3DAnmTransformFullData const*); /* 803388BC */ void readAnmColor(J3DAnmColorFullData const*); @@ -125,6 +58,12 @@ struct J3DAnmFullLoader_v15 { /* 80338B48 */ void setAnmCluster(J3DAnmClusterFull*, J3DAnmClusterFullData const*); /* 80338BB4 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*); /* 80338BDC */ void setAnmVtxColor(J3DAnmVtxColorFull*, J3DAnmVtxColorFullData const*); + + /* 80338558 */ virtual J3DAnmBase* load(void const*); + /* 803386A0 */ virtual void setResource(J3DAnmBase*, void const*); + /* 80338484 */ virtual ~J3DAnmFullLoader_v15(); + + /* 0x4 */ J3DAnmBase* mAnm; }; // @@ -184,7 +123,6 @@ extern "C" extern char const* const J3DAnmLoader__stringBase0; // External References: // -extern "C" void OSReport(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void setResource__10JUTNameTabFPC7ResNTAB(); @@ -279,27 +217,184 @@ SECTION_SDATA2 static f32 lit_889[1 + 1 /* padding */] = { /* 80337B40-80338134 332480 05F4+00 0/0 7/7 1/1 .text * load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag */ +// matches with literals +#ifdef NONMATCHING +J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data, J3DAnmLoaderDataBaseFlag flag) { + if (!i_data) { + return NULL; + } + const JUTDataFileHeader* header = (const JUTDataFileHeader*)i_data; + if (header->mMagic == 'J3D1') { + switch (header->mType) { + case 'bck1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTransformKey(); + return loader.load(i_data); + } + case 'bpk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmColorKey(); + return loader.load(i_data); + } + case 'blk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmClusterKey(); + return loader.load(i_data); + } + case 'btk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTextureSRTKey(); + return loader.load(i_data); + } + case 'brk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmTevRegKey(); + return loader.load(i_data); + } + case 'bxk1': { + J3DAnmKeyLoader_v15 loader; + loader.mAnm = new J3DAnmVtxColorKey(); + return loader.load(i_data); + } + case 'bca1': { + J3DAnmFullLoader_v15 loader; + + if (flag & J3DLOADER_UNK_FLAG1) { + loader.mAnm = new J3DAnmTransformFullWithLerp(); + } else { + loader.mAnm = new J3DAnmTransformFull(); + } + + return loader.load(i_data); + } + case 'bpa1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmColorFull(); + return loader.load(i_data); + } + case 'btp1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmTexPattern(); + return loader.load(i_data); + } + case 'bva1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmVisibilityFull(); + return loader.load(i_data); + } + case 'bla1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmClusterFull(); + return loader.load(i_data); + } + case 'bxa1': { + J3DAnmFullLoader_v15 loader; + loader.mAnm = new J3DAnmVtxColorFull(); + return loader.load(i_data); + } + default: + OSReport("J3DAnmLoader: this is not a J3D Binary.\n"); + return NULL; + } + } + return NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void* J3DAnmLoaderDataBase::load(void const* param_0, J3DAnmLoaderDataBaseFlag param_1) { +asm J3DAnmBase* J3DAnmLoaderDataBase::load(void const* param_0, J3DAnmLoaderDataBaseFlag param_1) { nofralloc #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag.s" } #pragma pop +#endif /* 80338134-80338468 332A74 0334+00 0/0 1/1 0/0 .text * setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv.s" +void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; + if (!header) { + return; + } + if (header->mMagic != 'J3D1') { + return; + } + switch (header->mType) { + case 'bck1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bpk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'blk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'btk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'brk1': { + J3DAnmKeyLoader_v15 loader; + if (param_1->getKind() == 5) { + loader.setResource(param_1, param_2); + } + break; + } + case 'bxk1': { + J3DAnmKeyLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bca1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bpa1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'btp1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bla1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bxa1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + case 'bva1': { + J3DAnmFullLoader_v15 loader; + loader.setResource(param_1, param_2); + break; + } + default: { + OSReport("J3DAnmLoader: this is not a J3D Binary.\n"); + break; + } + } } -#pragma pop /* 80338468-80338484 332DA8 001C+00 2/2 0/0 0/0 .text __ct__20J3DAnmFullLoader_v15Fv */ +// matches with vtable data +#ifdef NONMATCHING +J3DAnmFullLoader_v15::J3DAnmFullLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -308,8 +403,13 @@ asm J3DAnmFullLoader_v15::J3DAnmFullLoader_v15() { #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/__ct__20J3DAnmFullLoader_v15Fv.s" } #pragma pop +#endif /* 80338484-803384E0 332DC4 005C+00 3/2 0/0 0/0 .text __dt__20J3DAnmFullLoader_v15Fv */ +// matches with vtable data +#ifdef NONMATCHING +J3DAnmFullLoader_v15::~J3DAnmFullLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -318,8 +418,13 @@ asm J3DAnmFullLoader_v15::~J3DAnmFullLoader_v15() { #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/__dt__20J3DAnmFullLoader_v15Fv.s" } #pragma pop +#endif /* 803384E0-803384FC 332E20 001C+00 2/2 0/0 0/0 .text __ct__19J3DAnmKeyLoader_v15Fv */ +// matches with vtable data +#ifdef NONMATCHING +J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -328,8 +433,13 @@ asm J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() { #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/__ct__19J3DAnmKeyLoader_v15Fv.s" } #pragma pop +#endif /* 803384FC-80338558 332E3C 005C+00 3/2 0/0 0/0 .text __dt__19J3DAnmKeyLoader_v15Fv */ +// matches with vtable data +#ifdef NONMATCHING +J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -338,6 +448,7 @@ asm J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() { #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/__dt__19J3DAnmKeyLoader_v15Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -349,39 +460,108 @@ SECTION_DEAD static char const* const pad_803A216D = "\0\0"; #pragma pop /* 80338558-803386A0 332E98 0148+00 2/1 0/0 0/0 .text load__20J3DAnmFullLoader_v15FPCv */ +// matches with vtable data +#ifdef NONMATCHING +J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1; + const JUTDataBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { + switch (block->mType) { + case 'ANF1': + readAnmTransform((J3DAnmTransformFullData*)block); + break; + case 'PAF1': + readAnmColor((J3DAnmColorFullData*)block); + break; + case 'TPT1': + readAnmTexPattern((J3DAnmTexPatternFullData*)block); + break; + case 'CLF1': + readAnmCluster((J3DAnmClusterFullData*)block); + break; + case 'VAF1': + readAnmVisibility((J3DAnmVisibilityFullData*)block); + break; + case 'VCF1': + readAnmVtxColor((J3DAnmVtxColorFullData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } + return mAnm; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::load(void const* param_0) { +// asm void J3DAnmFullLoader_v15::load(void const* param_0) { +extern "C" asm void load__20J3DAnmFullLoader_v15FPCv() { nofralloc #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/load__20J3DAnmFullLoader_v15FPCv.s" } #pragma pop +#endif /* 803386A0-80338800 332FE0 0160+00 2/1 0/0 0/0 .text * setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv.s" +void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; + const JUTDataBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { + switch (block->mType) { + case 'ANF1': + setAnmTransform((J3DAnmTransformFull*)param_1, (const J3DAnmTransformFullData*)block); + break; + case 'PAF1': + setAnmColor((J3DAnmColorFull*)param_1, (const J3DAnmColorFullData*)block); + break; + case 'TPT1': + setAnmTexPattern((J3DAnmTexPattern*)param_1, (const J3DAnmTexPatternFullData*)block); + break; + case 'CLF1': + setAnmCluster((J3DAnmClusterFull*)param_1, (const J3DAnmClusterFullData*)block); + break; + case 'VAF1': + setAnmVisibility((J3DAnmVisibilityFull*)param_1, + (const J3DAnmVisibilityFullData*)block); + break; + case 'VCF1': + setAnmVtxColor((J3DAnmVtxColorFull*)param_1, (const J3DAnmVtxColorFullData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } } -#pragma pop /* 80338800-80338828 333140 0028+00 1/1 0/0 0/0 .text * readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData.s" +void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* param_1) { + setAnmTransform((J3DAnmTransformFull*)mAnm, param_1); } -#pragma pop /* 80338828-803388BC 333168 0094+00 2/2 0/0 0/0 .text * setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_1, + const J3DAnmTransformFullData* param_2) { + param_1->field_0x1e = param_2->field_0xc; + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmTransformFullTable>(param_2, (void*)param_2->mTableOffset); + param_1->field_0xc = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset); + param_1->field_0x10 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset); + param_1->field_0x14 = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mTransValOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -391,20 +571,36 @@ asm void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80338828.s" } #pragma pop +#endif /* 803388BC-803388E4 3331FC 0028+00 1/1 0/0 0/0 .text * readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData.s" +void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* param_1) { + setAnmColor((J3DAnmColorFull*)mAnm, param_1); } -#pragma pop /* 803388E4-803389B0 333224 00CC+00 2/2 0/0 0/0 .text * setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1, + const J3DAnmColorFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmColorFullTable>(param_2, (void*)param_2->mTableOffset); + param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mRValuesOffset); + param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mGValuesOffset); + param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mBValuesOffset); + param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mAValuesOffset); + param_1->mUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset)); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -414,20 +610,34 @@ asm void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData.s" } #pragma pop +#endif /* 803389B0-803389D8 3332F0 0028+00 1/1 0/0 0/0 .text * readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData.s" +void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* param_1) { + setAnmTexPattern((J3DAnmTexPattern*)mAnm, param_1); } -#pragma pop /* 803389D8-80338A7C 333318 00A4+00 2/2 0/0 0/0 .text * setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_1, + const J3DAnmTexPatternFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->field_0xc; + param_1->field_0x14 = param_2->field_0xe; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmTexPatternFullTable>(param_2, (void*)param_2->mTableOffset); + param_1->mTextureIndex = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mValuesOffset); + param_1->mUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset)); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -437,20 +647,30 @@ asm void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_803389D8.s" } #pragma pop +#endif /* 80338A7C-80338AA4 3333BC 0028+00 1/1 0/0 0/0 .text * readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData.s" +void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* param_1) { + setAnmVisibility((J3DAnmVisibilityFull*)mAnm, param_1); } -#pragma pop /* 80338AA4-80338B20 3333E4 007C+00 2/2 0/0 0/0 .text * setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1, + const J3DAnmVisibilityFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->field_0xc; + param_1->field_0xe = param_2->field_0xe; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(param_2, (void*)param_2->mTableOffset); + param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mValuesOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -460,20 +680,28 @@ asm void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80338AA4.s" } #pragma pop +#endif /* 80338B20-80338B48 333460 0028+00 1/1 0/0 0/0 .text * readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmCluster(J3DAnmClusterFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData.s" +void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* param_1) { + setAnmCluster((J3DAnmClusterFull*)mAnm, param_1); } -#pragma pop /* 80338B48-80338BB4 333488 006C+00 2/2 0/0 0/0 .text * setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* param_1, + const J3DAnmClusterFullData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmClusterFullTable>(param_2, (void*)param_2->mTableOffset); + param_1->mWeight = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mWeightOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -483,20 +711,51 @@ asm void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80338B48.s" } #pragma pop +#endif /* 80338BB4-80338BDC 3334F4 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData.s" +void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1) { + setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, param_1); } -#pragma pop /* 80338BDC-80338D44 33351C 0168+00 2/2 0/0 0/0 .text * setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, + const J3DAnmVtxColorFullData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mAnmTableNum[0] = data->mAnmTableNum[0]; + dst->mAnmTableNum[1] = data->mAnmTableNum[1]; + dst->mpTable[0] = + JSUConvertOffsetToPtr<J3DAnmColorFullTable>(data, (void*)data->mTableOffsets[0]); + dst->mpTable[1] = + JSUConvertOffsetToPtr<J3DAnmColorFullTable>(data, (void*)data->mTableOffsets[1]); + dst->mAnmVtxColorIndexData[0] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>( + data, (void*)data->mVtxColorIndexDataOffsets[0]); + dst->mAnmVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>( + data, (void*)data->mVtxColorIndexDataOffsets[1]); + void* indexPtr0 = + JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColorIndexPointerOffsets[0]); + void* indexPtr1 = + JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColorIndexPointerOffsets[1]); + + for (s32 i = 0; i < dst->mAnmTableNum[0]; i++) + dst->mAnmVtxColorIndexData[0][i].mpData = + (void*)((s32)indexPtr0 + (s32)dst->mAnmVtxColorIndexData[0][i].mpData * 2); + for (s32 i = 0; i < dst->mAnmTableNum[1]; i++) + dst->mAnmVtxColorIndexData[1][i].mpData = + (void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2); + + dst->mColorR = JSUConvertOffsetToPtr<u8>(data, (void*)data->mRValuesOffset); + dst->mColorG = JSUConvertOffsetToPtr<u8>(data, (void*)data->mGValuesOffset); + dst->mColorB = JSUConvertOffsetToPtr<u8>(data, (void*)data->mBValuesOffset); + dst->mColorA = JSUConvertOffsetToPtr<u8>(data, (void*)data->mAValuesOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -506,41 +765,111 @@ asm void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80338BDC.s" } #pragma pop +#endif /* 80338D44-80338E8C 333684 0148+00 2/1 0/0 0/0 .text load__19J3DAnmKeyLoader_v15FPCv */ +// matches with literals +#ifdef NONMATCHING +J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1; + const JUTDataBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { + switch (block->mType) { + case 'ANK1': + readAnmTransform((J3DAnmTransformKeyData*)block); + break; + case 'PAK1': + readAnmColor((J3DAnmColorKeyData*)block); + break; + case 'CLK1': + readAnmCluster((J3DAnmClusterKeyData*)block); + break; + case 'TTK1': + readAnmTextureSRT((J3DAnmTextureSRTKeyData*)block); + break; + case 'TRK1': + readAnmTevReg((J3DAnmTevRegKeyData*)block); + break; + case 'VCK1': + readAnmVtxColor((J3DAnmVtxColorKeyData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } + return mAnm; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::load(void const* param_0) { +// asm J3DAnmBase* J3DAnmKeyLoader_v15::load(void const* param_0) { +extern "C" asm void load__19J3DAnmKeyLoader_v15FPCv() { nofralloc #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/load__19J3DAnmKeyLoader_v15FPCv.s" } #pragma pop +#endif /* 80338E8C-80338FEC 3337CC 0160+00 2/1 0/0 0/0 .text * setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv.s" +void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { + const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2; + const JUTDataBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { + switch (block->mType) { + case 'ANK1': + setAnmTransform((J3DAnmTransformKey*)param_1, (const J3DAnmTransformKeyData*)block); + break; + case 'PAK1': + setAnmColor((J3DAnmColorKey*)param_1, (const J3DAnmColorKeyData*)block); + break; + case 'CLK1': + setAnmCluster((J3DAnmClusterKey*)param_1, (const J3DAnmClusterKeyData*)block); + break; + case 'TTK1': + setAnmTextureSRT((J3DAnmTextureSRTKey*)param_1, (const J3DAnmTextureSRTKeyData*)block); + break; + case 'TRK1': + setAnmTevReg((J3DAnmTevRegKey*)param_1, (const J3DAnmTevRegKeyData*)block); + break; + case 'VCK1': + setAnmVtxColor((J3DAnmVtxColorKey*)param_1, (const J3DAnmVtxColorKeyData*)block); + break; + default: + OSReport("Unknown data block\n"); + break; + } + block = block->getNext(); + } } -#pragma pop /* 80338FEC-80339014 33392C 0028+00 1/1 0/0 0/0 .text * readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData.s" +void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* param_1) { + setAnmTransform((J3DAnmTransformKey*)mAnm, param_1); } -#pragma pop /* 80339014-803390B0 333954 009C+00 2/2 0/0 0/0 .text * setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_1, + const J3DAnmTransformKeyData* param_2) { + param_1->field_0x1e = param_2->field_0xc; + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mDecShift = param_2->field_0x9; + param_1->mFrame = 0.0f; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset); + param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x18); + param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x1c); + param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x20); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -550,20 +879,69 @@ asm void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80339014.s" } #pragma pop +#endif /* 803390B0-803390D8 3339F0 0028+00 1/1 0/0 0/0 .text * readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData.s" +void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* param_1) { + setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, param_1); } -#pragma pop /* 803390D8-803392B0 333A18 01D8+00 2/2 0/0 0/0 .text * setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1, + const J3DAnmTextureSRTKeyData* param_2) { + param_1->mTrackNum = param_2->field_0xc; + param_1->mFrameMax = param_2->field_0xa; + param_1->mAttribute = param_2->field_0x8; + param_1->mDecShift = param_2->field_0x9; + param_1->mFrame = 0.0f; + param_1->mTrackNum = param_2->field_0xc; + param_1->mScaleNum = param_2->field_0xe; + param_1->mRotNum = param_2->field_0x10; + param_1->mTransNum = param_2->field_0x12; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset); + param_1->mUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMatIDOffset); + param_1->mUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab1Offset)); + param_1->mUpdateTexMtxID = + JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mUpdateTexMtxIDOffset); + param_1->mSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->unkOffset); + param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset); + param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset); + param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mTransValOffset); + if (param_2->mNameTab2Offset) { + param_1->mPostUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab2Offset)); + } + param_1->field_0x4a = param_2->field_0x34; + param_1->field_0x44 = param_2->field_0x36; + param_1->field_0x46 = param_2->field_0x38; + param_1->field_0x48 = param_2->field_0x3a; + param_1->field_0x58 = + JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mInfoTable2Offset); + param_1->mPostUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->field_0x40); + param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->field_0x48); + param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->field_0x4c); + param_1->field_0x4c = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x50); + param_1->field_0x50 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x54); + param_1->field_0x54 = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x58); + switch (param_2->field_0x5c) { + case 0: + case 1: + param_1->mTexMtxCalcType = param_2->field_0x5c; + break; + default: + param_1->mTexMtxCalcType = 0; + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -573,20 +951,39 @@ asm void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_803390D8.s" } #pragma pop +#endif /* 803392B0-803392D8 333BF0 0028+00 1/1 0/0 0/0 .text * readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData.s" +void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* param_1) { + setAnmColor((J3DAnmColorKey*)mAnm, param_1); } -#pragma pop /* 803392D8-803393C4 333C18 00EC+00 2/2 0/0 0/0 .text * setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColorKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum; + param_1->field_0xc = param_2->field_0x10; + param_1->field_0xe = param_2->field_0x12; + param_1->field_0x10 = param_2->field_0x14; + param_1->field_0x12 = param_2->field_0x16; + param_1->field_0x3c = + JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset); + param_1->field_0x2c = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset); + param_1->field_0x30 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset); + param_1->field_0x34 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset); + param_1->field_0x38 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset); + param_1->mUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset); + param_1->mUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset)); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -596,20 +993,28 @@ asm void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData.s" } #pragma pop +#endif /* 803393C4-803393EC 333D04 0028+00 1/1 0/0 0/0 .text * readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmCluster(J3DAnmClusterKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData.s" +void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* param_1) { + setAnmCluster((J3DAnmClusterKey*)mAnm, param_1); } -#pragma pop /* 803393EC-80339458 333D2C 006C+00 2/2 0/0 0/0 .text * setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* param_1, + const J3DAnmClusterKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mAnmTable = + JSUConvertOffsetToPtr<J3DAnmClusterKeyTable>(param_2, (void*)param_2->mTableOffset); + param_1->mWeight = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mWeightOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -619,20 +1024,55 @@ asm void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_803393EC.s" } #pragma pop +#endif /* 80339458-80339480 333D98 0028+00 1/1 0/0 0/0 .text * readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData.s" +void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* param_1) { + setAnmTevReg((J3DAnmTevRegKey*)mAnm, param_1); } -#pragma pop /* 80339480-8033960C 333DC0 018C+00 2/2 0/0 0/0 .text * setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_1, + const J3DAnmTevRegKeyData* param_2) { + param_1->mFrameMax = param_2->mFrameMax; + param_1->mAttribute = param_2->field_0x8; + param_1->mFrame = 0.0f; + param_1->mCRegUpdateMaterialNum = param_2->mCRegUpdateMaterialNum; + param_1->mAnmCRegKeyTable = + JSUConvertOffsetToPtr<J3DAnmCRegKeyTable>(param_2, (void*)param_2->mCRegTableOffset); + param_1->mCRegUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mCRegUpdateMaterialIDOffset); + param_1->mCRegUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mCRegNameTabOffset)); + param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum; + param_1->mAnmKRegKeyTable = + JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(param_2, (void*)param_2->mKRegTableOffset); + param_1->mKRegUpdateMaterialID = + JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mKRegUpdateMaterialIDOffset); + param_1->mKRegUpdateMaterialName.setResource( + JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mKRegNameTabOffset)); + param_1->mCRegDataCountR = param_2->field_0x10; + param_1->mCRegDataCountG = param_2->field_0x12; + param_1->mCRegDataCountB = param_2->field_0x14; + param_1->mCRegDataCountA = param_2->field_0x16; + param_1->mAnmCRegDataR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCRValuesOffset); + param_1->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCGValuesOffset); + param_1->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCBValuesOffset); + param_1->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCAValuesOffset); + param_1->mKRegDataCountR = param_2->field_0x18; + param_1->mKRegDataCountG = param_2->field_0x1a; + param_1->mKRegDataCountB = param_2->field_0x1c; + param_1->mKRegDataCountA = param_2->field_0x1e; + param_1->mAnmKRegDataR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKRValuesOffset); + param_1->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKGValuesOffset); + param_1->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKBValuesOffset); + param_1->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKAValuesOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -642,20 +1082,49 @@ asm void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData.s" } #pragma pop +#endif /* 8033960C-80339634 333F4C 0028+00 1/1 0/0 0/0 .text * readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData.s" +void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* param_1) { + setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, param_1); } -#pragma pop /* 80339634-8033979C 333F74 0168+00 2/2 0/0 0/0 .text * setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */ +// matches with literals / weaks +#ifdef NONMATCHING +void J3DAnmKeyLoader_v15::setAnmVtxColor(J3DAnmVtxColorKey* dst, + const J3DAnmVtxColorKeyData* data) { + dst->mFrameMax = data->mFrameMax; + dst->mAttribute = data->field_0x8; + dst->mFrame = 0.0f; + dst->mAnmTableNum[0] = data->mAnmTableNum[0]; + dst->mAnmTableNum[1] = data->mAnmTableNum[1]; + dst->mpTable[0] = + JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(data, (void*)data->mTableOffsets[0]); + dst->mpTable[1] = + JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(data, (void*)data->mTableOffsets[1]); + dst->mAnmVtxColorIndexData[0] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>( + data, (void*)data->mVtxColoIndexDataOffset[0]); + dst->mAnmVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>( + data, (void*)data->mVtxColoIndexDataOffset[1]); + void* indexPtr0 = JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColoIndexPointerOffset[0]); + void* indexPtr1 = JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColoIndexPointerOffset[1]); + + for (s32 i = 0; i < dst->mAnmTableNum[0]; i++) + dst->mAnmVtxColorIndexData[0][i].mpData = + (void*)((s32)indexPtr0 + (s32)dst->mAnmVtxColorIndexData[0][i].mpData * 2); + for (s32 i = 0; i < dst->mAnmTableNum[1]; i++) + dst->mAnmVtxColorIndexData[1][i].mpData = + (void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2); + + dst->mColorR = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRValOffset); + dst->mColorG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mGValOffset); + dst->mColorB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mBValOffset); + dst->mColorA = JSUConvertOffsetToPtr<s16>(data, (void*)data->mAValOffset); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -665,6 +1134,7 @@ asm void J3DAnmKeyLoader_v15::setAnmVtxColor(J3DAnmVtxColorKey* param_0, #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/func_80339634.s" } #pragma pop +#endif /* 8033979C-803397F8 3340DC 005C+00 1/0 0/0 0/0 .text __dt__20J3DAnmVisibilityFullFv */ #pragma push @@ -686,7 +1156,8 @@ s32 J3DAnmVisibilityFull::getKind() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DAnmLoader::~J3DAnmLoader() { +// asm J3DAnmLoader::~J3DAnmLoader() { +extern "C" asm void __dt__12J3DAnmLoaderFv() { nofralloc #include "asm/JSystem/J3DGraphLoader/J3DAnmLoader/__dt__12J3DAnmLoaderFv.s" } |
