Reorganize library code into libs/ (#3119)

* Reorganize files into libs/{dolphin,JSystem,PowerPC_EABI_Support,revolution,TRK_MINNOW_DOLPHIN}

* Update configure.py and project.py for new libs structure

* Refactor `#include <dolphin/x.h>` -> `<x.h>`

* Remove `__REVOLUTION_SDK__` forwards from dolphin

* Fix dolphin/ references in revolution

* Wrap `#include <dolphin.h>` in `!__REVOLUTION_SDK__`

* Always build TRK against dolphin headers

* Resolve revolution SDK header resolution issues
This commit is contained in:
Luke Street
2026-03-01 15:35:36 -07:00
committed by GitHub
parent c9a46bd65b
commit 4df8ccc871
1740 changed files with 583 additions and 825 deletions
@@ -0,0 +1,100 @@
#ifndef J3DANMLOADER_H
#define J3DANMLOADER_H
class J3DAnmClusterFull;
struct J3DAnmClusterFullData;
class J3DAnmClusterKey;
struct J3DAnmClusterKeyData;
class J3DAnmColorFull;
struct J3DAnmColorFullData;
class J3DAnmColorKey;
struct J3DAnmColorKeyData;
class J3DAnmTevRegKey;
struct J3DAnmTevRegKeyData;
class J3DAnmTexPattern;
struct J3DAnmTexPatternFullData;
class J3DAnmTextureSRTKey;
struct J3DAnmTextureSRTKeyData;
class J3DAnmTransformFull;
struct J3DAnmTransformFullData;
class J3DAnmTransformKey;
struct J3DAnmTransformKeyData;
class J3DAnmVisibilityFull;
struct J3DAnmVisibilityFullData;
class J3DAnmVtxColorFull;
struct J3DAnmVtxColorFullData;
class J3DAnmVtxColorKey;
struct J3DAnmVtxColorKeyData;
enum J3DAnmLoaderDataBaseFlag {
J3DLOADER_UNK_FLAG0,
J3DLOADER_UNK_FLAG1,
};
class J3DAnmBase;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DAnmLoaderDataBase {
static J3DAnmBase* load(void const*, J3DAnmLoaderDataBaseFlag);
static void setResource(J3DAnmBase*, void const*);
static J3DAnmBase* load(void const* param_0) { return load(param_0, J3DLOADER_UNK_FLAG0); }
};
class J3DAnmLoader {
public:
virtual J3DAnmBase* load(const void*) = 0;
virtual void setResource(J3DAnmBase*, const void*) = 0;
virtual ~J3DAnmLoader() {}
};
class J3DAnmFullLoader_v15 : public J3DAnmLoader {
public:
J3DAnmFullLoader_v15();
void readAnmTransform(J3DAnmTransformFullData const*);
void setAnmTransform(J3DAnmTransformFull*, J3DAnmTransformFullData const*);
void readAnmColor(J3DAnmColorFullData const*);
void setAnmColor(J3DAnmColorFull*, J3DAnmColorFullData const*);
void readAnmTexPattern(J3DAnmTexPatternFullData const*);
void setAnmTexPattern(J3DAnmTexPattern*, J3DAnmTexPatternFullData const*);
void readAnmVisibility(J3DAnmVisibilityFullData const*);
void setAnmVisibility(J3DAnmVisibilityFull*, J3DAnmVisibilityFullData const*);
void readAnmCluster(J3DAnmClusterFullData const*);
void setAnmCluster(J3DAnmClusterFull*, J3DAnmClusterFullData const*);
void readAnmVtxColor(J3DAnmVtxColorFullData const*);
void setAnmVtxColor(J3DAnmVtxColorFull*, J3DAnmVtxColorFullData const*);
virtual J3DAnmBase* load(void const*);
virtual void setResource(J3DAnmBase*, void const*);
virtual ~J3DAnmFullLoader_v15();
/* 0x4 */ J3DAnmBase* mAnm;
};
class J3DAnmKeyLoader_v15 : public J3DAnmLoader {
public:
J3DAnmKeyLoader_v15();
void readAnmTransform(J3DAnmTransformKeyData const*);
void setAnmTransform(J3DAnmTransformKey*, J3DAnmTransformKeyData const*);
void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*);
void setAnmTextureSRT(J3DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*);
void readAnmColor(J3DAnmColorKeyData const*);
void setAnmColor(J3DAnmColorKey*, J3DAnmColorKeyData const*);
void readAnmCluster(J3DAnmClusterKeyData const*);
void setAnmCluster(J3DAnmClusterKey*, J3DAnmClusterKeyData const*);
void readAnmTevReg(J3DAnmTevRegKeyData const*);
void setAnmTevReg(J3DAnmTevRegKey*, J3DAnmTevRegKeyData const*);
void readAnmVtxColor(J3DAnmVtxColorKeyData const*);
void setAnmVtxColor(J3DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*);
virtual J3DAnmBase* load(void const*);
virtual void setResource(J3DAnmBase*, void const*);
virtual ~J3DAnmKeyLoader_v15();
/* 0x4 */ J3DAnmBase* mAnm;
};
#endif /* J3DANMLOADER_H */
@@ -0,0 +1,61 @@
#ifndef J3DCLUSTERLOADER_H
#define J3DCLUSTERLOADER_H
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
/**
* @ingroup jsystem-j3d
*
*/
struct J3DClusterLoaderDataBase {
static void* load(void const*);
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterBlock : public JUTDataBlockHeader {
public:
/* 0x08 */ u16 mClusterNum;
/* 0x0A */ u16 mClusterKeyNum;
/* 0x0C */ u16 mClusterVertexNum;
/* 0x0E */ u16 mVtxPosNum;
/* 0x10 */ u16 mVtxNrmNum;
/* 0x14 */ void* mClusterPointer;
/* 0x18 */ void* mClusterKeyPointer;
/* 0x1C */ void* mClusterVertex;
/* 0x20 */ void* mVtxPos;
/* 0x24 */ void* mVtxNrm;
/* 0x28 */ void* mClusterName;
/* 0x2C */ void* mClusterKeyName;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterLoader {
public:
virtual void* load(const void*) = 0;
virtual ~J3DClusterLoader() {}
};
class J3DDeformData;
/**
* @ingroup jsystem-j3d
*
*/
class J3DClusterLoader_v15 : public J3DClusterLoader {
public:
J3DClusterLoader_v15();
void readCluster(J3DClusterBlock const*);
virtual void* load(void const*);
virtual ~J3DClusterLoader_v15();
/* 0x04 */ J3DDeformData* mpDeformData;
};
#endif /* J3DCLUSTERLOADER_H */
@@ -0,0 +1,43 @@
#ifndef J3DJOINTFACTORY_H
#define J3DJOINTFACTORY_H
#include "JSystem/J3DGraphBase/J3DTransform.h"
class J3DJoint;
struct J3DJointBlock;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointInitData {
/* 0x00 */ u16 mKind;
/* 0x02 */ bool mScaleCompensate;
/* 0x04 */ J3DTransformInfo mTransformInfo;
/* 0x24 */ f32 mRadius;
/* 0x28 */ Vec mMin;
/* 0x2C */ Vec mMax;
}; // Size: 0x30
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointFactory {
J3DJointFactory(J3DJointBlock const&);
J3DJoint* create(int);
J3DJointInitData* mJointInitData;
u16* mIndexTable;
u8 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; }
u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; }
const J3DTransformInfo& getTransformInfo(int no) const {
return mJointInitData[mIndexTable[no]].mTransformInfo;
}
f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; }
Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; }
Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; }
};
#endif /* J3DJOINTFACTORY_H */
@@ -0,0 +1,182 @@
#ifndef J3DMATERIALFACTORY_H
#define J3DMATERIALFACTORY_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include <gx.h>
class J3DMaterial;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialInitData {
/* 0x000 */ u8 mMaterialMode;
/* 0x001 */ u8 mCullModeIdx;
/* 0x002 */ u8 mColorChanNumIdx;
/* 0x003 */ u8 mTexGenNumIdx;
/* 0x004 */ u8 mTevStageNumIdx;
/* 0x005 */ u8 mZCompLocIdx;
/* 0x006 */ u8 mZModeIdx;
/* 0x007 */ u8 mDitherIdx;
/* 0x008 */ u16 mMatColorIdx[2];
/* 0x00C */ u16 mColorChanIdx[4];
/* 0x014 */ u16 mAmbColorIdx[2];
/* 0x018 */ u8 field_0x018[0x10];
/* 0x028 */ u16 mTexCoordIdx[8];
/* 0x038 */ u8 field_0x038[0x10];
/* 0x048 */ u16 mTexMtxIdx[8];
/* 0x058 */ u8 field_0x058[0x2c];
/* 0x084 */ u16 mTexNoIdx[8];
/* 0x094 */ u16 mTevKColorIdx[4];
/* 0x09C */ u8 mTevKColorSel[0x10];
/* 0x0AC */ u8 mTevKAlphaSel[0x10];
/* 0x0BC */ u16 mTevOrderIdx[0x10];
/* 0x0DC */ u16 mTevColorIdx[4];
/* 0x0E4 */ u16 mTevStageIdx[0x10];
/* 0x104 */ u16 mTevSwapModeIdx[0x10];
/* 0x124 */ u16 mTevSwapModeTableIdx[4];
/* 0x12C */ u8 field_0x12c[0x18];
/* 0x144 */ u16 mFogIdx;
/* 0x146 */ u16 mAlphaCompIdx;
/* 0x148 */ u16 mBlendIdx;
/* 0x14A */ u16 mNBTScaleIdx;
}; // size 0x14C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DIndInitData {
/* 0x000 */ bool mEnabled;
/* 0x001 */ u8 mIndTexStageNum;
/* 0x002 */ u8 field_0x002[2];
/* 0x004 */ J3DIndTexOrderInfo mIndTexOrderInfo[3];
/* 0x010 */ u8 field_0x010[4];
/* 0x014 */ J3DIndTexMtxInfo mIndTexMtxInfo[3];
/* 0x068 */ J3DIndTexCoordScaleInfo mIndTexCoordScaleInfo[3];
/* 0x074 */ u8 field_0x074[4];
/* 0x078 */ J3DIndTevStageInfo mIndTevStageInfo[0x10];
}; // size 0x138
/**
* @ingroup jsystem-j3d
*
*/
struct J3DPatchingInfo {
/* 0x0 */ u16 mMatColorOffset;
/* 0x2 */ u16 mColorChanOffset;
/* 0x4 */ u16 mTexMtxOffset;
/* 0x6 */ u16 mTexNoOffset;
/* 0x8 */ u16 mTevRegOffset;
/* 0xA */ u16 mFogOffset;
/* 0xC */ u8 field_0xc[4];
}; // size 0x10
/**
* @ingroup jsystem-j3d
*
*/
struct J3DDisplayListInit {
/* 0x0 */ u32 mOffset;
/* 0x4 */ u32 field_0x4;
}; // size 8
struct J3DTexCoord2Info;
class J3DCurrentMtxInfo;
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialFactory {
public:
enum MaterialType {
MATERIAL_TYPE_NORMAL = 0,
MATERIAL_TYPE_LOCKED = 1,
MATERIAL_TYPE_PATCHED = 2,
};
J3DMaterialFactory(J3DMaterialDLBlock const&);
J3DMaterialFactory(J3DMaterialBlock const&);
u16 countUniqueMaterials();
u32 countTexGens(int) const;
u32 countStages(int) const;
J3DMaterial* create(J3DMaterial*, MaterialType, int, u32) const;
J3DMaterial* createNormalMaterial(J3DMaterial*, int, u32) const;
J3DMaterial* createPatchedMaterial(J3DMaterial*, int, u32) const;
void modifyPatchedCurrentMtx(J3DMaterial*, int) const;
J3DMaterial* createLockedMaterial(J3DMaterial*, int, u32) const;
u32 calcSize(J3DMaterial*, MaterialType, int, u32) const;
u32 calcSizeNormalMaterial(J3DMaterial*, int, u32) const;
u32 calcSizePatchedMaterial(J3DMaterial*, int, u32) const;
u32 calcSizeLockedMaterial(J3DMaterial*, int, u32) const;
J3DGXColor newMatColor(int, int) const;
const u8 newColorChanNum(int) const;
J3DColorChan newColorChan(int, int) const;
J3DGXColor newAmbColor(int, int) const;
u32 newTexGenNum(int) const;
J3DTexCoord newTexCoord(int, int) const;
J3DTexMtx* newTexMtx(int, int) const;
u8 newCullMode(int) const;
u16 newTexNo(int, int) const;
J3DTevOrder newTevOrder(int, int) const;
J3DGXColorS10 newTevColor(int, int) const;
J3DGXColor newTevKColor(int, int) const;
const u8 newTevStageNum(int) const;
J3DTevStage newTevStage(int, int) const;
J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
u8 newIndTexStageNum(int) const;
J3DIndTexOrder newIndTexOrder(int, int) const;
J3DIndTexMtx newIndTexMtx(int, int) const;
J3DIndTevStage newIndTevStage(int, int) const;
J3DIndTexCoordScale newIndTexCoordScale(int, int) const;
J3DFog newFog(int) const;
J3DAlphaComp newAlphaComp(int) const;
J3DBlend newBlend(int) const;
J3DZMode newZMode(int) const;
const u8 newZCompLoc(int) const;
const u8 newDither(int) const;
J3DNBTScale newNBTScale(int) const;
u16 getMaterialID(int idx) const { return mpMaterialID[idx]; }
u8 getMaterialMode(int idx) const { return mpMaterialInitData[mpMaterialID[idx]].mMaterialMode; }
/* 0x00 */ u16 mMaterialNum;
/* 0x04 */ J3DMaterialInitData* mpMaterialInitData;
/* 0x08 */ u16* mpMaterialID;
/* 0x0C */ J3DIndInitData* mpIndInitData;
/* 0x10 */ GXColor* mpMatColor;
/* 0x14 */ u8* mpColorChanNum;
/* 0x18 */ J3DColorChanInfo* mpColorChanInfo;
/* 0x1C */ GXColor* mpAmbColor;
/* 0x20 */ J3DLightInfo* mpLightInfo;
/* 0x24 */ u8* mpTexGenNum;
/* 0x28 */ J3DTexCoordInfo* mpTexCoordInfo;
/* 0x2C */ J3DTexCoord2Info* mpTexCoord2Info;
/* 0x30 */ J3DTexMtxInfo* mpTexMtxInfo;
/* 0x34 */ J3DTexMtxInfo* field_0x34;
/* 0x38 */ u16* mpTexNo;
/* 0x3C */ GXCullMode* mpCullMode;
/* 0x40 */ J3DTevOrderInfo* mpTevOrderInfo;
/* 0x44 */ GXColorS10* mpTevColor;
/* 0x48 */ GXColor* mpTevKColor;
/* 0x4C */ u8* mpTevStageNum;
/* 0x50 */ J3DTevStageInfo* mpTevStageInfo;
/* 0x54 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
/* 0x58 */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
/* 0x5C */ J3DFogInfo* mpFogInfo;
/* 0x60 */ J3DAlphaCompInfo* mpAlphaCompInfo;
/* 0x64 */ J3DBlendInfo* mpBlendInfo;
/* 0x68 */ J3DZModeInfo* mpZModeInfo;
/* 0x6C */ u8* mpZCompLoc;
/* 0x70 */ u8* mpDither;
/* 0x74 */ J3DNBTScaleInfo* mpNBTScaleInfo;
/* 0x78 */ J3DDisplayListInit* mpDisplayListInit;
/* 0x7C */ J3DPatchingInfo* mpPatchingInfo;
/* 0x80 */ J3DCurrentMtxInfo* mpCurrentMtxInfo;
/* 0x84 */ u8* mpMaterialMode;
};
#endif /* J3DMATERIALFACTORY_H */
@@ -0,0 +1,115 @@
#ifndef J3DMATERIALFACTORY_V21_H
#define J3DMATERIALFACTORY_V21_H
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include <gx.h>
class J3DMaterial;
struct J3DTexCoord2Info;
class J3DCurrentMtxInfo;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialInitData_v21 {
/* 0x000 */ u8 mMaterialMode;
/* 0x001 */ u8 mCullModeIdx;
/* 0x002 */ u8 mColorChanNumIdx;
/* 0x003 */ u8 mTexGenNumIdx;
/* 0x004 */ u8 mTevStageNumIdx;
/* 0x005 */ u8 mZCompLocIdx;
/* 0x006 */ u8 mZModeIdx;
/* 0x007 */ u8 mDitherIdx;
/* 0x008 */ u16 mMatColorIdx[2];
/* 0x00C */ u16 mColorChanIdx[4];
/* 0x014 */ u16 mTexCoordIdx[8];
/* 0x024 */ u8 field_0x038[0x10];
/* 0x034 */ u16 mTexMtxIdx[8];
/* 0x044 */ u8 field_0x058[0x2c];
/* 0x070 */ u16 mTexNoIdx[8];
/* 0x080 */ u16 mTevKColorIdx[4];
/* 0x088 */ u8 mTevKColorSel[0x10];
/* 0x098 */ u8 mTevKAlphaSel[0x10];
/* 0x0A8 */ u16 mTevOrderIdx[0x10];
/* 0x0C8 */ u16 mTevColorIdx[4];
/* 0x0D0 */ u16 mTevStageIdx[0x10];
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
/* 0x110 */ u16 mTevSwapModeTableIdx[4];
/* 0x118 */ u8 field_0x12c[0x18];
/* 0x130 */ u16 mFogIdx;
/* 0x132 */ u16 mAlphaCompIdx;
/* 0x134 */ u16 mBlendIdx;
/* 0x136 */ u16 mNBTScaleIdx;
}; // size 0x138
/**
* @ingroup jsystem-j3d
*
*/
class J3DMaterialFactory_v21 {
public:
J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
u16 countUniqueMaterials();
u32 countTexGens(int) const;
u32 countStages(int) const;
J3DMaterial* create(J3DMaterial*, int, u32) const;
J3DGXColor newMatColor(int, int) const;
const u8 newColorChanNum(int) const;
J3DColorChan newColorChan(int, int) const;
u32 newTexGenNum(int) const;
J3DTexCoord newTexCoord(int, int) const;
J3DTexMtx* newTexMtx(int, int) const;
u8 newCullMode(int) const;
u16 newTexNo(int, int) const;
J3DTevOrder newTevOrder(int, int) const;
J3DGXColorS10 newTevColor(int, int) const;
J3DGXColor newTevKColor(int, int) const;
const u8 newTevStageNum(int) const;
J3DTevStage newTevStage(int, int) const;
J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
J3DFog newFog(int) const;
J3DAlphaComp newAlphaComp(int) const;
J3DBlend newBlend(int) const;
const J3DZMode newZMode(int) const;
const u8 newZCompLoc(int) const;
const u8 newDither(int) const;
J3DNBTScale newNBTScale(int) const;
u16 getMaterialID(int idx) const { return mpMaterialID[idx]; }
u8 getMaterialMode(int idx) const { return mpMaterialInitData[mpMaterialID[idx]].mMaterialMode; }
/* 0x00 */ u16 mMaterialNum;
/* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData;
/* 0x08 */ u16* mpMaterialID;
/* 0x0C */ GXColor* mpMatColor;
/* 0x10 */ u8* mpColorChanNum;
/* 0x14 */ J3DColorChanInfo* mpColorChanInfo;
/* 0x18 */ u8* mpTexGenNum;
/* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo;
/* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info;
/* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo;
/* 0x28 */ J3DTexMtxInfo* field_0x28;
/* 0x2C */ u16* mpTexNo;
/* 0x30 */ GXCullMode* mpCullMode;
/* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo;
/* 0x38 */ GXColorS10* mpTevColor;
/* 0x3C */ GXColor* mpTevKColor;
/* 0x40 */ u8* mpTevStageNum;
/* 0x44 */ J3DTevStageInfo* mpTevStageInfo;
/* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
/* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
/* 0x50 */ J3DFogInfo* mpFogInfo;
/* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo;
/* 0x58 */ J3DBlendInfo* mpBlendInfo;
/* 0x5C */ J3DZModeInfo* mpZModeInfo;
/* 0x60 */ u8* mpZCompLoc;
/* 0x64 */ u8* mpDither;
/* 0x68 */ J3DNBTScaleInfo* mpNBTScaleInfo;
/* 0x6C */ u16 field_0x6c;
/* 0x6E */ u8 field_0x6e;
/* 0x6F */ u8 field_0x6f;
};
#endif /* J3DMATERIALFACTORY_V21_H */
@@ -0,0 +1,351 @@
#ifndef J3DMODELLOADER_H
#define J3DMODELLOADER_H
#include "JSystem/J3DGraphBase/J3DSys.h"
#include <mtx.h>
class J3DModelData;
class J3DMaterialTable;
struct J3DModelHierarchy;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelBlock {
/* 0x00 */ u32 mBlockType;
/* 0x04 */ u32 mBlockSize;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelFileData {
/* 0x00 */ u32 mMagic1;
/* 0x04 */ u32 mMagic2;
/* 0x08 */ u8 field_0x08[4];
/* 0x0C */ u32 mBlockNum;
/* 0x10 */ u8 field_0x10[0x1C - 0x10];
/* 0x1C */ int field_0x1c;
/* 0x20 */ J3DModelBlock mBlocks[1];
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DModelInfoBlock : public J3DModelBlock {
/* 0x08 */ u16 mFlags;
/* 0x0C */ u32 mPacketNum;
/* 0x10 */ u32 mVtxNum;
/* 0x14 */ void* mpHierarchy;
}; // size 0x18
/**
* @ingroup jsystem-j3d
*
*/
struct J3DVertexBlock : public J3DModelBlock {
/* 0x08 */ void* mpVtxAttrFmtList;
/* 0x0C */ void* mpVtxPosArray;
/* 0x10 */ void* mpVtxNrmArray;
/* 0x14 */ void* mpVtxNBTArray;
/* 0x18 */ void* mpVtxColorArray[2];
/* 0x20 */ void* mpVtxTexCoordArray[8];
}; // size 0x40
/**
* @ingroup jsystem-j3d
*
*/
struct J3DEnvelopeBlock : public J3DModelBlock {
/* 0x08 */ u16 mWEvlpMtxNum;
/* 0x0C */ void* mpWEvlpMixMtxNum;
/* 0x10 */ void* mpWEvlpMixIndex;
/* 0x14 */ void* mpWEvlpMixWeight;
/* 0x18 */ void* mpInvJointMtx;
}; // size 0x1C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DDrawBlock : public J3DModelBlock {
/* 0x08 */ u16 mMtxNum;
/* 0x0C */ void* mpDrawMtxFlag;
/* 0x10 */ void* mpDrawMtxIndex;
}; // size 0x14
/**
* @ingroup jsystem-j3d
*
*/
struct J3DJointBlock : public J3DModelBlock {
/* 0x08 */ u16 mJointNum;
/* 0x0C */ void* mpJointInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
}; // size 0x18
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpIndInitData;
/* 0x1C */ void* mpCullMode;
/* 0x20 */ void* mpMatColor;
/* 0x24 */ void* mpColorChanNum;
/* 0x28 */ void* mpColorChanInfo;
/* 0x2C */ void* mpAmbColor;
/* 0x30 */ void* mpLightInfo;
/* 0x34 */ void* mpTexGenNum;
/* 0x38 */ void* mpTexCoordInfo;
/* 0x3C */ void* mpTexCoord2Info;
/* 0x40 */ void* mpTexMtxInfo;
/* 0x44 */ void* field_0x44;
/* 0x48 */ void* mpTexNo;
/* 0x4C */ void* mpTevOrderInfo;
/* 0x50 */ void* mpTevColor;
/* 0x54 */ void* mpTevKColor;
/* 0x58 */ void* mpTevStageNum;
/* 0x5C */ void* mpTevStageInfo;
/* 0x60 */ void* mpTevSwapModeInfo;
/* 0x64 */ void* mpTevSwapModeTableInfo;
/* 0x68 */ void* mpFogInfo;
/* 0x6C */ void* mpAlphaCompInfo;
/* 0x70 */ void* mpBlendInfo;
/* 0x74 */ void* mpZModeInfo;
/* 0x78 */ void* mpZCompLoc;
/* 0x7C */ void* mpDither;
/* 0x80 */ void* mpNBTScaleInfo;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialBlock_v21 : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpMaterialInitData;
/* 0x10 */ void* mpMaterialID;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpCullMode;
/* 0x1C */ void* mpMatColor;
/* 0x20 */ void* mpColorChanNum;
/* 0x24 */ void* mpColorChanInfo;
/* 0x28 */ void* mpTexGenNum;
/* 0x2C */ void* mpTexCoordInfo;
/* 0x30 */ void* mpTexCoord2Info;
/* 0x34 */ void* mpTexMtxInfo;
/* 0x38 */ void* field_0x38;
/* 0x3C */ void* mpTexNo;
/* 0x40 */ void* mpTevOrderInfo;
/* 0x44 */ void* mpTevColor;
/* 0x48 */ void* mpTevKColor;
/* 0x4C */ void* mpTevStageNum;
/* 0x50 */ void* mpTevStageInfo;
/* 0x54 */ void* mpTevSwapModeInfo;
/* 0x58 */ void* mpTevSwapModeTableInfo;
/* 0x5C */ void* mpFogInfo;
/* 0x60 */ void* mpAlphaCompInfo;
/* 0x64 */ void* mpBlendInfo;
/* 0x68 */ void* mpZModeInfo;
/* 0x6C */ void* mpZCompLoc;
/* 0x70 */ void* mpDither;
/* 0x74 */ void* mpNBTScaleInfo;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMaterialDLBlock : public J3DModelBlock {
/* 0x08 */ u16 mMaterialNum;
/* 0x0C */ void* mpDisplayListInit;
/* 0x10 */ void* mpPatchingInfo;
/* 0x14 */ void* mpCurrentMtxInfo;
/* 0x18 */ void* mpMaterialMode;
/* 0x1C */ void* field_0x1c;
/* 0x20 */ void* mpNameTable;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeBlock : public J3DModelBlock {
/* 0x08 */ u16 mShapeNum;
/* 0x0C */ void* mpShapeInitData;
/* 0x10 */ void* mpIndexTable;
/* 0x14 */ void* mpNameTable;
/* 0x18 */ void* mpVtxDescList;
/* 0x1C */ void* mpMtxTable;
/* 0x20 */ void* mpDisplayListData;
/* 0x24 */ void* mpMtxInitData;
/* 0x28 */ void* mpDrawInitData;
}; // size 0x2C
/**
* @ingroup jsystem-j3d
*
*/
struct J3DTextureBlock : public J3DModelBlock {
/* 0x08 */ u16 mTextureNum;
/* 0x0C */ void* mpTextureRes;
/* 0x10 */ void* mpNameTable;
};
enum J3DModelLoaderFlagTypes {
J3DMLF_None = 0x00000000,
J3DMLF_MtxSoftImageCalc = 0x00000001,
J3DMLF_MtxMayaCalc = 0x00000002,
J3DMLF_MtxBasicCalc = 0x00000004,
J3DMLF_04 = 0x00000008,
J3DMLF_MtxTypeMask = J3DMLF_MtxSoftImageCalc | J3DMLF_MtxMayaCalc | J3DMLF_MtxBasicCalc |
J3DMLF_04, // 0 - 2 (0 = Basic, 1 = SoftImage, 2 = Maya)
J3DMLF_UseImmediateMtx = 0x00000010,
J3DMLF_UsePostTexMtx = 0x00000020,
J3DMLF_07 = 0x00000040,
J3DMLF_08 = 0x00000080,
J3DMLF_NoMatrixTransform = 0x00000100,
J3DMLF_10 = 0x00000200,
J3DMLF_11 = 0x00000400,
J3DMLF_12 = 0x00000800,
J3DMLF_13 = 0x00001000,
J3DMLF_DoBdlMaterialCalc = 0x00002000,
J3DMLF_15 = 0x00004000,
J3DMLF_16 = 0x00008000,
J3DMLF_TevNumShift = 0x00010000,
J3DMLF_18 = 0x00020000,
J3DMLF_UseSingleSharedDL = 0x00040000,
J3DMLF_20 = 0x00080000,
J3DMLF_21 = 0x00100000,
J3DMLF_UseUniqueMaterials = 0x00200000,
J3DMLF_23 = 0x00400000,
J3DMLF_24 = 0x00800000,
J3DMLF_Material_UseIndirect = 0x01000000,
J3DMLF_26 = 0x02000000,
J3DMLF_27 = 0x04000000,
J3DMLF_Material_TexGen_Block4 = 0x08000000,
J3DMLF_Material_PE_Full = 0x10000000,
J3DMLF_Material_PE_FogOff = 0x20000000,
J3DMLF_Material_Color_LightOn = 0x40000000,
J3DMLF_Material_Color_AmbientOn = 0x80000000
};
static inline u32 getMdlDataFlag_TevStageNum(u32 flags) { return (flags & 0x001f0000) >> 0x10; }
static inline u32 getMdlDataFlag_TexGenFlag(u32 flags) { return flags & 0x0c000000; }
static inline u32 getMdlDataFlag_ColorFlag(u32 flags) { return flags & 0xc0000000; }
static inline u32 getMdlDataFlag_PEFlag(u32 flags) { return flags & 0x30000000; }
static inline u32 getMdlDataFlag_MtxLoadType(u32 flags) { return flags & 0x10; }
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader {
public:
J3DModelLoader();
void readInformation(J3DModelInfoBlock const*, u32);
void readVertex(J3DVertexBlock const*);
void readEnvelop(J3DEnvelopeBlock const*);
void readDraw(J3DDrawBlock const*);
void readJoint(J3DJointBlock const*);
void readShape(J3DShapeBlock const*, u32);
void readTexture(J3DTextureBlock const*);
void readTextureTable(J3DTextureBlock const*);
void readPatchedMaterial(J3DMaterialBlock const*, u32);
void readMaterialDL(J3DMaterialDLBlock const*, u32);
void modifyMaterial(u32);
u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
u32 calcSizeJoint(J3DJointBlock const*);
u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
u32 calcSizeDraw(J3DDrawBlock const*);
u32 calcSizeShape(J3DShapeBlock const*, u32);
u32 calcSizeTexture(J3DTextureBlock const*);
u32 calcSizeTextureTable(J3DTextureBlock const*);
u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
virtual J3DModelData* load(void const*, u32);
virtual J3DMaterialTable* loadMaterialTable(void const*);
virtual J3DModelData* loadBinaryDisplayList(void const*, u32);
virtual u32 calcLoadSize(void const*, u32);
virtual u32 calcLoadMaterialTableSize(void const*);
virtual u32 calcLoadBinaryDisplayListSize(void const*, u32);
virtual u16 countMaterialNum(void const*);
virtual void setupBBoardInfo();
virtual ~J3DModelLoader() {}
virtual void readMaterial(J3DMaterialBlock const*, u32) {}
virtual void readMaterial_v21(J3DMaterialBlock_v21 const*, u32) {}
virtual void readMaterialTable(J3DMaterialBlock const*, u32) {}
virtual void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32) {}
virtual u32 calcSizeMaterial(J3DMaterialBlock const*, u32) { return false; }
virtual u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32) { return false; }
/* 0x04 */ J3DModelData* mpModelData;
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v26 : public J3DModelLoader {
public:
~J3DModelLoader_v26() {}
void readMaterial(J3DMaterialBlock const*, u32);
void readMaterialTable(J3DMaterialBlock const*, u32);
u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoader_v21 : public J3DModelLoader {
public:
~J3DModelLoader_v21() {}
void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
};
/**
* @ingroup jsystem-j3d
*
*/
class J3DModelLoaderDataBase {
public:
static J3DModelData* load(void const* i_data, u32 i_flags);
static J3DModelData* loadBinaryDisplayList(const void* i_data, u32 flags);
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DMtxCalcJ3DSysInitSoftimage {
static void init(const Vec& param_0, const Mtx& param_1) {
J3DSys::mCurrentS = param_0;
MTXCopy(param_1, J3DSys::mCurrentMtx);
}
};
#endif /* J3DMODELLOADER_H */
@@ -0,0 +1,6 @@
#ifndef J3DMODELLOADERCALCSIZE_H
#define J3DMODELLOADERCALCSIZE_H
#include <types.h>
#endif /* J3DMODELLOADERCALCSIZE_H */
@@ -0,0 +1,14 @@
#ifndef J3DMODELSAVER_H
#define J3DMODELSAVER_H
#include "JSystem/J3DGraphAnimator/J3DModel.h"
enum J3DBinaryDisplayListSaverFlag {
J3DBinaryDisplayListSaverFlag_UNK_1 = 1,
};
namespace J3DModelSaverDataBase {
void* saveBinaryDisplayList(const J3DModel*, J3DBinaryDisplayListSaverFlag, u32);
};
#endif
@@ -0,0 +1,77 @@
#ifndef J3DSHAPEFACTORY_H
#define J3DSHAPEFACTORY_H
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include <gx.h>
class J3DShape;
class J3DShapeMtx;
class J3DShapeDraw;
struct ResNTAB;
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeInitData {
/* 0x00 */ u8 mShapeMtxType;
/* 0x02 */ u16 mMtxGroupNum;
/* 0x04 */ u16 mVtxDescListIndex;
/* 0x06 */ u16 mMtxInitDataIndex;
/* 0x08 */ u16 mDrawInitDataIndex;
/* 0x0C */ f32 mRadius;
/* 0x10 */ Vec mMin;
/* 0x1C */ Vec mMax;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeMtxInitData {
/* 0x00 */ u16 mUseMtxIndex;
/* 0x02 */ u16 mUseMtxCount;
/* 0x04 */ u32 mFirstUseMtxIndex;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeDrawInitData {
/* 0x00 */ u32 mDisplayListSize;
/* 0x04 */ u32 mDisplayListIndex;
};
/**
* @ingroup jsystem-j3d
*
*/
struct J3DShapeFactory {
J3DShapeFactory(J3DShapeBlock const&);
J3DShape* create(int, u32, GXVtxDescList*);
J3DShapeMtx* newShapeMtx(u32, int, int) const;
J3DShapeDraw* newShapeDraw(int, int) const;
void allocVcdVatCmdBuffer(u32);
s32 calcSize(int, u32);
s32 calcSizeVcdVatCmdBuffer(u32);
s32 calcSizeShapeMtx(u32, int, int) const;
/* 0x00 */ J3DShapeInitData* mShapeInitData;
/* 0x04 */ u16* mIndexTable;
/* 0x08 */ GXVtxDescList* mVtxDescList;
/* 0x0C */ u16* mMtxTable;
/* 0x10 */ u8* mDisplayListData;
/* 0x14 */ J3DShapeMtxInitData* mMtxInitData;
/* 0x18 */ J3DShapeDrawInitData* mDrawInitData;
/* 0x1C */ u8* mVcdVatCmdBuffer;
u16 getMtxGroupNum(int no) const { return mShapeInitData[mIndexTable[no]].mMtxGroupNum; }
GXVtxDescList* getVtxDescList(int no) const { return (GXVtxDescList*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); }
f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; }
Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
};
#endif /* J3DSHAPEFACTORY_H */