J2DAnmKind enum

This commit is contained in:
lepelog 2022-01-12 20:40:23 +01:00
parent ef1757a63b
commit 36e7f7639e
3 changed files with 117 additions and 106 deletions

View File

@ -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*);

View File

@ -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:

View File

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