diff --git a/configure.py b/configure.py index 6c11b1aca..88c39db83 100644 --- a/configure.py +++ b/configure.py @@ -898,7 +898,7 @@ config.libs = [ Object(Matching, "JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp"), Object(Matching, "JSystem/J3DGraphLoader/J3DJointFactory.cpp"), Object(Matching, "JSystem/J3DGraphLoader/J3DShapeFactory.cpp"), - Object(NonMatching, "JSystem/J3DGraphLoader/J3DAnmLoader.cpp"), + Object(Matching, "JSystem/J3DGraphLoader/J3DAnmLoader.cpp"), ], ), JSystemLib( diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 18fc4bc49..5aa10507e 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -21,8 +21,6 @@ struct J3DAnmColorKeyTable { J3DAnmKeyTableBase mAInfo; }; // Size = 0x18 -struct J3DAnmVtxColorIndexData; - struct J3DAnmColorFullTable { /* 0x00 */ u16 mRMaxFrame; /* 0x02 */ u16 mROffset; @@ -683,6 +681,12 @@ private: /* 0x40 */ J3DAnmColorFullTable * mAnmTable; }; +class J3DAnmVtxColorIndexData { +public: + /* 0x00 */ u16 mNum; + /* 0x04 */ void* mpData; +}; + class J3DAnmVtxColor : public J3DAnmBase { public: J3DAnmVtxColor() : J3DAnmBase(0) { @@ -697,10 +701,11 @@ public: virtual ~J3DAnmVtxColor(); virtual void getColor(u8, u16, GXColor*) const {} + inline J3DAnmVtxColorIndexData* getAnmVtxColorIndexData(u8 idx, u16 frame) { return &mAnmVtxColorIndexData[idx][frame]; } protected: - /* 0x10 */ s16 mAnmTableNum[2]; - /* 0x14 */ void* mAnmVtxColorIndexData[2]; + /* 0x10 */ u16 mAnmTableNum[2]; + /* 0x14 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2]; }; // Size: 0x1C class J3DAnmVtxColorKey : public J3DAnmVtxColor { diff --git a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index d1bf9c07c..70ddb6c9a 100644 --- a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -344,7 +344,6 @@ void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1 /* 803001B0-80300318 .text setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, const J3DAnmVtxColorFullData* data) { - /* Nonmatching */ dst->mFrameMax = data->mFrameMax; dst->mAttribute = data->field_0x8; dst->mFrame = 0.0f; @@ -357,9 +356,10 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, const J3DAnmV void* indexPtr0 = JSUConvertOffsetToPtr(data, (void*)data->mVtxColorIndexPointerOffsets[0]); void* indexPtr1 = JSUConvertOffsetToPtr(data, (void*)data->mVtxColorIndexPointerOffsets[1]); - for (s32 i = 0; i < data->mIndexNum[0]; i++) { - // dst->mpIndexPtr - } + 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(data, (void*)data->mRValuesOffset); dst->mColorG = JSUConvertOffsetToPtr(data, (void*)data->mGValuesOffset); @@ -606,9 +606,10 @@ void J3DAnmKeyLoader_v15::setAnmVtxColor(J3DAnmVtxColorKey* dst, const J3DAnmVtx void* indexPtr0 = JSUConvertOffsetToPtr(data, (void*)data->mVtxColorIndexPointerOffsets[0]); void* indexPtr1 = JSUConvertOffsetToPtr(data, (void*)data->mVtxColorIndexPointerOffsets[1]); - for (s32 i = 0; i < data->mIndexNum[0]; i++) { - // dst->mpIndexPtr - } + 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(data, (void*)data->mRValuesOffset); dst->mColorG = JSUConvertOffsetToPtr(data, (void*)data->mGValuesOffset);