mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-07 10:11:43 -04:00
Merge pull request #16 from TakaRikka/26-02-25-more-endian-fixes
Asset loading endian fixes (mostly)
This commit is contained in:
@@ -4,38 +4,40 @@
|
||||
#include "JSystem/J2DGraph/J2DManage.h"
|
||||
#include "JSystem/J2DGraph/J2DMatBlock.h"
|
||||
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j2d
|
||||
*
|
||||
*/
|
||||
struct J2DMaterialBlock {
|
||||
u32 field_0x0;
|
||||
u32 field_0x4;
|
||||
u16 field_0x8;
|
||||
u16 field_0xa;
|
||||
u32 field_0xc;
|
||||
u32 field_0x10;
|
||||
u32 field_0x14;
|
||||
u32 field_0x18;
|
||||
u32 field_0x1c;
|
||||
u32 field_0x20;
|
||||
u32 field_0x24;
|
||||
u32 field_0x28;
|
||||
u32 field_0x2c;
|
||||
u32 field_0x30;
|
||||
u32 field_0x34;
|
||||
u32 field_0x38;
|
||||
u32 field_0x3c;
|
||||
u32 field_0x40;
|
||||
u32 field_0x44;
|
||||
u32 field_0x48;
|
||||
u32 field_0x4c;
|
||||
u32 field_0x50;
|
||||
u32 field_0x54;
|
||||
u32 field_0x58;
|
||||
u32 field_0x5c;
|
||||
u32 field_0x60;
|
||||
u32 field_0x64;
|
||||
BE(u32) field_0x0;
|
||||
BE(u32) field_0x4;
|
||||
BE(u16) field_0x8;
|
||||
BE(u16) field_0xa;
|
||||
BE(u32) field_0xc;
|
||||
BE(u32) field_0x10;
|
||||
BE(u32) field_0x14;
|
||||
BE(u32) field_0x18;
|
||||
BE(u32) field_0x1c;
|
||||
BE(u32) field_0x20;
|
||||
BE(u32) field_0x24;
|
||||
BE(u32) field_0x28;
|
||||
BE(u32) field_0x2c;
|
||||
BE(u32) field_0x30;
|
||||
BE(u32) field_0x34;
|
||||
BE(u32) field_0x38;
|
||||
BE(u32) field_0x3c;
|
||||
BE(u32) field_0x40;
|
||||
BE(u32) field_0x44;
|
||||
BE(u32) field_0x48;
|
||||
BE(u32) field_0x4c;
|
||||
BE(u32) field_0x50;
|
||||
BE(u32) field_0x54;
|
||||
BE(u32) field_0x58;
|
||||
BE(u32) field_0x5c;
|
||||
BE(u32) field_0x60;
|
||||
BE(u32) field_0x64;
|
||||
};
|
||||
|
||||
typedef struct _GXColor GXColor;
|
||||
@@ -73,23 +75,23 @@ struct J2DMaterialInitData {
|
||||
u8 field_0x5;
|
||||
u8 field_0x6;
|
||||
u8 field_0x7;
|
||||
u16 field_0x8[2];
|
||||
u16 field_0xc[4];
|
||||
u16 field_0x14[8];
|
||||
u16 field_0x24[0xa];
|
||||
u16 field_0x38[8];
|
||||
u16 field_0x48;
|
||||
u16 field_0x4a[4];
|
||||
BE(u16) field_0x8[2];
|
||||
BE(u16) field_0xc[4];
|
||||
BE(u16) field_0x14[8];
|
||||
BE(u16) field_0x24[0xa];
|
||||
BE(u16) field_0x38[8];
|
||||
BE(u16) field_0x48;
|
||||
BE(u16) field_0x4a[4];
|
||||
u8 field_0x52[0x10];
|
||||
u8 field_0x62[0x10];
|
||||
u16 field_0x72[0x10];
|
||||
u16 field_0x92[0x4];
|
||||
u16 field_0x9a[0x10];
|
||||
u16 field_0xba[0x10];
|
||||
u16 field_0xda[0x4];
|
||||
u16 field_0xe2;
|
||||
u16 field_0xe4;
|
||||
u16 field_0xe6;
|
||||
BE(u16) field_0x72[0x10];
|
||||
BE(u16) field_0x92[0x4];
|
||||
BE(u16) field_0x9a[0x10];
|
||||
BE(u16) field_0xba[0x10];
|
||||
BE(u16) field_0xda[0x4];
|
||||
BE(u16) field_0xe2;
|
||||
BE(u16) field_0xe4;
|
||||
BE(u16) field_0xe6;
|
||||
};
|
||||
struct J2DTevStageInfo;
|
||||
struct J2DTevSwapModeTableInfo;
|
||||
@@ -155,9 +157,9 @@ private:
|
||||
/* 0x24 */ J2DTexMtxInfo* field_0x24;
|
||||
/* 0x28 */ u16* field_0x28;
|
||||
/* 0x2C */ u16* field_0x2c;
|
||||
/* 0x30 */ _GXCullMode* field_0x30;
|
||||
/* 0x30 */ BE(GXCullMode)* field_0x30;
|
||||
/* 0x34 */ J2DTevOrderInfo* field_0x34;
|
||||
/* 0x38 */ _GXColorS10* field_0x38;
|
||||
/* 0x38 */ BE(GXColorS10)* field_0x38;
|
||||
/* 0x3C */ GXColor* field_0x3c;
|
||||
/* 0x40 */ u8* field_0x40;
|
||||
/* 0x44 */ J2DTevStageInfo* field_0x44;
|
||||
|
||||
@@ -6,9 +6,17 @@
|
||||
#include "JSystem/JUtility/JUTNameTab.h"
|
||||
#include "global.h"
|
||||
|
||||
#include "dusk/endian.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#define OFFSET_PTR BE(u32)
|
||||
#else
|
||||
#define OFFSET_PTR void*
|
||||
#endif
|
||||
|
||||
struct JUTDataBlockHeader {
|
||||
/* 0x0 */ u32 mType;
|
||||
/* 0x4 */ u32 mSize;
|
||||
/* 0x0 */ BE(u32) mType;
|
||||
/* 0x4 */ BE(u32) mSize;
|
||||
|
||||
const JUTDataBlockHeader* getNext() const { // fake inline
|
||||
return reinterpret_cast<const JUTDataBlockHeader*>(reinterpret_cast<const u8*>(this) +
|
||||
@@ -17,30 +25,30 @@ struct JUTDataBlockHeader {
|
||||
};
|
||||
|
||||
struct JUTDataFileHeader { // actual struct name unknown
|
||||
/* 0x00 */ u32 mMagic;
|
||||
/* 0x04 */ u32 mType;
|
||||
/* 0x08 */ u32 mFileSize;
|
||||
/* 0x0C */ u32 mBlockNum;
|
||||
/* 0x00 */ BE(u32) mMagic;
|
||||
/* 0x04 */ BE(u32) mType;
|
||||
/* 0x08 */ BE(u32) mFileSize;
|
||||
/* 0x0C */ BE(u32) mBlockNum;
|
||||
/* 0x10 */ u8 _10[0x1C - 0x10];
|
||||
/* 0x1C */ u32 mSeAnmOffset; // Only exists for some BCKs
|
||||
/* 0x1C */ BE(u32) mSeAnmOffset; // Only exists for some BCKs
|
||||
/* 0x20 */ JUTDataBlockHeader mFirstBlock;
|
||||
};
|
||||
|
||||
// unknown name. refers to ANK1 chunk of BCK files
|
||||
struct J3DAnmTransform_ANK1 {
|
||||
/* 0x00 */ u32 magic;
|
||||
/* 0x04 */ u32 size;
|
||||
/* 0x00 */ BE(u32) magic;
|
||||
/* 0x04 */ BE(u32) size;
|
||||
/* 0x08 */ u8 attribute;
|
||||
/* 0x09 */ u8 rotation_frac;
|
||||
/* 0x0A */ s16 duration;
|
||||
/* 0x0C */ s16 keyframe_num;
|
||||
/* 0x0E */ s16 scale_entries;
|
||||
/* 0x10 */ s16 rotation_entries;
|
||||
/* 0x12 */ s16 translation_entries;
|
||||
/* 0x14 */ u32 anm_data_offset;
|
||||
/* 0x18 */ u32 scale_data_offset;
|
||||
/* 0x1C */ u32 rotation_data_offset;
|
||||
/* 0x20 */ u32 translation_data_offset;
|
||||
/* 0x0A */ BE(s16) duration;
|
||||
/* 0x0C */ BE(s16) keyframe_num;
|
||||
/* 0x0E */ BE(s16) scale_entries;
|
||||
/* 0x10 */ BE(s16) rotation_entries;
|
||||
/* 0x12 */ BE(s16) translation_entries;
|
||||
/* 0x14 */ BE(u32) anm_data_offset;
|
||||
/* 0x18 */ BE(u32) scale_data_offset;
|
||||
/* 0x1C */ BE(u32) rotation_data_offset;
|
||||
/* 0x20 */ BE(u32) translation_data_offset;
|
||||
};
|
||||
|
||||
typedef struct _GXColor GXColor;
|
||||
@@ -51,9 +59,9 @@ typedef struct _GXColorS10 GXColorS10;
|
||||
*
|
||||
*/
|
||||
struct J3DAnmKeyTableBase {
|
||||
/* 0x00 */ u16 mMaxFrame;
|
||||
/* 0x02 */ u16 mOffset;
|
||||
/* 0x04 */ u16 mType;
|
||||
/* 0x00 */ BE(u16) mMaxFrame;
|
||||
/* 0x02 */ BE(u16) mOffset;
|
||||
/* 0x04 */ BE(u16) mType;
|
||||
}; // Size = 0x6
|
||||
|
||||
/**
|
||||
@@ -72,8 +80,8 @@ struct J3DAnmColorKeyTable {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmVtxColorIndexData {
|
||||
/* 0x00 */ u16 mNum;
|
||||
/* 0x04 */ void* mpData;
|
||||
/* 0x00 */ BE(u16) mNum;
|
||||
/* 0x04 */ OFFSET_PTR mpData;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -81,14 +89,14 @@ 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;
|
||||
/* 0x00 */ BE(u16) mRMaxFrame;
|
||||
/* 0x02 */ BE(u16) mROffset;
|
||||
/* 0x04 */ BE(u16) mGMaxFrame;
|
||||
/* 0x06 */ BE(u16) mGOffset;
|
||||
/* 0x08 */ BE(u16) mBMaxFrame;
|
||||
/* 0x0A */ BE(u16) mBOffset;
|
||||
/* 0x0C */ BE(u16) mAMaxFrame;
|
||||
/* 0x0E */ BE(u16) mAOffset;
|
||||
}; // Size = 0x10
|
||||
|
||||
/**
|
||||
@@ -96,8 +104,8 @@ struct J3DAnmColorFullTable {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmVisibilityFullTable {
|
||||
u16 _0;
|
||||
u16 _2;
|
||||
BE(u16) _0;
|
||||
BE(u16) _2;
|
||||
}; // Size = 0x4
|
||||
|
||||
/**
|
||||
@@ -115,12 +123,12 @@ struct J3DAnmTransformKeyTable {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmTransformFullTable {
|
||||
/* 0x00 */ u16 mScaleMaxFrame;
|
||||
/* 0x02 */ u16 mScaleOffset;
|
||||
/* 0x04 */ u16 mRotationMaxFrame;
|
||||
/* 0x06 */ u16 mRotationOffset;
|
||||
/* 0x08 */ u16 mTranslateMaxFrame;
|
||||
/* 0x0A */ u16 mTranslateOffset;
|
||||
/* 0x00 */ BE(u16) mScaleMaxFrame;
|
||||
/* 0x02 */ BE(u16) mScaleOffset;
|
||||
/* 0x04 */ BE(u16) mRotationMaxFrame;
|
||||
/* 0x06 */ BE(u16) mRotationOffset;
|
||||
/* 0x08 */ BE(u16) mTranslateMaxFrame;
|
||||
/* 0x0A */ BE(u16) mTranslateOffset;
|
||||
}; // Size = 0xC
|
||||
|
||||
/**
|
||||
@@ -128,10 +136,10 @@ struct J3DAnmTransformFullTable {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmTexPatternFullTable {
|
||||
/* 0x00 */ u16 mMaxFrame;
|
||||
/* 0x02 */ u16 mOffset;
|
||||
/* 0x00 */ BE(u16) mMaxFrame;
|
||||
/* 0x02 */ BE(u16) mOffset;
|
||||
/* 0x04 */ u8 mTexNo;
|
||||
/* 0x06 */ u16 _6;
|
||||
/* 0x06 */ BE(u16) _6;
|
||||
}; // Size = 0x8
|
||||
|
||||
/**
|
||||
@@ -165,8 +173,8 @@ struct J3DAnmKRegKeyTable {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmDataBlockHeader { // actual name unknown
|
||||
/* 0x0 */ u32 mType;
|
||||
/* 0x4 */ u32 mNextOffset;
|
||||
/* 0x0 */ BE(u32) mType;
|
||||
/* 0x4 */ BE(u32) mNextOffset;
|
||||
}; // Size = 0x8
|
||||
|
||||
/**
|
||||
@@ -174,10 +182,10 @@ struct J3DAnmDataBlockHeader { // actual name unknown
|
||||
*
|
||||
*/
|
||||
struct J3DAnmDataHeader { // actual name unknown
|
||||
/* 0x00 */ u32 mMagic;
|
||||
/* 0x04 */ u32 mType;
|
||||
/* 0x00 */ BE(u32) mMagic;
|
||||
/* 0x04 */ BE(u32) mType;
|
||||
/* 0x08 */ u8 _8[4];
|
||||
/* 0x0C */ u32 mCount;
|
||||
/* 0x0C */ BE(u32) mCount;
|
||||
/* 0x10 */ u8 _10[0x20 - 0x10];
|
||||
/* 0x20 */ J3DAnmDataBlockHeader mFirst;
|
||||
};
|
||||
@@ -190,16 +198,16 @@ struct J3DAnmVtxColorFullData {
|
||||
/* 0x00 */ J3DAnmDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9; // padding?
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 mAnmTableNum[2];
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) mAnmTableNum[2];
|
||||
/* 0x10 */ u8 field_0x10[0x18 - 0x10];
|
||||
/* 0x18 */ void* mTableOffsets[2];
|
||||
/* 0x20 */ void* mVtxColorIndexDataOffsets[2];
|
||||
/* 0x28 */ void* mVtxColorIndexPointerOffsets[2];
|
||||
/* 0x30 */ void* mRValuesOffset;
|
||||
/* 0x34 */ void* mGValuesOffset;
|
||||
/* 0x38 */ void* mBValuesOffset;
|
||||
/* 0x3C */ void* mAValuesOffset;
|
||||
/* 0x18 */ OFFSET_PTR mTableOffsets[2];
|
||||
/* 0x20 */ OFFSET_PTR mVtxColorIndexDataOffsets[2];
|
||||
/* 0x28 */ OFFSET_PTR mVtxColorIndexPointerOffsets[2];
|
||||
/* 0x30 */ OFFSET_PTR mRValuesOffset;
|
||||
/* 0x34 */ OFFSET_PTR mGValuesOffset;
|
||||
/* 0x38 */ OFFSET_PTR mBValuesOffset;
|
||||
/* 0x3C */ OFFSET_PTR mAValuesOffset;
|
||||
}; // Size = 0x40
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40);
|
||||
@@ -212,11 +220,11 @@ 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 */ void* mTableOffset;
|
||||
/* 0x14 */ void* mValuesOffset;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) field_0xc;
|
||||
/* 0x0E */ BE(u16) field_0xe;
|
||||
/* 0x10 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x14 */ OFFSET_PTR mValuesOffset;
|
||||
}; // Size = 0x18
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18);
|
||||
@@ -229,13 +237,13 @@ struct J3DAnmTransformFullData {
|
||||
/* 0x00 */ J3DAnmDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 field_0xc;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) field_0xc;
|
||||
/* 0x0E */ u8 field_0xe[0x14 - 0xe];
|
||||
/* 0x14 */ void* mTableOffset;
|
||||
/* 0x18 */ void* mScaleValOffset;
|
||||
/* 0x1C */ void* mRotValOffset;
|
||||
/* 0x20 */ void* mTransValOffset;
|
||||
/* 0x14 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x18 */ OFFSET_PTR mScaleValOffset;
|
||||
/* 0x1C */ OFFSET_PTR mRotValOffset;
|
||||
/* 0x20 */ OFFSET_PTR mTransValOffset;
|
||||
}; // Size = 0x24
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24);
|
||||
@@ -248,19 +256,19 @@ 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 */ void* mTableOffset;
|
||||
/* 0x1C */ void* mUpdateMaterialIDOffset;
|
||||
/* 0x20 */ void* mNameTabOffset;
|
||||
/* 0x24 */ void* mRValOffset;
|
||||
/* 0x28 */ void* mGValOffset;
|
||||
/* 0x2C */ void* mBValOffset;
|
||||
/* 0x30 */ void* mAValOffset;
|
||||
/* 0x0C */ BE(s16) mFrameMax;
|
||||
/* 0x0E */ BE(u16) mUpdateMaterialNum;
|
||||
/* 0x10 */ BE(u16) field_0x10;
|
||||
/* 0x12 */ BE(u16) field_0x12;
|
||||
/* 0x14 */ BE(u16) field_0x14;
|
||||
/* 0x16 */ BE(u16) field_0x16;
|
||||
/* 0x18 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x1C */ OFFSET_PTR mUpdateMaterialIDOffset;
|
||||
/* 0x20 */ OFFSET_PTR mNameTabOffset;
|
||||
/* 0x24 */ OFFSET_PTR mRValOffset;
|
||||
/* 0x28 */ OFFSET_PTR mGValOffset;
|
||||
/* 0x2C */ OFFSET_PTR mBValOffset;
|
||||
/* 0x30 */ OFFSET_PTR mAValOffset;
|
||||
}; // Size = 0x34
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34);
|
||||
@@ -273,32 +281,32 @@ 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 */ void* mTableOffset;
|
||||
/* 0x18 */ void* mUpdateMatIDOffset;
|
||||
/* 0x1C */ void* mNameTab1Offset;
|
||||
/* 0x20 */ void* mUpdateTexMtxIDOffset;
|
||||
/* 0x24 */ void* unkOffset;
|
||||
/* 0x28 */ void* mScaleValOffset;
|
||||
/* 0x2C */ void* mRotValOffset;
|
||||
/* 0x30 */ void* mTransValOffset;
|
||||
/* 0x34 */ u16 field_0x34;
|
||||
/* 0x36 */ u16 field_0x36;
|
||||
/* 0x38 */ u16 field_0x38;
|
||||
/* 0x3A */ u16 field_0x3a;
|
||||
/* 0x3C */ void* mInfoTable2Offset;
|
||||
/* 0x40 */ void* field_0x40;
|
||||
/* 0x44 */ void* mNameTab2Offset;
|
||||
/* 0x48 */ void* field_0x48;
|
||||
/* 0x4C */ void* field_0x4c;
|
||||
/* 0x50 */ void* field_0x50;
|
||||
/* 0x54 */ void* field_0x54;
|
||||
/* 0x58 */ void* field_0x58;
|
||||
/* 0x5C */ s32 field_0x5c;
|
||||
/* 0x0A */ BE(s16) field_0xa;
|
||||
/* 0x0C */ BE(u16) field_0xc;
|
||||
/* 0x0E */ BE(u16) field_0xe;
|
||||
/* 0x10 */ BE(u16) field_0x10;
|
||||
/* 0x12 */ BE(u16) field_0x12;
|
||||
/* 0x14 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x18 */ OFFSET_PTR mUpdateMatIDOffset;
|
||||
/* 0x1C */ OFFSET_PTR mNameTab1Offset;
|
||||
/* 0x20 */ OFFSET_PTR mUpdateTexMtxIDOffset;
|
||||
/* 0x24 */ OFFSET_PTR unkOffset;
|
||||
/* 0x28 */ OFFSET_PTR mScaleValOffset;
|
||||
/* 0x2C */ OFFSET_PTR mRotValOffset;
|
||||
/* 0x30 */ OFFSET_PTR mTransValOffset;
|
||||
/* 0x34 */ BE(u16) field_0x34;
|
||||
/* 0x36 */ BE(u16) field_0x36;
|
||||
/* 0x38 */ BE(u16) field_0x38;
|
||||
/* 0x3A */ BE(u16) field_0x3a;
|
||||
/* 0x3C */ OFFSET_PTR mInfoTable2Offset;
|
||||
/* 0x40 */ OFFSET_PTR field_0x40;
|
||||
/* 0x44 */ OFFSET_PTR mNameTab2Offset;
|
||||
/* 0x48 */ OFFSET_PTR field_0x48;
|
||||
/* 0x4C */ OFFSET_PTR field_0x4c;
|
||||
/* 0x50 */ OFFSET_PTR field_0x50;
|
||||
/* 0x54 */ OFFSET_PTR field_0x54;
|
||||
/* 0x58 */ OFFSET_PTR field_0x58;
|
||||
/* 0x5C */ BE(s32) field_0x5c;
|
||||
}; // Size = 0x60
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60);
|
||||
@@ -311,16 +319,16 @@ struct J3DAnmVtxColorKeyData {
|
||||
/* 0x00 */ J3DAnmDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 mAnmTableNum[2];
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) mAnmTableNum[2];
|
||||
/* 0x10 */ u8 field_0x10[0x18 - 0x10];
|
||||
/* 0x18 */ void* mTableOffsets[2];
|
||||
/* 0x20 */ void* mVtxColoIndexDataOffset[2];
|
||||
/* 0x28 */ void* mVtxColoIndexPointerOffset[2];
|
||||
/* 0x30 */ void* mRValOffset;
|
||||
/* 0x34 */ void* mGValOffset;
|
||||
/* 0x38 */ void* mBValOffset;
|
||||
/* 0x3C */ void* mAValOffset;
|
||||
/* 0x18 */ OFFSET_PTR mTableOffsets[2];
|
||||
/* 0x20 */ OFFSET_PTR mVtxColoIndexDataOffset[2];
|
||||
/* 0x28 */ OFFSET_PTR mVtxColoIndexPointerOffset[2];
|
||||
/* 0x30 */ OFFSET_PTR mRValOffset;
|
||||
/* 0x34 */ OFFSET_PTR mGValOffset;
|
||||
/* 0x38 */ OFFSET_PTR mBValOffset;
|
||||
/* 0x3C */ OFFSET_PTR mAValOffset;
|
||||
}; // Size = 0x40
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40);
|
||||
@@ -333,13 +341,13 @@ 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 */ void* mTableOffset;
|
||||
/* 0x14 */ void* mValuesOffset;
|
||||
/* 0x18 */ void* mUpdateMaterialIDOffset;
|
||||
/* 0x1C */ void* mNameTabOffset;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) field_0xc;
|
||||
/* 0x0E */ BE(u16) field_0xe;
|
||||
/* 0x10 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x14 */ OFFSET_PTR mValuesOffset;
|
||||
/* 0x18 */ OFFSET_PTR mUpdateMaterialIDOffset;
|
||||
/* 0x1C */ OFFSET_PTR mNameTabOffset;
|
||||
}; // Size = 0x20
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20);
|
||||
@@ -352,31 +360,31 @@ 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 */ void* mCRegTableOffset;
|
||||
/* 0x24 */ void* mKRegTableOffset;
|
||||
/* 0x28 */ void* mCRegUpdateMaterialIDOffset;
|
||||
/* 0x2C */ void* mKRegUpdateMaterialIDOffset;
|
||||
/* 0x30 */ void* mCRegNameTabOffset;
|
||||
/* 0x34 */ void* mKRegNameTabOffset;
|
||||
/* 0x38 */ void* mCRValuesOffset;
|
||||
/* 0x3C */ void* mCGValuesOffset;
|
||||
/* 0x40 */ void* mCBValuesOffset;
|
||||
/* 0x44 */ void* mCAValuesOffset;
|
||||
/* 0x48 */ void* mKRValuesOffset;
|
||||
/* 0x4C */ void* mKGValuesOffset;
|
||||
/* 0x50 */ void* mKBValuesOffset;
|
||||
/* 0x54 */ void* mKAValuesOffset;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) mCRegUpdateMaterialNum;
|
||||
/* 0x0E */ BE(u16) mKRegUpdateMaterialNum;
|
||||
/* 0x10 */ BE(u16) field_0x10;
|
||||
/* 0x12 */ BE(u16) field_0x12;
|
||||
/* 0x14 */ BE(u16) field_0x14;
|
||||
/* 0x16 */ BE(u16) field_0x16;
|
||||
/* 0x18 */ BE(u16) field_0x18;
|
||||
/* 0x1A */ BE(u16) field_0x1a;
|
||||
/* 0x1C */ BE(u16) field_0x1c;
|
||||
/* 0x1E */ BE(u16) field_0x1e;
|
||||
/* 0x20 */ OFFSET_PTR mCRegTableOffset;
|
||||
/* 0x24 */ OFFSET_PTR mKRegTableOffset;
|
||||
/* 0x28 */ OFFSET_PTR mCRegUpdateMaterialIDOffset;
|
||||
/* 0x2C */ OFFSET_PTR mKRegUpdateMaterialIDOffset;
|
||||
/* 0x30 */ OFFSET_PTR mCRegNameTabOffset;
|
||||
/* 0x34 */ OFFSET_PTR mKRegNameTabOffset;
|
||||
/* 0x38 */ OFFSET_PTR mCRValuesOffset;
|
||||
/* 0x3C */ OFFSET_PTR mCGValuesOffset;
|
||||
/* 0x40 */ OFFSET_PTR mCBValuesOffset;
|
||||
/* 0x44 */ OFFSET_PTR mCAValuesOffset;
|
||||
/* 0x48 */ OFFSET_PTR mKRValuesOffset;
|
||||
/* 0x4C */ OFFSET_PTR mKGValuesOffset;
|
||||
/* 0x50 */ OFFSET_PTR mKBValuesOffset;
|
||||
/* 0x54 */ OFFSET_PTR mKAValuesOffset;
|
||||
}; // Size = 0x58
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58);
|
||||
@@ -389,16 +397,16 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */
|
||||
/* 0x00 */ J3DAnmDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9[3];
|
||||
/* 0x0C */ s16 mFrameMax;
|
||||
/* 0x0E */ u16 mUpdateMaterialNum;
|
||||
/* 0x0C */ BE(s16) mFrameMax;
|
||||
/* 0x0E */ BE(u16) mUpdateMaterialNum;
|
||||
/* 0x10 */ u8 field_0x10[0x18 - 0x10];
|
||||
/* 0x18 */ void* mTableOffset;
|
||||
/* 0x1C */ void* mUpdateMaterialIDOffset;
|
||||
/* 0x20 */ void* mNameTabOffset;
|
||||
/* 0x24 */ void* mRValuesOffset;
|
||||
/* 0x28 */ void* mGValuesOffset;
|
||||
/* 0x2C */ void* mBValuesOffset;
|
||||
/* 0x30 */ void* mAValuesOffset;
|
||||
/* 0x18 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x1C */ OFFSET_PTR mUpdateMaterialIDOffset;
|
||||
/* 0x20 */ OFFSET_PTR mNameTabOffset;
|
||||
/* 0x24 */ OFFSET_PTR mRValuesOffset;
|
||||
/* 0x28 */ OFFSET_PTR mGValuesOffset;
|
||||
/* 0x2C */ OFFSET_PTR mBValuesOffset;
|
||||
/* 0x30 */ OFFSET_PTR mAValuesOffset;
|
||||
}; // Size = 0x34
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34);
|
||||
@@ -419,13 +427,13 @@ struct J3DAnmTransformKeyData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 field_0xc;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(u16) field_0xc;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x14 */ void* mTableOffset;
|
||||
/* 0x18 */ void* field_0x18;
|
||||
/* 0x1c */ void* field_0x1c;
|
||||
/* 0x20 */ void* field_0x20;
|
||||
/* 0x14 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x18 */ OFFSET_PTR field_0x18;
|
||||
/* 0x1c */ OFFSET_PTR field_0x1c;
|
||||
/* 0x20 */ OFFSET_PTR field_0x20;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -435,10 +443,10 @@ struct J3DAnmTransformKeyData {
|
||||
struct J3DAnmClusterKeyData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ s32 field_0xc;
|
||||
/* 0x10 */ void* mTableOffset;
|
||||
/* 0x14 */ void* mWeightOffset;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(s32) field_0xc;
|
||||
/* 0x10 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x14 */ OFFSET_PTR mWeightOffset;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -448,10 +456,10 @@ struct J3DAnmClusterKeyData {
|
||||
struct J3DAnmClusterFullData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ s32 field_0xc;
|
||||
/* 0x10 */ void* mTableOffset;
|
||||
/* 0x14 */ void* mWeightOffset;
|
||||
/* 0x0A */ BE(s16) mFrameMax;
|
||||
/* 0x0C */ BE(s32) field_0xc;
|
||||
/* 0x10 */ OFFSET_PTR mTableOffset;
|
||||
/* 0x14 */ OFFSET_PTR mWeightOffset;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -459,8 +467,8 @@ struct J3DAnmClusterFullData {
|
||||
*
|
||||
*/
|
||||
struct J3DAnmClusterFullTable {
|
||||
u16 mMaxFrame;
|
||||
u16 mOffset;
|
||||
BE(u16) mMaxFrame;
|
||||
BE(u16) mOffset;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -705,6 +713,14 @@ public:
|
||||
|
||||
/* 0x0C */ u16 mAnmTableNum[2];
|
||||
/* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2];
|
||||
#if TARGET_PC
|
||||
// Address to which getAnmVtxColorIndexData pointers are relative.
|
||||
u16* colorAddressBase[2];
|
||||
|
||||
u16* offsetColorIndexAddress(u8 index, OFFSET_PTR ptr) const {
|
||||
return colorAddressBase[index] + ptr;
|
||||
}
|
||||
#endif
|
||||
}; // Size: 0x18
|
||||
|
||||
/**
|
||||
@@ -977,4 +993,6 @@ public:
|
||||
/* 0x10 */ f32 mFrame;
|
||||
}; // Size: 0x14
|
||||
|
||||
#undef OFFSET_PTR
|
||||
|
||||
#endif /* J3DANIMATION_H */
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#define J3DCLUSTER_H
|
||||
|
||||
#include "JSystem/J3DAssert.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DClusterLoader.h"
|
||||
#include "dusk/endian.h"
|
||||
|
||||
class J3DDeformer;
|
||||
class J3DClusterKey;
|
||||
@@ -11,6 +13,12 @@ class J3DModel;
|
||||
class J3DAnmCluster;
|
||||
class JUTNameTab;
|
||||
|
||||
#if TARGET_PC
|
||||
#define OFFSET_PTR BE(u32)
|
||||
#else
|
||||
#define OFFSET_PTR void*
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
*
|
||||
@@ -31,24 +39,32 @@ public:
|
||||
mDeformer = other.mDeformer;
|
||||
}
|
||||
|
||||
#if !TARGET_PC
|
||||
J3DDeformer* getDeformer() { return mDeformer; }
|
||||
void setDeformer(J3DDeformer* deformer) {
|
||||
J3D_ASSERT_NULLPTR(111, deformer);
|
||||
mDeformer = deformer;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 0x00 */ f32 mMaxAngle;
|
||||
/* 0x04 */ f32 mMinAngle;
|
||||
/* 0x08 */ J3DClusterKey* mClusterKey;
|
||||
/* 0x00 */ BE(f32) mMaxAngle;
|
||||
/* 0x04 */ BE(f32) mMinAngle;
|
||||
/* 0x08 */ OFFSET_PTR mClusterKey;
|
||||
/* 0x0C */ u8 mFlags;
|
||||
/* 0x0E */ u8 field_0xe[0x10 - 0xD];
|
||||
/* 0x10 */ u16 mKeyNum;
|
||||
/* 0x12 */ u16 mPosNum;
|
||||
/* 0x14 */ u16 field_0x14;
|
||||
/* 0x16 */ u16 field_0x16;
|
||||
/* 0x10 */ BE(u16) mKeyNum;
|
||||
/* 0x12 */ BE(u16) mPosNum;
|
||||
/* 0x14 */ BE(u16) field_0x14;
|
||||
/* 0x16 */ BE(u16) field_0x16;
|
||||
#if TARGET_PC
|
||||
OFFSET_PTR field_0x18;
|
||||
OFFSET_PTR mClusterVertex;
|
||||
OFFSET_PTR mDeformer;
|
||||
#else
|
||||
/* 0x18 */ u16* field_0x18;
|
||||
/* 0x1C */ J3DClusterVertex* mClusterVertex;
|
||||
/* 0x20 */ J3DDeformer* mDeformer;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -64,10 +80,10 @@ public:
|
||||
field_0x8 = other.field_0x8;
|
||||
}
|
||||
|
||||
/* 0x00 */ u16 mPosNum;
|
||||
/* 0x02 */ u16 mNrmNum;
|
||||
/* 0x04 */ void* field_0x4;
|
||||
/* 0x08 */ void* field_0x8;
|
||||
/* 0x00 */ BE(u16) mPosNum;
|
||||
/* 0x02 */ BE(u16) mNrmNum;
|
||||
/* 0x04 */ OFFSET_PTR field_0x4;
|
||||
/* 0x08 */ OFFSET_PTR field_0x8;
|
||||
}; // Size: 0x0C
|
||||
|
||||
/**
|
||||
@@ -107,6 +123,11 @@ public:
|
||||
/* 0x1C */ f32* mVtxNrm;
|
||||
/* 0x20 */ JUTNameTab* mClusterName;
|
||||
/* 0x24 */ JUTNameTab* mClusterKeyName;
|
||||
|
||||
#if TARGET_PC
|
||||
J3DDeformer** mDeformers;
|
||||
#endif
|
||||
|
||||
}; // Size: 0x28
|
||||
|
||||
/**
|
||||
@@ -121,9 +142,16 @@ public:
|
||||
field_0x8 = other.field_0x8;
|
||||
}
|
||||
|
||||
/* 0x00 */ u16 mNum;
|
||||
/* 0x00 */ BE(u16) mNum;
|
||||
#if TARGET_PC
|
||||
/* 0x04 */ OFFSET_PTR field_0x4;
|
||||
/* 0x08 */ OFFSET_PTR field_0x8;
|
||||
#else
|
||||
/* 0x04 */ u16* field_0x4;
|
||||
/* 0x08 */ u16* field_0x8;
|
||||
#endif
|
||||
}; // Size: 0x0C
|
||||
|
||||
#undef OFFSET_PTR
|
||||
|
||||
#endif /* J3DCLUSTER_H */
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "JSystem/J3DAssert.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "dusk/endian.h"
|
||||
|
||||
class J3DJoint;
|
||||
class J3DMtxBuffer;
|
||||
@@ -14,8 +15,8 @@ class JUTNameTab;
|
||||
*
|
||||
*/
|
||||
struct J3DModelHierarchy {
|
||||
/* 0x0 */ u16 mType;
|
||||
/* 0x2 */ u16 mValue;
|
||||
/* 0x0 */ BE(u16) mType;
|
||||
/* 0x2 */ BE(u16) mValue;
|
||||
};
|
||||
|
||||
class J3DMaterialTable;
|
||||
|
||||
@@ -98,6 +98,11 @@ public:
|
||||
/* 0x08 */ f32* field_0x8;
|
||||
/* 0x0C */ f32* field_0xc;
|
||||
/* 0x10 */ u32 mFlags;
|
||||
|
||||
#if TARGET_PC
|
||||
void* mArrayBase;
|
||||
const void* mBlockBase;
|
||||
#endif
|
||||
}; // Size: 0x14
|
||||
|
||||
inline void J3DFillZero32B(__REGISTER void* param_0, __REGISTER u32 param_1) {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "JSystem/J3DAssert.h"
|
||||
#include "JSystem/J3DGraphBase/J3DFifo.h"
|
||||
#include <dolphin/mtx.h>
|
||||
#include "dusk/endian_gx.hpp"
|
||||
|
||||
class J3DShapeMtx;
|
||||
|
||||
@@ -184,7 +185,7 @@ public:
|
||||
bool getNBTFlag() const { return mHasNBT; }
|
||||
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
|
||||
void setBumpMtxOffset(u32 offset) { mBumpMtxOffset = offset; }
|
||||
GXVtxDescList* getVtxDesc() { return mVtxDesc; }
|
||||
BE(GXVtxDescList)* getVtxDesc() { return mVtxDesc; }
|
||||
|
||||
J3DMaterial* getMaterial() const { return mMaterial; }
|
||||
u16 getIndex() const { return mIndex; }
|
||||
@@ -212,7 +213,7 @@ private:
|
||||
/* 0x14 */ Vec mMin;
|
||||
/* 0x20 */ Vec mMax;
|
||||
/* 0x2C */ u8* mVcdVatCmd;
|
||||
/* 0x30 */ GXVtxDescList* mVtxDesc;
|
||||
/* 0x30 */ BE(GXVtxDescList)* mVtxDesc;
|
||||
/* 0x34 */ bool mHasNBT;
|
||||
/* 0x38 */ J3DShapeMtx** mShapeMtx;
|
||||
/* 0x3C */ J3DShapeDraw** mShapeDraw;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/J3DAssert.h"
|
||||
#include <dolphin/mtx.h>
|
||||
#include "dusk/endian.h"
|
||||
|
||||
class J3DTexMtx;
|
||||
class J3DTexGenBlock;
|
||||
@@ -34,7 +35,7 @@ typedef void (J3DShapeMtxConcatView::*J3DShapeMtxConcatView_LoadFunc)(int, u16)
|
||||
*/
|
||||
class J3DShapeMtxMulti : public J3DShapeMtx {
|
||||
public:
|
||||
J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
||||
J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, BE(u16)* useMtxIndexTable)
|
||||
: J3DShapeMtx(useMtxIndex)
|
||||
, mUseMtxNum(useMtxNum)
|
||||
, mUseMtxIndexTable(useMtxIndexTable)
|
||||
@@ -49,7 +50,7 @@ public:
|
||||
|
||||
private:
|
||||
/* 0x8 */ u16 mUseMtxNum;
|
||||
/* 0xC */ u16* mUseMtxIndexTable;
|
||||
/* 0xC */ BE(u16)* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -85,7 +86,7 @@ public:
|
||||
*/
|
||||
class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView {
|
||||
public:
|
||||
J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
||||
J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, BE(u16)* useMtxIndexTable)
|
||||
: J3DShapeMtxConcatView(useMtxIndex)
|
||||
, mUseMtxNum(useMtxNum)
|
||||
, mUseMtxIndexTable(useMtxIndexTable)
|
||||
@@ -101,7 +102,7 @@ public:
|
||||
|
||||
private:
|
||||
/* 0x8 */ u16 mUseMtxNum;
|
||||
/* 0xC */ u16* mUseMtxIndexTable;
|
||||
/* 0xC */ BE(u16)* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include "global.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
|
||||
#include "dusk/endian.h"
|
||||
|
||||
/**
|
||||
* @ingroup jsystem-j3d
|
||||
*
|
||||
@@ -15,6 +17,8 @@ struct J3DLightInfo {
|
||||
bool operator==(J3DLightInfo& other) const;
|
||||
J3DLightInfo& operator=(J3DLightInfo const&);
|
||||
|
||||
// NOTE: Values big endian, need fixup at load
|
||||
// Actually, this class doesn't seem used?
|
||||
/* 0x00 */ Vec mLightPosition;
|
||||
/* 0x0C */ Vec mLightDirection;
|
||||
/* 0x18 */ GXColor mColor;
|
||||
@@ -27,6 +31,7 @@ struct J3DLightInfo {
|
||||
*
|
||||
*/
|
||||
struct J3DTextureSRTInfo {
|
||||
// NOTE: Big endian when loaded from file!
|
||||
/* 0x00 */ f32 mScaleX;
|
||||
/* 0x04 */ f32 mScaleY;
|
||||
/* 0x08 */ s16 mRotation;
|
||||
@@ -85,9 +90,10 @@ struct J3DTexMtxInfo {
|
||||
/* 0x01 */ u8 mInfo;
|
||||
/* 0x02 */ u8 field_0x2;
|
||||
/* 0x03 */ u8 field_0x3;
|
||||
// NOTE: big endian when loaded from file!
|
||||
/* 0x04 */ Vec mCenter;
|
||||
/* 0x10 */ J3DTextureSRTInfo mSRT;
|
||||
/* 0x24 */ Mtx44 mEffectMtx;
|
||||
/* 0x24 */ Mtx44 mEffectMtx;
|
||||
}; // Size: 0x64
|
||||
|
||||
/**
|
||||
@@ -108,6 +114,9 @@ struct J3DFogInfo {
|
||||
bool operator==(J3DFogInfo&) const;
|
||||
J3DFogInfo& operator=(const J3DFogInfo&);
|
||||
|
||||
// TODO: Fog data should be converted from big endian (probably?)
|
||||
// Not sure TP uses it.
|
||||
|
||||
/* 0x00 */ u8 mType;
|
||||
/* 0x01 */ u8 mAdjEnable;
|
||||
/* 0x02 */ u16 mCenter;
|
||||
@@ -128,7 +137,7 @@ struct J3DNBTScaleInfo {
|
||||
J3DNBTScaleInfo& operator=(const J3DNBTScaleInfo&);
|
||||
|
||||
/* 0x0 */ u8 mbHasScale;
|
||||
/* 0x4 */ Vec mScale;
|
||||
/* 0x4 */ BE(Vec) mScale;
|
||||
}; // Size: 0x10
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
|
||||
#include <dolphin/gx.h>
|
||||
#include <dolphin/mtx.h>
|
||||
|
||||
#include "JSystem/J3DAssert.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
#include "dusk/endian.h"
|
||||
|
||||
enum J3DSysDrawBuf {
|
||||
/* 0x0 */ J3DSysDrawBuf_Opa,
|
||||
@@ -63,7 +65,7 @@ struct J3DSys {
|
||||
/* 0x10C */ void* mVtxPos;
|
||||
/* 0x110 */ void* mVtxNrm;
|
||||
/* 0x114 */ GXColor* mVtxCol;
|
||||
/* 0x118 */ Vec* mNBTScale;
|
||||
/* 0x118 */ BE(Vec)* mNBTScale;
|
||||
|
||||
J3DSys();
|
||||
void loadPosMtxIndx(int, u16) const;
|
||||
@@ -131,8 +133,8 @@ struct J3DSys {
|
||||
}
|
||||
J3DTexture* getTexture() { return mTexture; }
|
||||
|
||||
void setNBTScale(Vec* scale) { mNBTScale = scale; }
|
||||
Vec* getNBTScale() { return mNBTScale; }
|
||||
void setNBTScale(BE(Vec)* scale) { mNBTScale = scale; }
|
||||
BE(Vec)* getNBTScale() { return mNBTScale; }
|
||||
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
|
||||
|
||||
@@ -282,7 +282,7 @@ struct J3DNBTScale : public J3DNBTScaleInfo {
|
||||
mScale.z = info.mScale.z;
|
||||
}
|
||||
|
||||
Vec* getScale() { return &mScale; }
|
||||
BE(Vec)* getScale() { return &mScale; }
|
||||
};
|
||||
|
||||
extern const GXColor j3dDefaultColInfo;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <dolphin/gx.h>
|
||||
#include <dolphin/mtx.h>
|
||||
#include "dusk/endian_gx.hpp"
|
||||
|
||||
typedef struct _GXColor GXColor;
|
||||
class J3DModel;
|
||||
@@ -41,7 +42,7 @@ public:
|
||||
u32 getNrmNum() const { return mNrmNum; }
|
||||
u32 getVtxNum() const { return mVtxNum; }
|
||||
u32 getColNum() const { return mColNum; }
|
||||
GXVtxAttrFmtList* getVtxAttrFmtList() const { return mVtxAttrFmtList; }
|
||||
BE(GXVtxAttrFmtList)* getVtxAttrFmtList() const { return mVtxAttrFmtList; }
|
||||
u8 getVtxPosFrac() const { return mVtxPosFrac; }
|
||||
u8 getVtxNrmFrac() const { return mVtxNrmFrac; }
|
||||
int getVtxPosType() const { return mVtxPosType; }
|
||||
@@ -60,7 +61,7 @@ private:
|
||||
/* 0x08 */ u32 mColNum;
|
||||
/* 0x0C */ u32 mTexCoordNum;
|
||||
/* 0x10 */ u32 mPacketNum;
|
||||
/* 0x14 */ GXVtxAttrFmtList* mVtxAttrFmtList;
|
||||
/* 0x14 */ BE(GXVtxAttrFmtList)* mVtxAttrFmtList;
|
||||
/* 0x18 */ void* mVtxPosArray;
|
||||
/* 0x1C */ void* mVtxNrmArray;
|
||||
/* 0x20 */ void* mVtxNBTArray;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,11 @@ T* JSUConvertOffsetToPtr(const void* ptr, uintptr_t offset) {
|
||||
*
|
||||
*/
|
||||
template <typename T>
|
||||
#if TARGET_PC
|
||||
T* JSUConvertOffsetToPtr(const void* ptr, u32 offset) {
|
||||
#else
|
||||
T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) {
|
||||
#endif
|
||||
T* ret;
|
||||
if (offset == NULL) {
|
||||
ret = NULL;
|
||||
|
||||
Reference in New Issue
Block a user