diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-01-18 22:04:56 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-18 22:04:56 -0800 |
| commit | 169f56ca2cef4ab46a7d90b16192293e4bb5f394 (patch) | |
| tree | dda3af6679950518fa7cbfd68e5b8ff86b120df4 /include/JSystem | |
| parent | 2d125d40b818c9338d90d29d513c8f93b063b879 (diff) | |
| parent | ce5a8c47ad45f002421a9997fafa67737e668788 (diff) | |
Merge pull request #176 from lepelog/J2DAnmLoader
J2DAnmLoader
Diffstat (limited to 'include/JSystem')
| -rw-r--r-- | include/JSystem/J2DGraph/J2DAnimation.h | 270 | ||||
| -rw-r--r-- | include/JSystem/J2DGraph/J2DAnmLoader.h | 26 | ||||
| -rw-r--r-- | include/JSystem/J3DGraphAnimator/J3DAnimation.h | 273 | ||||
| -rw-r--r-- | include/JSystem/JSupport/JSupport.h | 13 |
4 files changed, 463 insertions, 119 deletions
diff --git a/include/JSystem/J2DGraph/J2DAnimation.h b/include/JSystem/J2DGraph/J2DAnimation.h index 654c997b51..bc4d9a94bc 100644 --- a/include/JSystem/J2DGraph/J2DAnimation.h +++ b/include/JSystem/J2DGraph/J2DAnimation.h @@ -10,197 +10,214 @@ class J2DScreen; +enum J2DAnmKind { + 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 { public: + J2DAnmBase() { + mFrame = 0; + mFrameMax = 0; + } /* 80053C94 */ virtual ~J2DAnmBase() {} /* 800569B0 */ virtual void searchUpdateMaterialID(J2DScreen*); 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; } -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; + /* 0xC */ J2DAnmKind mKind; }; // Size: 0x10 class J2DAnmVtxColor : public J2DAnmBase { public: + J2DAnmVtxColor() { + mKind = KIND_VTX_COLOR; + 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 { - /* 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() { + 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 { - 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 = KIND_VISIBILITY; + } + /* 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 = KIND_TRANSFORM; + } /* 80184370 */ virtual ~J2DAnmTransform() {} /* 80191130 */ virtual void getTransform(u16, J3DTransformInfo*) const; -protected: /* 0x10 */ f32* mScaleValues; /* 0x14 */ s16* mRotationValues; /* 0x18 */ f32* mTranslateValues; }; // Size: 0x1C -struct J2DAnmTransformKeyInfo { - J3DAnmKeyTableBase mScaleInfo; - J3DAnmKeyTableBase mRotationInfo; - J3DAnmKeyTableBase mTranslateInfo; -}; // Size = 0x12 - 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); } /* 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 { - /* 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; } /* 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; }; -struct J2DAnmTextureSRTKeyInfo { - J3DAnmKeyTableBase mScaleInfo; - J3DAnmKeyTableBase mRotationInfo; - J3DAnmKeyTableBase mTranslationInfo; -}; // Size = 0x12 - 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 = KIND_TEXTURE_SRT; + } /* 8030B9F0 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const; /* 80184274 */ virtual ~J2DAnmTextureSRTKey() {} /* 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; }; -struct J2DAnmTexPatternInfo { - /* 0x00 */ u16 mMaxFrame; - /* 0x02 */ u16 mOffset; - /* 0x04 */ u16 _4; - /* 0x06 */ u16 _6; -}; // Size = 0x8 - class J2DAnmTexPattern : public J2DAnmBase { public: struct J2DAnmTexPatternTIMGPointer { @@ -211,6 +228,15 @@ public: /* 0x4 */ JUTPalette* mPalette; }; // Size: 0x8 + J2DAnmTexPattern() { + mValues = NULL; + mAnmTable = NULL; + mKind = KIND_TEX_PATTERN; + mUpdateMaterialNum = 0; + mUpdaterMaterialID = NULL; + mTIMGPtrArray = NULL; + } + /* 8030BEE8 */ void getTexNo(u16, u16*) const; /* 8030BF9C */ ResTIMG* getResTIMG(u16) const; /* 8030BFF0 */ JUTPalette* getPalette(u16) const; @@ -219,33 +245,46 @@ 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 { - /* 0x00 */ J3DAnmKeyTableBase mRTable; - /* 0x06 */ J3DAnmKeyTableBase mGTable; - /* 0x0C */ J3DAnmKeyTableBase mBTable; - /* 0x12 */ J3DAnmKeyTableBase mATable; - /* 0x18 */ u8 _18[4]; -}; // Size = 0x1C - 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 = KIND_TEV_REG; + } /* 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; @@ -257,11 +296,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; @@ -274,12 +313,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 = KIND_COLOR; + } /* 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; @@ -289,24 +336,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 { @@ -322,15 +368,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 <typename T> diff --git a/include/JSystem/J2DGraph/J2DAnmLoader.h b/include/JSystem/J2DGraph/J2DAnmLoader.h index b6867363da..398623d9c8 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() {} + void* _4; }; -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 { @@ -60,9 +74,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/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 15ded86a06..77d82db311 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -6,6 +6,274 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" +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 + +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(); @@ -75,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/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h new file mode 100644 index 0000000000..7c1d91058a --- /dev/null +++ b/include/JSystem/JSupport/JSupport.h @@ -0,0 +1,13 @@ +#ifndef JSUPPORT_H +#define JSUPPORT_H + +template <typename T> +T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { + if (ptr == NULL) { + return NULL; + } else { + return (T*)((s32)ptr + (s32)offset); + } +} + +#endif |
