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; }