mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-11 13:08:33 -04:00
Fix endianness & 64-bit in 3D asset loading code
Combination of plumbing BE(T) through everything, making BE<T> have template specializations, and inverting at load time where more practical.
This commit is contained in:
@@ -3,6 +3,15 @@
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
|
||||
#include "dusk/endian.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#define OFFSET_PTR BE(u32)
|
||||
#else
|
||||
#define OFFSET_PTR void*
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
*
|
||||
@@ -17,18 +26,18 @@ struct J3DClusterLoaderDataBase {
|
||||
*/
|
||||
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;
|
||||
/* 0x08 */ BE(u16) mClusterNum;
|
||||
/* 0x0A */ BE(u16) mClusterKeyNum;
|
||||
/* 0x0C */ BE(u16) mClusterVertexNum;
|
||||
/* 0x0E */ BE(u16) mVtxPosNum;
|
||||
/* 0x10 */ BE(u16) mVtxNrmNum;
|
||||
/* 0x14 */ OFFSET_PTR mClusterPointer;
|
||||
/* 0x18 */ OFFSET_PTR mClusterKeyPointer;
|
||||
/* 0x1C */ OFFSET_PTR mClusterVertex;
|
||||
/* 0x20 */ OFFSET_PTR mVtxPos;
|
||||
/* 0x24 */ OFFSET_PTR mVtxNrm;
|
||||
/* 0x28 */ OFFSET_PTR mClusterName;
|
||||
/* 0x2C */ OFFSET_PTR mClusterKeyName;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -58,4 +67,6 @@ public:
|
||||
/* 0x04 */ J3DDeformData* mpDeformData;
|
||||
};
|
||||
|
||||
#undef OFFSET_PTR
|
||||
|
||||
#endif /* J3DCLUSTERLOADER_H */
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
class J3DMaterial;
|
||||
|
||||
#define MAX_TEXTURES 8
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
*
|
||||
@@ -20,28 +22,28 @@ struct J3DMaterialInitData {
|
||||
/* 0x005 */ u8 mZCompLocIdx;
|
||||
/* 0x006 */ u8 mZModeIdx;
|
||||
/* 0x007 */ u8 mDitherIdx;
|
||||
/* 0x008 */ u16 mMatColorIdx[2];
|
||||
/* 0x00C */ u16 mColorChanIdx[4];
|
||||
/* 0x014 */ u16 mAmbColorIdx[2];
|
||||
/* 0x008 */ BE(u16) mMatColorIdx[2];
|
||||
/* 0x00C */ BE(u16) mColorChanIdx[4];
|
||||
/* 0x014 */ BE(u16) mAmbColorIdx[2];
|
||||
/* 0x018 */ u8 field_0x018[0x10];
|
||||
/* 0x028 */ u16 mTexCoordIdx[8];
|
||||
/* 0x028 */ BE(u16) mTexCoordIdx[MAX_TEXTURES];
|
||||
/* 0x038 */ u8 field_0x038[0x10];
|
||||
/* 0x048 */ u16 mTexMtxIdx[8];
|
||||
/* 0x048 */ BE(u16) mTexMtxIdx[MAX_TEXTURES];
|
||||
/* 0x058 */ u8 field_0x058[0x2c];
|
||||
/* 0x084 */ u16 mTexNoIdx[8];
|
||||
/* 0x094 */ u16 mTevKColorIdx[4];
|
||||
/* 0x084 */ BE(u16) mTexNoIdx[MAX_TEXTURES];
|
||||
/* 0x094 */ BE(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];
|
||||
/* 0x0BC */ BE(u16) mTevOrderIdx[0x10];
|
||||
/* 0x0DC */ BE(u16) mTevColorIdx[4];
|
||||
/* 0x0E4 */ BE(u16) mTevStageIdx[0x10];
|
||||
/* 0x104 */ BE(u16) mTevSwapModeIdx[0x10];
|
||||
/* 0x124 */ BE(u16) mTevSwapModeTableIdx[4];
|
||||
/* 0x12C */ u8 field_0x12c[0x18];
|
||||
/* 0x144 */ u16 mFogIdx;
|
||||
/* 0x146 */ u16 mAlphaCompIdx;
|
||||
/* 0x148 */ u16 mBlendIdx;
|
||||
/* 0x14A */ u16 mNBTScaleIdx;
|
||||
/* 0x144 */ BE(u16) mFogIdx;
|
||||
/* 0x146 */ BE(u16) mAlphaCompIdx;
|
||||
/* 0x148 */ BE(u16) mBlendIdx;
|
||||
/* 0x14A */ BE(u16) mNBTScaleIdx;
|
||||
}; // size 0x14C
|
||||
|
||||
/**
|
||||
@@ -84,7 +86,7 @@ struct J3DDisplayListInit {
|
||||
}; // size 8
|
||||
|
||||
struct J3DTexCoord2Info;
|
||||
struct J3DCurrentMtxInfo;
|
||||
class J3DCurrentMtxInfo;
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
@@ -145,7 +147,7 @@ public:
|
||||
|
||||
/* 0x00 */ u16 mMaterialNum;
|
||||
/* 0x04 */ J3DMaterialInitData* mpMaterialInitData;
|
||||
/* 0x08 */ u16* mpMaterialID;
|
||||
/* 0x08 */ BE(u16)* mpMaterialID;
|
||||
/* 0x0C */ J3DIndInitData* mpIndInitData;
|
||||
/* 0x10 */ GXColor* mpMatColor;
|
||||
/* 0x14 */ u8* mpColorChanNum;
|
||||
@@ -157,10 +159,10 @@ public:
|
||||
/* 0x2C */ J3DTexCoord2Info* mpTexCoord2Info;
|
||||
/* 0x30 */ J3DTexMtxInfo* mpTexMtxInfo;
|
||||
/* 0x34 */ J3DTexMtxInfo* field_0x34;
|
||||
/* 0x38 */ u16* mpTexNo;
|
||||
/* 0x3C */ GXCullMode* mpCullMode;
|
||||
/* 0x38 */ BE(u16)* mpTexNo;
|
||||
/* 0x3C */ BE(GXCullMode)* mpCullMode;
|
||||
/* 0x40 */ J3DTevOrderInfo* mpTevOrderInfo;
|
||||
/* 0x44 */ GXColorS10* mpTevColor;
|
||||
/* 0x44 */ BE(GXColorS10)* mpTevColor;
|
||||
/* 0x48 */ GXColor* mpTevKColor;
|
||||
/* 0x4C */ u8* mpTevStageNum;
|
||||
/* 0x50 */ J3DTevStageInfo* mpTevStageInfo;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
class J3DMaterial;
|
||||
struct J3DTexCoord2Info;
|
||||
struct J3DCurrentMtxInfo;
|
||||
class J3DCurrentMtxInfo;
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
|
||||
@@ -4,17 +4,25 @@
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include <dolphin/mtx.h>
|
||||
|
||||
#include "dusk/endian.h"
|
||||
|
||||
class J3DModelData;
|
||||
class J3DMaterialTable;
|
||||
class J3DModelHierarchy;
|
||||
|
||||
#if TARGET_PC
|
||||
#define OFFSET_PTR BE(u32)
|
||||
#else
|
||||
#define OFFSET_PTR void*
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
*
|
||||
*/
|
||||
struct J3DModelBlock {
|
||||
/* 0x00 */ u32 mBlockType;
|
||||
/* 0x04 */ u32 mBlockSize;
|
||||
/* 0x00 */ BE(u32) mBlockType;
|
||||
/* 0x04 */ BE(u32) mBlockSize;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -22,10 +30,10 @@ struct J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DModelFileData {
|
||||
/* 0x00 */ u32 mMagic1;
|
||||
/* 0x04 */ u32 mMagic2;
|
||||
/* 0x00 */ BE(u32) mMagic1;
|
||||
/* 0x04 */ BE(u32) mMagic2;
|
||||
/* 0x08 */ u8 field_0x08[4];
|
||||
/* 0x0C */ u32 mBlockNum;
|
||||
/* 0x0C */ BE(u32) mBlockNum;
|
||||
/* 0x10 */ u8 field_0x10[0x10];
|
||||
/* 0x20 */ J3DModelBlock mBlocks[1];
|
||||
};
|
||||
@@ -35,10 +43,10 @@ struct J3DModelFileData {
|
||||
*
|
||||
*/
|
||||
struct J3DModelInfoBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mFlags;
|
||||
/* 0x0C */ u32 mPacketNum;
|
||||
/* 0x10 */ u32 mVtxNum;
|
||||
/* 0x14 */ void* mpHierarchy;
|
||||
/* 0x08 */ BE(u16) mFlags;
|
||||
/* 0x0C */ BE(u32) mPacketNum;
|
||||
/* 0x10 */ BE(u32) mVtxNum;
|
||||
/* 0x14 */ OFFSET_PTR mpHierarchy;
|
||||
}; // size 0x18
|
||||
|
||||
/**
|
||||
@@ -46,12 +54,12 @@ struct J3DModelInfoBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DVertexBlock : public J3DModelBlock {
|
||||
/* 0x08 */ void* mpVtxAttrFmtList;
|
||||
/* 0x0C */ void* mpVtxPosArray;
|
||||
/* 0x10 */ void* mpVtxNrmArray;
|
||||
/* 0x14 */ void* mpVtxNBTArray;
|
||||
/* 0x18 */ void* mpVtxColorArray[2];
|
||||
/* 0x20 */ void* mpVtxTexCoordArray[8];
|
||||
/* 0x08 */ OFFSET_PTR mpVtxAttrFmtList;
|
||||
/* 0x0C */ OFFSET_PTR mpVtxPosArray;
|
||||
/* 0x10 */ OFFSET_PTR mpVtxNrmArray;
|
||||
/* 0x14 */ OFFSET_PTR mpVtxNBTArray;
|
||||
/* 0x18 */ OFFSET_PTR mpVtxColorArray[2];
|
||||
/* 0x20 */ OFFSET_PTR mpVtxTexCoordArray[8];
|
||||
}; // size 0x40
|
||||
|
||||
/**
|
||||
@@ -59,11 +67,11 @@ struct J3DVertexBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DEnvelopeBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mWEvlpMtxNum;
|
||||
/* 0x0C */ void* mpWEvlpMixMtxNum;
|
||||
/* 0x10 */ void* mpWEvlpMixIndex;
|
||||
/* 0x14 */ void* mpWEvlpMixWeight;
|
||||
/* 0x18 */ void* mpInvJointMtx;
|
||||
/* 0x08 */ BE(u16) mWEvlpMtxNum;
|
||||
/* 0x0C */ OFFSET_PTR mpWEvlpMixMtxNum;
|
||||
/* 0x10 */ OFFSET_PTR mpWEvlpMixIndex;
|
||||
/* 0x14 */ OFFSET_PTR mpWEvlpMixWeight;
|
||||
/* 0x18 */ OFFSET_PTR mpInvJointMtx;
|
||||
}; // size 0x1C
|
||||
|
||||
/**
|
||||
@@ -71,9 +79,9 @@ struct J3DEnvelopeBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DDrawBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mMtxNum;
|
||||
/* 0x0C */ void* mpDrawMtxFlag;
|
||||
/* 0x10 */ void* mpDrawMtxIndex;
|
||||
/* 0x08 */ BE(u16) mMtxNum;
|
||||
/* 0x0C */ OFFSET_PTR mpDrawMtxFlag;
|
||||
/* 0x10 */ OFFSET_PTR mpDrawMtxIndex;
|
||||
}; // size 0x14
|
||||
|
||||
/**
|
||||
@@ -81,10 +89,10 @@ struct J3DDrawBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DJointBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mJointNum;
|
||||
/* 0x0C */ void* mpJointInitData;
|
||||
/* 0x10 */ void* mpIndexTable;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
/* 0x08 */ BE(u16) mJointNum;
|
||||
/* 0x0C */ OFFSET_PTR mpJointInitData;
|
||||
/* 0x10 */ OFFSET_PTR mpIndexTable;
|
||||
/* 0x14 */ OFFSET_PTR mpNameTable;
|
||||
}; // size 0x18
|
||||
|
||||
/**
|
||||
@@ -92,37 +100,37 @@ struct J3DJointBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
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;
|
||||
/* 0x08 */ BE(u16) mMaterialNum;
|
||||
/* 0x0C */ OFFSET_PTR mpMaterialInitData;
|
||||
/* 0x10 */ OFFSET_PTR mpMaterialID;
|
||||
/* 0x14 */ OFFSET_PTR mpNameTable;
|
||||
/* 0x18 */ OFFSET_PTR mpIndInitData;
|
||||
/* 0x1C */ OFFSET_PTR mpCullMode;
|
||||
/* 0x20 */ OFFSET_PTR mpMatColor;
|
||||
/* 0x24 */ OFFSET_PTR mpColorChanNum;
|
||||
/* 0x28 */ OFFSET_PTR mpColorChanInfo;
|
||||
/* 0x2C */ OFFSET_PTR mpAmbColor;
|
||||
/* 0x30 */ OFFSET_PTR mpLightInfo;
|
||||
/* 0x34 */ OFFSET_PTR mpTexGenNum;
|
||||
/* 0x38 */ OFFSET_PTR mpTexCoordInfo;
|
||||
/* 0x3C */ OFFSET_PTR mpTexCoord2Info;
|
||||
/* 0x40 */ OFFSET_PTR mpTexMtxInfo;
|
||||
/* 0x44 */ OFFSET_PTR field_0x44;
|
||||
/* 0x48 */ OFFSET_PTR mpTexNo;
|
||||
/* 0x4C */ OFFSET_PTR mpTevOrderInfo;
|
||||
/* 0x50 */ OFFSET_PTR mpTevColor;
|
||||
/* 0x54 */ OFFSET_PTR mpTevKColor;
|
||||
/* 0x58 */ OFFSET_PTR mpTevStageNum;
|
||||
/* 0x5C */ OFFSET_PTR mpTevStageInfo;
|
||||
/* 0x60 */ OFFSET_PTR mpTevSwapModeInfo;
|
||||
/* 0x64 */ OFFSET_PTR mpTevSwapModeTableInfo;
|
||||
/* 0x68 */ OFFSET_PTR mpFogInfo;
|
||||
/* 0x6C */ OFFSET_PTR mpAlphaCompInfo;
|
||||
/* 0x70 */ OFFSET_PTR mpBlendInfo;
|
||||
/* 0x74 */ OFFSET_PTR mpZModeInfo;
|
||||
/* 0x78 */ OFFSET_PTR mpZCompLoc;
|
||||
/* 0x7C */ OFFSET_PTR mpDither;
|
||||
/* 0x80 */ OFFSET_PTR mpNBTScaleInfo;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -130,34 +138,34 @@ struct J3DMaterialBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
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;
|
||||
/* 0x08 */ BE(u16) mMaterialNum;
|
||||
/* 0x0C */ OFFSET_PTR mpMaterialInitData;
|
||||
/* 0x10 */ OFFSET_PTR mpMaterialID;
|
||||
/* 0x14 */ OFFSET_PTR mpNameTable;
|
||||
/* 0x18 */ OFFSET_PTR mpCullMode;
|
||||
/* 0x1C */ OFFSET_PTR mpMatColor;
|
||||
/* 0x20 */ OFFSET_PTR mpColorChanNum;
|
||||
/* 0x24 */ OFFSET_PTR mpColorChanInfo;
|
||||
/* 0x28 */ OFFSET_PTR mpTexGenNum;
|
||||
/* 0x2C */ OFFSET_PTR mpTexCoordInfo;
|
||||
/* 0x30 */ OFFSET_PTR mpTexCoord2Info;
|
||||
/* 0x34 */ OFFSET_PTR mpTexMtxInfo;
|
||||
/* 0x38 */ OFFSET_PTR field_0x38;
|
||||
/* 0x3C */ OFFSET_PTR mpTexNo;
|
||||
/* 0x40 */ OFFSET_PTR mpTevOrderInfo;
|
||||
/* 0x44 */ OFFSET_PTR mpTevColor;
|
||||
/* 0x48 */ OFFSET_PTR mpTevKColor;
|
||||
/* 0x4C */ OFFSET_PTR mpTevStageNum;
|
||||
/* 0x50 */ OFFSET_PTR mpTevStageInfo;
|
||||
/* 0x54 */ OFFSET_PTR mpTevSwapModeInfo;
|
||||
/* 0x58 */ OFFSET_PTR mpTevSwapModeTableInfo;
|
||||
/* 0x5C */ OFFSET_PTR mpFogInfo;
|
||||
/* 0x60 */ OFFSET_PTR mpAlphaCompInfo;
|
||||
/* 0x64 */ OFFSET_PTR mpBlendInfo;
|
||||
/* 0x68 */ OFFSET_PTR mpZModeInfo;
|
||||
/* 0x6C */ OFFSET_PTR mpZCompLoc;
|
||||
/* 0x70 */ OFFSET_PTR mpDither;
|
||||
/* 0x74 */ OFFSET_PTR mpNBTScaleInfo;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -165,13 +173,13 @@ struct J3DMaterialBlock_v21 : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
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;
|
||||
/* 0x08 */ BE(u16) mMaterialNum;
|
||||
/* 0x0C */ OFFSET_PTR mpDisplayListInit;
|
||||
/* 0x10 */ OFFSET_PTR mpPatchingInfo;
|
||||
/* 0x14 */ OFFSET_PTR mpCurrentMtxInfo;
|
||||
/* 0x18 */ OFFSET_PTR mpMaterialMode;
|
||||
/* 0x1C */ OFFSET_PTR field_0x1c;
|
||||
/* 0x20 */ OFFSET_PTR mpNameTable;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -179,15 +187,15 @@ struct J3DMaterialDLBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
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;
|
||||
/* 0x08 */ BE(u16) mShapeNum;
|
||||
/* 0x0C */ OFFSET_PTR mpShapeInitData;
|
||||
/* 0x10 */ OFFSET_PTR mpIndexTable;
|
||||
/* 0x14 */ OFFSET_PTR mpNameTable;
|
||||
/* 0x18 */ OFFSET_PTR mpVtxDescList;
|
||||
/* 0x1C */ OFFSET_PTR mpMtxTable;
|
||||
/* 0x20 */ OFFSET_PTR mpDisplayListData;
|
||||
/* 0x24 */ OFFSET_PTR mpMtxInitData;
|
||||
/* 0x28 */ OFFSET_PTR mpDrawInitData;
|
||||
}; // size 0x2C
|
||||
|
||||
/**
|
||||
@@ -195,9 +203,9 @@ struct J3DShapeBlock : public J3DModelBlock {
|
||||
*
|
||||
*/
|
||||
struct J3DTextureBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mTextureNum;
|
||||
/* 0x0C */ void* mpTextureRes;
|
||||
/* 0x10 */ void* mpNameTable;
|
||||
/* 0x08 */ BE(u16) mTextureNum;
|
||||
/* 0x0C */ OFFSET_PTR mpTextureRes;
|
||||
/* 0x10 */ OFFSET_PTR mpNameTable;
|
||||
};
|
||||
|
||||
enum J3DModelLoaderFlagTypes {
|
||||
@@ -347,4 +355,6 @@ struct J3DMtxCalcJ3DSysInitSoftimage {
|
||||
}
|
||||
};
|
||||
|
||||
#undef OFFSET_PTR
|
||||
|
||||
#endif /* J3DMODELLOADER_H */
|
||||
|
||||
@@ -15,13 +15,13 @@ struct ResNTAB;
|
||||
*/
|
||||
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;
|
||||
/* 0x02 */ BE(u16) mMtxGroupNum;
|
||||
/* 0x04 */ BE(u16) mVtxDescListIndex;
|
||||
/* 0x06 */ BE(u16) mMtxInitDataIndex;
|
||||
/* 0x08 */ BE(u16) mDrawInitDataIndex;
|
||||
/* 0x0C */ BE(f32) mRadius;
|
||||
/* 0x10 */ BE(Vec) mMin;
|
||||
/* 0x1C */ BE(Vec) mMax;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -29,9 +29,9 @@ struct J3DShapeInitData {
|
||||
*
|
||||
*/
|
||||
struct J3DShapeMtxInitData {
|
||||
/* 0x00 */ u16 mUseMtxIndex;
|
||||
/* 0x02 */ u16 mUseMtxCount;
|
||||
/* 0x04 */ u32 mFirstUseMtxIndex;
|
||||
/* 0x00 */ BE(u16) mUseMtxIndex;
|
||||
/* 0x02 */ BE(u16) mUseMtxCount;
|
||||
/* 0x04 */ BE(u32) mFirstUseMtxIndex;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -39,8 +39,8 @@ struct J3DShapeMtxInitData {
|
||||
*
|
||||
*/
|
||||
struct J3DShapeDrawInitData {
|
||||
/* 0x00 */ u32 mDisplayListSize;
|
||||
/* 0x04 */ u32 mDisplayListIndex;
|
||||
/* 0x00 */ BE(u32) mDisplayListSize;
|
||||
/* 0x04 */ BE(u32) mDisplayListIndex;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -49,7 +49,7 @@ struct J3DShapeDrawInitData {
|
||||
*/
|
||||
struct J3DShapeFactory {
|
||||
J3DShapeFactory(J3DShapeBlock const&);
|
||||
J3DShape* create(int, u32, GXVtxDescList*);
|
||||
J3DShape* create(int, u32, BE(GXVtxDescList)*);
|
||||
J3DShapeMtx* newShapeMtx(u32, int, int) const;
|
||||
J3DShapeDraw* newShapeDraw(int, int) const;
|
||||
void allocVcdVatCmdBuffer(u32);
|
||||
@@ -58,19 +58,25 @@ struct J3DShapeFactory {
|
||||
s32 calcSizeShapeMtx(u32, int, int) const;
|
||||
|
||||
/* 0x00 */ J3DShapeInitData* mShapeInitData;
|
||||
/* 0x04 */ u16* mIndexTable;
|
||||
/* 0x08 */ GXVtxDescList* mVtxDescList;
|
||||
/* 0x0C */ u16* mMtxTable;
|
||||
/* 0x04 */ BE(u16)* mIndexTable;
|
||||
/* 0x08 */ BE(GXVtxDescList)* mVtxDescList;
|
||||
/* 0x0C */ BE(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); }
|
||||
BE(GXVtxDescList)* getVtxDescList(int no) const { return (BE(GXVtxDescList)*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); }
|
||||
f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; }
|
||||
#if TARGET_PC
|
||||
// Reference return only used for reading, messes with endian handling
|
||||
Vec getMin[[nodiscard]](int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
|
||||
Vec getMax[[nodiscard]](int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
|
||||
#else
|
||||
Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
|
||||
Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user