mirror of
https://github.com/zeldaret/tp
synced 2026-07-09 14:55:32 -04:00
more various JSystem work (#2046)
* most of J3DAnmLoader done * J3D / JKernel / JUTConsole work * remove asm * fix build * dol 50%
This commit is contained in:
@@ -56,7 +56,7 @@ public:
|
||||
/* 8030A358 */ virtual ~J2DAnmVtxColor() {}
|
||||
/* 8030363C */ virtual void getColor(u8, u16, _GXColor*) const;
|
||||
u16 getAnmTableNum(u8 param_0) const { return mAnmTableNum[param_0]; }
|
||||
J3DAnmVtxColorIndexDataItem* getAnmVtxColorIndexData(u8 param_0, u16 param_1) const { return mVtxColorIndexData[param_0]->field_0x0 + param_1; }
|
||||
J3DAnmVtxColorIndexData* getAnmVtxColorIndexData(u8 param_0, u16 param_1) const { return &mVtxColorIndexData[param_0][param_1]; }
|
||||
u16* getVtxColorIndexPointer(u8 param_0) const { return mVtxColorIndexPointer[param_0]; }
|
||||
|
||||
/* 0x10 */ u16 mAnmTableNum[2];
|
||||
|
||||
@@ -16,18 +16,6 @@ public:
|
||||
void* mpResource;
|
||||
};
|
||||
|
||||
struct J3DAnmTransformKeyData {
|
||||
/* 0x00 */ u8 _0[0x8];
|
||||
/* 0x08 */ u8 _8;
|
||||
/* 0x09 */ u8 _9;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 _C;
|
||||
/* 0x0E */ u8 _E[0x14 - 0xE];
|
||||
/* 0x14 */ s32 mTableOffset;
|
||||
/* 0x18 */ s32 mScaleOffset;
|
||||
/* 0x1C */ s32 mRotationOffset;
|
||||
/* 0x20 */ s32 mTranslateOffset;
|
||||
};
|
||||
struct J3DAnmTextureSRTKeyData;
|
||||
struct J3DAnmColorKeyData;
|
||||
struct J3DAnmVtxColorKeyData;
|
||||
@@ -37,6 +25,7 @@ struct J3DAnmColorFullData;
|
||||
struct J3DAnmTexPatternFullData;
|
||||
struct J3DAnmVisibilityFullData;
|
||||
struct J3DAnmVtxColorFullData;
|
||||
struct J3DAnmTransformKeyData;
|
||||
|
||||
class J2DAnmKeyLoader_v15 : public J2DAnmLoader {
|
||||
public:
|
||||
|
||||
@@ -12,10 +12,17 @@ struct ResTIMG;
|
||||
struct ResTLUT;
|
||||
|
||||
enum J2DMirror {
|
||||
/* 0x0 */ MIRROR0, // temp, figure out later
|
||||
/* 0 */ MIRROR0, // temp, figure out later
|
||||
/* 1 */ J2DMirror_Y = (1 << 0),
|
||||
/* 2 */ J2DMirror_X = (1 << 1),
|
||||
};
|
||||
|
||||
enum J2DBinding {
|
||||
/* 1 */ J2DBind_Bottom = (1 << 0),
|
||||
/* 2 */ J2DBind_Top = (1 << 1),
|
||||
/* 4 */ J2DBind_Right = (1 << 2),
|
||||
/* 8 */ J2DBind_Left = (1 << 3),
|
||||
|
||||
/* 0xF */ BIND15 = 15, // temp, figure out later
|
||||
};
|
||||
|
||||
|
||||
@@ -5,6 +5,26 @@
|
||||
#include "JSystem/JUtility/JUTNameTab.h"
|
||||
#include "global.h"
|
||||
|
||||
struct JUTDataBlockHeader {
|
||||
/* 0x0 */ u32 mType;
|
||||
/* 0x4 */ u32 mSize;
|
||||
|
||||
const JUTDataBlockHeader* getNext() const { // fake inline
|
||||
return reinterpret_cast<const JUTDataBlockHeader*>(reinterpret_cast<const u8*>(this) +
|
||||
mSize);
|
||||
}
|
||||
};
|
||||
|
||||
struct JUTDataFileHeader { // actual struct name unknown
|
||||
/* 0x00 */ u32 mMagic;
|
||||
/* 0x04 */ u32 mType;
|
||||
/* 0x08 */ u32 mFileSize;
|
||||
/* 0x0C */ u32 mBlockNum;
|
||||
/* 0x10 */ u8 _10[0x1C - 0x10];
|
||||
/* 0x1C */ u32 mSeAnmOffset; // Only exists for some BCKs
|
||||
/* 0x20 */ JUTDataBlockHeader mFirstBlock;
|
||||
};
|
||||
|
||||
typedef struct _GXColor GXColor;
|
||||
typedef struct _GXColorS10 GXColorS10;
|
||||
|
||||
@@ -21,13 +41,9 @@ struct J3DAnmColorKeyTable {
|
||||
J3DAnmKeyTableBase mAInfo;
|
||||
}; // Size = 0x18
|
||||
|
||||
struct J3DAnmVtxColorIndexDataItem {
|
||||
u16 count;
|
||||
u32 offset;
|
||||
};
|
||||
|
||||
struct J3DAnmVtxColorIndexData {
|
||||
J3DAnmVtxColorIndexDataItem field_0x0[4];
|
||||
/* 0x00 */ u16 mNum;
|
||||
/* 0x04 */ void* mpData;
|
||||
};
|
||||
|
||||
struct J3DAnmColorFullTable {
|
||||
@@ -285,8 +301,55 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34);
|
||||
|
||||
struct J3DAnmClusterKeyTable {
|
||||
/* 0x00 */ J3DAnmKeyTableBase mWeightTable;
|
||||
};
|
||||
|
||||
struct J3DAnmTransformKeyData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x09 */ u8 field_0x9;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ u16 field_0xc;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x14 */ s32 mTableOffset;
|
||||
/* 0x18 */ s32 field_0x18;
|
||||
/* 0x1c */ s32 field_0x1c;
|
||||
/* 0x20 */ s32 field_0x20;
|
||||
};
|
||||
|
||||
struct J3DAnmClusterKeyData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ s32 field_0xc;
|
||||
/* 0x10 */ s32 mTableOffset;
|
||||
/* 0x14 */ s32 mWeightOffset;
|
||||
};
|
||||
|
||||
struct J3DAnmClusterFullData {
|
||||
/* 0x00 */ JUTDataBlockHeader mHeader;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x0A */ s16 mFrameMax;
|
||||
/* 0x0C */ s32 field_0xc;
|
||||
/* 0x10 */ s32 mTableOffset;
|
||||
/* 0x14 */ s32 mWeightOffset;
|
||||
};
|
||||
|
||||
struct J3DAnmClusterFullTable {
|
||||
u16 mMaxFrame;
|
||||
u16 mOffset;
|
||||
};
|
||||
|
||||
class J3DAnmBase {
|
||||
public:
|
||||
J3DAnmBase() {
|
||||
mAttribute = 0;
|
||||
field_0x5 = 0;
|
||||
mFrameMax = 0;
|
||||
mFrame = 0.0f;
|
||||
}
|
||||
|
||||
J3DAnmBase(s16 i_frameMax) {
|
||||
mAttribute = 0;
|
||||
field_0x5 = 0;
|
||||
@@ -295,13 +358,13 @@ public:
|
||||
}
|
||||
|
||||
virtual ~J3DAnmBase();
|
||||
virtual s32 getKind() const = 0;
|
||||
|
||||
u8 getAttribute() const { return mAttribute; }
|
||||
s16 getFrameMax() const { return mFrameMax; }
|
||||
f32 getFrame() const { return mFrame; }
|
||||
void setFrame(f32 frame) { mFrame = frame; }
|
||||
|
||||
private:
|
||||
/* 0x4 */ u8 mAttribute;
|
||||
/* 0x5 */ u8 field_0x5;
|
||||
/* 0x6 */ s16 mFrameMax;
|
||||
@@ -316,21 +379,20 @@ public:
|
||||
/* 8003C77C */ virtual s32 getKind() const;
|
||||
virtual void getTransform(u16, J3DTransformInfo*) const = 0;
|
||||
|
||||
private:
|
||||
/* 0x0C */ f32* field_0xc;
|
||||
/* 0x10 */ s16* field_0x10;
|
||||
/* 0x14 */ f32* field_0x14;
|
||||
/* 0x0C */ f32* mScaleData;
|
||||
/* 0x10 */ s16* mRotData;
|
||||
/* 0x14 */ f32* mTransData;
|
||||
/* 0x18 */ s16 field_0x18;
|
||||
/* 0x1A */ s16 field_0x1a;
|
||||
/* 0x1C */ s16 field_0x1c;
|
||||
/* 0x1C */ u16 field_0x1c;
|
||||
/* 0x1E */ s16 field_0x1e;
|
||||
}; // Size: 0x20
|
||||
|
||||
class J3DAnmTransformKey : public J3DAnmTransform {
|
||||
public:
|
||||
J3DAnmTransformKey() : J3DAnmTransform(0, NULL, NULL, NULL) {
|
||||
field_0x20 = 0;
|
||||
field_0x24 = 0;
|
||||
mDecShift = 0;
|
||||
mAnmTable = 0;
|
||||
}
|
||||
|
||||
/* 80329A34 */ void calcTransform(f32, u16, J3DTransformInfo*) const;
|
||||
@@ -339,19 +401,19 @@ public:
|
||||
/* 8003C800 */ virtual s32 getKind() const;
|
||||
/* 8003C808 */ virtual void getTransform(u16, J3DTransformInfo*) const;
|
||||
|
||||
private:
|
||||
/* 0x20 */ int field_0x20;
|
||||
/* 0x24 */ int field_0x24;
|
||||
/* 0x20 */ int mDecShift;
|
||||
/* 0x24 */ J3DAnmTransformKeyTable* mAnmTable;
|
||||
}; // Size: 0x28
|
||||
|
||||
class J3DAnmTransformFull : public J3DAnmTransform {
|
||||
public:
|
||||
J3DAnmTransformFull() : J3DAnmTransform(0, NULL, NULL, NULL) { mAnmTable = NULL; }
|
||||
|
||||
/* 8032C2AC */ virtual ~J3DAnmTransformFull();
|
||||
/* 8032C318 */ virtual s32 getKind() const;
|
||||
/* 80328E90 */ virtual void getTransform(u16, J3DTransformInfo*) const;
|
||||
|
||||
private:
|
||||
/* 0x20 */ int field_0x20;
|
||||
/* 0x20 */ J3DAnmTransformFullTable* mAnmTable;
|
||||
}; // Size: 0x24
|
||||
|
||||
class J3DAnmTransformFullWithLerp : public J3DAnmTransformFull {
|
||||
@@ -380,34 +442,33 @@ public:
|
||||
}
|
||||
|
||||
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
|
||||
u16 getUpdateMaterialNum() const { return field_0x14 / 3; }
|
||||
u16 getUpdateMaterialNum() const { return mTrackNum / 3; }
|
||||
|
||||
private:
|
||||
/* 0x0C */ int field_0xc;
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x14 */ u16 field_0x14;
|
||||
/* 0x16 */ u16 field_0x16;
|
||||
/* 0x18 */ u16 field_0x18;
|
||||
/* 0x1A */ u16 field_0x1a;
|
||||
/* 0x1C */ int field_0x1c;
|
||||
/* 0x20 */ int field_0x20;
|
||||
/* 0x24 */ int field_0x24;
|
||||
/* 0x28 */ u8 mUpdateTexMtxID[4];
|
||||
/* 0x0C */ int mDecShift;
|
||||
/* 0x10 */ J3DAnmTransformKeyTable* mAnmTable;
|
||||
/* 0x14 */ u16 mTrackNum;
|
||||
/* 0x16 */ u16 mScaleNum;
|
||||
/* 0x18 */ u16 mRotNum;
|
||||
/* 0x1A */ u16 mTransNum;
|
||||
/* 0x1C */ f32* mScaleData;
|
||||
/* 0x20 */ s16* mRotData;
|
||||
/* 0x24 */ f32* mTransData;
|
||||
/* 0x28 */ u8* mUpdateTexMtxID;
|
||||
/* 0x2C */ u16* mUpdateMaterialID;
|
||||
/* 0x30 */ JUTNameTab field_0x30;
|
||||
/* 0x40 */ int field_0x40;
|
||||
/* 0x30 */ JUTNameTab mUpdateMaterialName;
|
||||
/* 0x40 */ Vec* mSRTCenter;
|
||||
/* 0x44 */ u16 field_0x44;
|
||||
/* 0x46 */ u16 field_0x46;
|
||||
/* 0x48 */ u16 field_0x48;
|
||||
/* 0x4A */ u16 field_0x4a;
|
||||
/* 0x4C */ int field_0x4c;
|
||||
/* 0x50 */ int field_0x50;
|
||||
/* 0x54 */ int field_0x54;
|
||||
/* 0x58 */ int field_0x58;
|
||||
/* 0x5C */ u8 field_0x5c[4];
|
||||
/* 0x60 */ u16* field_0x60;
|
||||
/* 0x64 */ JUTNameTab field_0x64;
|
||||
/* 0x74 */ u8 field_0x74[4];
|
||||
/* 0x4C */ void* field_0x4c;
|
||||
/* 0x50 */ void* field_0x50;
|
||||
/* 0x54 */ void* field_0x54;
|
||||
/* 0x58 */ void* field_0x58;
|
||||
/* 0x5C */ u8* mPostUpdateTexMtxID;
|
||||
/* 0x60 */ u16* mPostUpdateMaterialID;
|
||||
/* 0x64 */ JUTNameTab mPostUpdateMaterialName;
|
||||
/* 0x74 */ Vec* mPostSRTCenter;
|
||||
/* 0x78 */ u32 mTexMtxCalcType;
|
||||
}; // Size: 0x7C
|
||||
|
||||
@@ -426,8 +487,7 @@ public:
|
||||
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
|
||||
J3DAnmTexPatternFullTable* getAnmTable() { return mAnmTable; }
|
||||
|
||||
private:
|
||||
/* 0x0C */ void* field_0xc;
|
||||
/* 0x0C */ u16* mTextureIndex;
|
||||
/* 0x10 */ J3DAnmTexPatternFullTable* mAnmTable;
|
||||
/* 0x14 */ u16 field_0x14;
|
||||
/* 0x16 */ u16 mUpdateMaterialNum;
|
||||
@@ -452,31 +512,30 @@ public:
|
||||
u16 getCRegUpdateMaterialID(u16 idx) const { return mCRegUpdateMaterialID[idx]; }
|
||||
u16 getKRegUpdateMaterialID(u16 idx) const { return mKRegUpdateMaterialID[idx]; }
|
||||
|
||||
private:
|
||||
/* 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;
|
||||
/* 0x10 */ u16 mCRegDataCountR;
|
||||
/* 0x12 */ u16 mCRegDataCountG;
|
||||
/* 0x14 */ u16 mCRegDataCountB;
|
||||
/* 0x16 */ u16 mCRegDataCountA;
|
||||
/* 0x18 */ u16 mKRegDataCountR;
|
||||
/* 0x1A */ u16 mKRegDataCountG;
|
||||
/* 0x1C */ u16 mKRegDataCountB;
|
||||
/* 0x1E */ u16 mKRegDataCountA;
|
||||
/* 0x20 */ u16* mCRegUpdateMaterialID;
|
||||
/* 0x24 */ JUTNameTab field_0x24;
|
||||
/* 0x24 */ JUTNameTab mCRegUpdateMaterialName;
|
||||
/* 0x34 */ u16* mKRegUpdateMaterialID;
|
||||
/* 0x38 */ JUTNameTab field_0x38;
|
||||
/* 0x48 */ void* field_0x48;
|
||||
/* 0x4C */ void* field_0x4c;
|
||||
/* 0x50 */ int field_0x50;
|
||||
/* 0x54 */ int field_0x54;
|
||||
/* 0x58 */ int field_0x58;
|
||||
/* 0x5C */ int field_0x5c;
|
||||
/* 0x60 */ int field_0x60;
|
||||
/* 0x64 */ int field_0x64;
|
||||
/* 0x68 */ int field_0x68;
|
||||
/* 0x6C */ int field_0x6c;
|
||||
/* 0x38 */ JUTNameTab mKRegUpdateMaterialName;
|
||||
/* 0x48 */ J3DAnmCRegKeyTable* mAnmCRegKeyTable;
|
||||
/* 0x4C */ J3DAnmKRegKeyTable* mAnmKRegKeyTable;
|
||||
/* 0x50 */ s16* mAnmCRegDataR;
|
||||
/* 0x54 */ s16* mAnmCRegDataG;
|
||||
/* 0x58 */ s16* mAnmCRegDataB;
|
||||
/* 0x5C */ s16* mAnmCRegDataA;
|
||||
/* 0x60 */ s16* mAnmKRegDataR;
|
||||
/* 0x64 */ s16* mAnmKRegDataG;
|
||||
/* 0x68 */ s16* mAnmKRegDataB;
|
||||
/* 0x6C */ s16* mAnmKRegDataA;
|
||||
}; // Size: 0x70
|
||||
|
||||
class J3DAnmColor : public J3DAnmBase {
|
||||
@@ -492,14 +551,13 @@ public:
|
||||
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
|
||||
u16 getUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx]; }
|
||||
|
||||
private:
|
||||
/* 0x0C */ u16 field_0xc;
|
||||
/* 0x0E */ u16 field_0xe;
|
||||
/* 0x10 */ u16 field_0x10;
|
||||
/* 0x12 */ u16 field_0x12;
|
||||
/* 0x14 */ u16 mUpdateMaterialNum;
|
||||
/* 0x18 */ u16* mUpdateMaterialID;
|
||||
/* 0x1C */ JUTNameTab field_0x1c;
|
||||
/* 0x1C */ JUTNameTab mUpdateMaterialName;
|
||||
}; // Size: 0x2C
|
||||
|
||||
class J3DAnmColorKey : public J3DAnmColor {
|
||||
@@ -510,12 +568,11 @@ public:
|
||||
/* 8032BEB0 */ virtual s32 getKind() const;
|
||||
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
|
||||
|
||||
private:
|
||||
/* 0x2C */ int field_0x2c;
|
||||
/* 0x30 */ int field_0x30;
|
||||
/* 0x34 */ int field_0x34;
|
||||
/* 0x38 */ int field_0x38;
|
||||
/* 0x3C */ int field_0x3c;
|
||||
/* 0x2C */ s16* field_0x2c;
|
||||
/* 0x30 */ s16* field_0x30;
|
||||
/* 0x34 */ s16* field_0x34;
|
||||
/* 0x38 */ s16* field_0x38;
|
||||
/* 0x3C */ J3DAnmColorKeyTable* field_0x3c;
|
||||
};
|
||||
|
||||
class J3DAnmColorFull : public J3DAnmColor {
|
||||
@@ -526,12 +583,11 @@ public:
|
||||
/* 8032BEB0 */ virtual s32 getKind() const;
|
||||
/* 8032AB54 */ virtual void getColor(u16, _GXColor*) const;
|
||||
|
||||
private:
|
||||
/* 0x2C */ int field_0x2c;
|
||||
/* 0x30 */ int field_0x30;
|
||||
/* 0x34 */ int field_0x34;
|
||||
/* 0x38 */ int field_0x38;
|
||||
/* 0x3C */ int field_0x3c;
|
||||
/* 0x2C */ u8* mColorR;
|
||||
/* 0x30 */ u8* mColorG;
|
||||
/* 0x34 */ u8* mColorB;
|
||||
/* 0x38 */ u8* mColorA;
|
||||
/* 0x3C */ J3DAnmColorFullTable* mAnmTable;
|
||||
};
|
||||
|
||||
class J3DAnmVtxColor : public J3DAnmBase {
|
||||
@@ -542,9 +598,8 @@ public:
|
||||
virtual s32 getKind() const;
|
||||
virtual void getColor(u8, u16, _GXColor*) const;
|
||||
|
||||
private:
|
||||
/* 0x0C */ s16 mAnmTableNum[2];
|
||||
/* 0x10 */ int mAnmVtxColorIndexData[2];
|
||||
/* 0x0C */ u16 mAnmTableNum[2];
|
||||
/* 0x10 */ J3DAnmVtxColorIndexData* mAnmVtxColorIndexData[2];
|
||||
}; // Size: 0x18
|
||||
|
||||
class J3DAnmVtxColorKey : public J3DAnmVtxColor {
|
||||
@@ -555,49 +610,77 @@ public:
|
||||
/* 8032BFBC */ virtual s32 getKind() const;
|
||||
/* 8032A53C */ virtual void getColor(u8, u16, _GXColor*) const;
|
||||
|
||||
private:
|
||||
/* 0x18 */ int field_0x18[2];
|
||||
/* 0x1C */ J3DAnmColorKeyTable* mpTable[2];
|
||||
/* 0x24 */ s16* mColorR;
|
||||
/* 0x28 */ s16* mColorG;
|
||||
/* 0x2C */ s16* mColorB;
|
||||
/* 0x30 */ s16* mColorA;
|
||||
};
|
||||
|
||||
class J3DAnmVtxColorFull : public J3DAnmVtxColor {
|
||||
public:
|
||||
/* 8032A30C */ J3DAnmVtxColorFull();
|
||||
|
||||
/* 8032BFC4 */ virtual ~J3DAnmVtxColorFull();
|
||||
/* 8032C030 */ virtual s32 getKind() const;
|
||||
/* 8032A368 */ virtual void getColor(u8, u16, _GXColor*) const;
|
||||
|
||||
private:
|
||||
/* 0x18 */ int field_0x18[2];
|
||||
/* 0x1C */ J3DAnmColorFullTable* mpTable[2];
|
||||
/* 0x24 */ u8* mColorR;
|
||||
/* 0x28 */ u8* mColorG;
|
||||
/* 0x2C */ u8* mColorB;
|
||||
/* 0x30 */ u8* mColorA;
|
||||
};
|
||||
|
||||
class J3DAnmCluster : public J3DAnmBase {
|
||||
public:
|
||||
J3DAnmCluster(s16 param_1, f32* param_2) : J3DAnmBase(param_1) { mWeight = param_2; }
|
||||
|
||||
/* 8032BCAC */ virtual ~J3DAnmCluster();
|
||||
/* 8032BF44 */ virtual s32 getKind() const;
|
||||
/* 8032BF4C */ virtual f32 getWeight(u16) const;
|
||||
|
||||
private:
|
||||
/* 0x0C */ f32* field_0xc;
|
||||
/* 0x0C */ f32* mWeight;
|
||||
}; // Size: 0x10
|
||||
|
||||
class J3DAnmClusterFull : public J3DAnmCluster {
|
||||
public:
|
||||
J3DAnmClusterFull() : J3DAnmCluster(0, 0) { mAnmTable = NULL; }
|
||||
|
||||
/* 8032BCAC */ virtual ~J3DAnmClusterFull();
|
||||
/* 8032BF44 */ virtual s32 getKind() const;
|
||||
/* 8032BF4C */ virtual f32 getWeight(u16) const;
|
||||
|
||||
private:
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x10 */ J3DAnmClusterFullTable* mAnmTable;
|
||||
};
|
||||
|
||||
class J3DAnmClusterKey : public J3DAnmCluster {
|
||||
public:
|
||||
J3DAnmClusterKey() : J3DAnmCluster(0, NULL) { mAnmTable = NULL; }
|
||||
|
||||
/* 8032C044 */ virtual ~J3DAnmClusterKey();
|
||||
/* 8032C0B0 */ virtual s32 getKind() const;
|
||||
/* 8032A218 */ virtual f32 getWeight(u16) const;
|
||||
|
||||
private:
|
||||
/* 0x10 */ int field_0x10;
|
||||
/* 0x10 */ J3DAnmClusterKeyTable* mAnmTable;
|
||||
};
|
||||
|
||||
class J3DAnmVisibilityFull : public J3DAnmBase {
|
||||
public:
|
||||
J3DAnmVisibilityFull() : J3DAnmBase(0) {
|
||||
mUpdateMaterialNum = 0;
|
||||
field_0xe = 0;
|
||||
mAnmTable = NULL;
|
||||
mVisibility = NULL;
|
||||
}
|
||||
|
||||
/* 8033979C */ virtual ~J3DAnmVisibilityFull();
|
||||
/* 803397F8 */ virtual s32 getKind() const;
|
||||
|
||||
/* 0x0C */ u16 mUpdateMaterialNum;
|
||||
/* 0x0E */ u16 field_0xe;
|
||||
/* 0x10 */ J3DAnmVisibilityFullTable* mAnmTable;
|
||||
/* 0x14 */ u8* mVisibility;
|
||||
};
|
||||
|
||||
class J3DFrameCtrl {
|
||||
@@ -639,7 +722,6 @@ public:
|
||||
mState = 0;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x04 */ u8 mAttribute;
|
||||
/* 0x05 */ u8 mState;
|
||||
/* 0x06 */ s16 mStart;
|
||||
|
||||
@@ -13,6 +13,20 @@ class JUTNameTab;
|
||||
|
||||
class J3DCluster {
|
||||
public:
|
||||
void operator=(const J3DCluster& other) {
|
||||
mMaxAngle = other.mMaxAngle;
|
||||
mMinAngle = other.mMinAngle;
|
||||
mClusterKey = other.mClusterKey;
|
||||
mFlags = other.mFlags;
|
||||
mKeyNum = other.mKeyNum;
|
||||
mPosNum = other.mPosNum;
|
||||
field_0x14 = other.field_0x14;
|
||||
field_0x16 = other.field_0x16;
|
||||
field_0x18 = other.field_0x18;
|
||||
mClusterVertex = other.mClusterVertex;
|
||||
mDeformer = other.mDeformer;
|
||||
}
|
||||
|
||||
J3DDeformer* getDeformer() { return mDeformer; }
|
||||
void setDeformer(J3DDeformer* deformer) { mDeformer = deformer; }
|
||||
|
||||
@@ -30,7 +44,20 @@ public:
|
||||
/* 0x20 */ J3DDeformer* mDeformer;
|
||||
};
|
||||
|
||||
struct J3DClusterKey {};
|
||||
class J3DClusterKey {
|
||||
public:
|
||||
void operator=(const J3DClusterKey& other) {
|
||||
mPosNum = other.mPosNum;
|
||||
mNrmNum = other.mNrmNum;
|
||||
field_0x4 = other.field_0x4;
|
||||
field_0x8 = other.field_0x8;
|
||||
}
|
||||
|
||||
/* 0x00 */ u16 mPosNum;
|
||||
/* 0x02 */ u16 mNrmNum;
|
||||
/* 0x04 */ void* field_0x4;
|
||||
/* 0x08 */ void* field_0x8;
|
||||
}; // Size: 0x0C
|
||||
|
||||
class J3DDeformData {
|
||||
public:
|
||||
@@ -40,11 +67,13 @@ public:
|
||||
/* 8032E274 */ void deform(J3DModel*);
|
||||
/* 8032E364 */ void setAnm(J3DAnmCluster*);
|
||||
|
||||
J3DCluster* getClusterPointer(u16 index) {
|
||||
return &mClusterPointer[index];
|
||||
}
|
||||
J3DCluster* getClusterPointer(u16 index) { return &mClusterPointer[index]; }
|
||||
u16 getClusterNum() const { return mClusterNum; }
|
||||
u16 getClusterKeyNum() const { return mClusterKeyNum; }
|
||||
J3DClusterKey* getClusterKeyPointer(u16 i) { return &mClusterKeyPointer[i]; }
|
||||
f32* getVtxPos() { return mVtxPos; }
|
||||
f32* getVtxNrm() { return mVtxNrm; }
|
||||
|
||||
private:
|
||||
/* 0x00 */ u16 mClusterNum;
|
||||
/* 0x02 */ u16 mClusterKeyNum;
|
||||
/* 0x04 */ u16 mClusterVertexNum;
|
||||
@@ -59,4 +88,17 @@ private:
|
||||
/* 0x24 */ JUTNameTab* mClusterKeyName;
|
||||
}; // Size: 0x28
|
||||
|
||||
class J3DClusterVertex {
|
||||
public:
|
||||
void operator=(const J3DClusterVertex& other) {
|
||||
mNum = other.mNum;
|
||||
field_0x4 = other.field_0x4;
|
||||
field_0x8 = other.field_0x8;
|
||||
}
|
||||
|
||||
/* 0x00 */ u16 mNum;
|
||||
/* 0x04 */ u16* field_0x4;
|
||||
/* 0x08 */ u16* field_0x8;
|
||||
}; // Size: 0x0C
|
||||
|
||||
#endif /* J3DCLUSTER_H */
|
||||
|
||||
@@ -80,7 +80,6 @@ public:
|
||||
void offFlag(u32 i_flag) { mFlags &= ~i_flag; }
|
||||
void setAnmCluster(J3DAnmCluster* anm) { mAnmCluster = anm; }
|
||||
|
||||
private:
|
||||
/* 0x00 */ J3DDeformData* mDeformData;
|
||||
/* 0x04 */ J3DAnmCluster* mAnmCluster;
|
||||
/* 0x08 */ f32* field_0x8;
|
||||
|
||||
@@ -102,7 +102,6 @@ public:
|
||||
/* 80322DA0 */ virtual void setTexMtxOffset(u32);
|
||||
/* 80317180 */ virtual ~J3DTexGenBlockPatched();
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 mTexGenNum;
|
||||
/* 0x08 */ J3DTexCoord mTexCoord[8];
|
||||
/* 0x38 */ J3DTexMtx* mTexMtx[8];
|
||||
@@ -126,7 +125,6 @@ public:
|
||||
/* 80322CC0 */ virtual J3DNBTScale* getNBTScale();
|
||||
/* 80322CC8 */ virtual ~J3DTexGenBlockBasic();
|
||||
|
||||
private:
|
||||
/* 0x5C */ J3DNBTScale mNBTScale;
|
||||
}; // Size: 0x6C
|
||||
|
||||
@@ -147,7 +145,6 @@ public:
|
||||
/* 80322DFC */ virtual J3DNBTScale* getNBTScale();
|
||||
/* 80322E04 */ virtual ~J3DTexGenBlock4();
|
||||
|
||||
private:
|
||||
/* 0x5C */ J3DNBTScale mNBTScale;
|
||||
}; // Size: 0x6C
|
||||
|
||||
@@ -275,7 +272,6 @@ public:
|
||||
/* 80322C08 */ virtual void setTevRegOffset(u32);
|
||||
/* 80322C10 */ virtual ~J3DTevBlockPatched();
|
||||
|
||||
private:
|
||||
/* 0x08 */ u16 mTexNo[8];
|
||||
/* 0x18 */ J3DTevOrder mTevOrder[8];
|
||||
/* 0x38 */ J3DTevStage mTevStage[8];
|
||||
@@ -346,7 +342,6 @@ public:
|
||||
/* 80322348 */ virtual void setTevRegOffset(u32);
|
||||
/* 80322350 */ virtual ~J3DTevBlock4();
|
||||
|
||||
private:
|
||||
/* 0x08 */ u16 mTexNo[4];
|
||||
/* 0x10 */ J3DTevOrder mTevOrder[4];
|
||||
/* 0x20 */ u8 mTevStageNum;
|
||||
@@ -419,7 +414,6 @@ public:
|
||||
/* 8032270C */ virtual void setTevRegOffset(u32);
|
||||
/* 80322714 */ virtual ~J3DTevBlock2();
|
||||
|
||||
private:
|
||||
/* 0x08 */ u16 mTexNo[2];
|
||||
/* 0x0C */ J3DTevOrder mTevOrder[2];
|
||||
/* 0x14 */ J3DGXColorS10 mTevColor[4];
|
||||
@@ -492,7 +486,6 @@ public:
|
||||
/* 80321F7C */ virtual void setTevRegOffset(u32);
|
||||
/* 80321F84 */ virtual ~J3DTevBlock16();
|
||||
|
||||
private:
|
||||
/* 0x008 */ u16 mTexNo[8];
|
||||
/* 0x018 */ J3DTevOrder mTevOrder[16];
|
||||
/* 0x058 */ u8 mTevStageNum;
|
||||
@@ -546,7 +539,6 @@ public:
|
||||
/* 803228EC */ virtual bool getTexNoOffset() const;
|
||||
/* 803228F4 */ virtual ~J3DTevBlock1();
|
||||
|
||||
private:
|
||||
/* 0x08 */ u16 mTexNo[1];
|
||||
/* 0x0A */ J3DTevOrder mTevOrder[1];
|
||||
/* 0x0E */ J3DTevStage mTevStage[1];
|
||||
@@ -749,7 +741,6 @@ public:
|
||||
/* 80321A68 */ virtual void setFogOffset(u32);
|
||||
/* 80321A70 */ virtual ~J3DPEBlockFull();
|
||||
|
||||
private:
|
||||
/* 0x04 */ J3DFog mFog;
|
||||
/* 0x30 */ J3DAlphaComp mAlphaComp;
|
||||
/* 0x34 */ J3DBlend mBlend;
|
||||
@@ -789,7 +780,6 @@ public:
|
||||
/* 80321BBC */ virtual bool getDither() const;
|
||||
/* 80321BC4 */ virtual ~J3DPEBlockFogOff();
|
||||
|
||||
private:
|
||||
/* 0x04 */ J3DAlphaComp mAlphaComp;
|
||||
/* 0x08 */ J3DBlend mBlend;
|
||||
/* 0x0C */ J3DZMode mZMode;
|
||||
@@ -889,7 +879,6 @@ public:
|
||||
/* 8032348C */ virtual bool getIndTexCoordScale(u32);
|
||||
/* 803234A0 */ virtual ~J3DIndBlockFull();
|
||||
|
||||
private:
|
||||
/* 0x04 */ u8 mIndTexStageNum;
|
||||
/* 0x05 */ J3DIndTexOrder mIndTexOrder[4];
|
||||
/* 0x18 */ J3DIndTexMtx mIndTexMtx[3];
|
||||
@@ -908,6 +897,10 @@ struct J3DColorChanInfo {
|
||||
|
||||
extern J3DColorChanInfo j3dDefaultColorChanInfo;
|
||||
|
||||
/* static inline u32 setChanCtrlMacro(u8 param_0, GXColorSrc param_1, GXColorSrc param_2, u32 param_3, GXDiffuseFn param_4, GXAttnFn param_5) {
|
||||
|
||||
} */
|
||||
|
||||
struct J3DColorChan {
|
||||
/* 8000E47C */ J3DColorChan() {
|
||||
setColorChanInfo(j3dDefaultColorChanInfo);
|
||||
@@ -1032,7 +1025,6 @@ public:
|
||||
/* 80323010 */ virtual void setColorChanOffset(u32);
|
||||
/* 80323018 */ virtual ~J3DColorBlockLightOn();
|
||||
|
||||
private:
|
||||
/* 0x04 */ J3DGXColor mMatColor[2];
|
||||
/* 0x0C */ J3DGXColor mAmbColor[2];
|
||||
/* 0x14 */ u8 mColorChanNum;
|
||||
@@ -1078,7 +1070,6 @@ public:
|
||||
/* 80323250 */ virtual void setColorChanOffset(u32);
|
||||
/* 803170DC */ virtual ~J3DColorBlockLightOff();
|
||||
|
||||
private:
|
||||
/* 0x04 */ J3DGXColor mMatColor[2];
|
||||
/* 0x0C */ u8 mColorChanNum;
|
||||
/* 0x0E */ J3DColorChan mColorChan[4];
|
||||
@@ -1103,7 +1094,6 @@ public:
|
||||
/* 803230D8 */ virtual bool getAmbColor(u32);
|
||||
/* 803230EC */ virtual ~J3DColorBlockAmbientOn();
|
||||
|
||||
private:
|
||||
/* 0x20 */ J3DGXColor mAmbColor[2];
|
||||
}; // Size: 0x28
|
||||
|
||||
|
||||
@@ -194,7 +194,10 @@ public:
|
||||
J3DMaterial* getMaterial() const { return mpMaterial; }
|
||||
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
|
||||
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
|
||||
void setMaterial(J3DMaterial* pMaterial) { mpMaterial = pMaterial; }
|
||||
void setTexture(J3DTexture* pTexture) { mpTexture = pTexture; }
|
||||
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
|
||||
void setMaterialID(u32 id) { mDiffFlag = id; }
|
||||
void setMaterialAnmID(J3DMaterialAnm* materialAnm) { mpMaterialAnm = materialAnm; }
|
||||
bool isChanged() const { return mDiffFlag & 0x80000000; }
|
||||
bool isEnabled_Diff() const { return mpInitShapePacket->getDisplayListObj() != NULL; }
|
||||
|
||||
@@ -126,6 +126,8 @@ struct J3DTevSwapModeInfo {
|
||||
}; // Size: 0x4
|
||||
|
||||
struct J3DNBTScale;
|
||||
struct J3DTexCoord;
|
||||
void loadNBTScale(J3DNBTScale& param_0);
|
||||
void loadTexCoordGens(u32 param_0, J3DTexCoord* param_1);
|
||||
|
||||
#endif /* J3DTEVS_H */
|
||||
|
||||
@@ -3,15 +3,18 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
enum J3DAnmLoaderDataBaseFlag { J3DLOADER_UNK_FLAG0 };
|
||||
enum J3DAnmLoaderDataBaseFlag {
|
||||
J3DLOADER_UNK_FLAG0,
|
||||
J3DLOADER_UNK_FLAG1,
|
||||
};
|
||||
|
||||
class J3DAnmBase;
|
||||
|
||||
struct J3DAnmLoaderDataBase {
|
||||
/* 80337B40 */ static void* load(void const*, J3DAnmLoaderDataBaseFlag);
|
||||
/* 80337B40 */ static J3DAnmBase* load(void const*, J3DAnmLoaderDataBaseFlag);
|
||||
/* 80338134 */ static void setResource(J3DAnmBase*, void const*);
|
||||
|
||||
static void* load(void const* param_0) { return load(param_0, J3DLOADER_UNK_FLAG0); }
|
||||
static J3DAnmBase* load(void const* param_0) { return load(param_0, J3DLOADER_UNK_FLAG0); }
|
||||
};
|
||||
|
||||
#endif /* J3DANMLOADER_H */
|
||||
|
||||
+173
-123
@@ -2,7 +2,6 @@
|
||||
#define LINKLIST_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
namespace JGadget {
|
||||
struct TLinkListNode {
|
||||
@@ -11,46 +10,84 @@ struct TLinkListNode {
|
||||
mPrev = NULL;
|
||||
}
|
||||
|
||||
TLinkListNode* getNext() { return mNext; }
|
||||
TLinkListNode* getPrev() { return mPrev; }
|
||||
TLinkListNode* getNext() const { return mNext; }
|
||||
TLinkListNode* getPrev() const { return mPrev; }
|
||||
|
||||
public:
|
||||
/* 0x0 */ TLinkListNode* mNext;
|
||||
/* 0x4 */ TLinkListNode* mPrev;
|
||||
}; // Size: 0x8
|
||||
|
||||
struct TNodeLinkList {
|
||||
struct iterator {
|
||||
iterator(TLinkListNode* pNode) { node = pNode; }
|
||||
iterator(const iterator& iter) { *this = iter; }
|
||||
explicit iterator(TLinkListNode* pNode) { node = pNode; }
|
||||
|
||||
iterator& operator++() {
|
||||
node = node->getNext();
|
||||
return *this;
|
||||
return *this;
|
||||
}
|
||||
iterator& operator--() {
|
||||
node = node->getPrev();
|
||||
return *this;
|
||||
return *this;
|
||||
}
|
||||
TLinkListNode* operator->() { return node; }
|
||||
iterator operator++(int) {
|
||||
const iterator old(*this);
|
||||
(void)++*this;
|
||||
return old;
|
||||
}
|
||||
iterator operator--(int) {
|
||||
const iterator old(*this);
|
||||
(void)--*this;
|
||||
return old;
|
||||
}
|
||||
friend bool operator==(iterator a, iterator b) { return a.node == b.node; }
|
||||
friend bool operator!=(iterator a, iterator b) { return !(a == b); }
|
||||
|
||||
inline friend bool operator==(iterator a, iterator b) { return a.node == b.node; }
|
||||
TLinkListNode* operator->() const { return node; }
|
||||
TLinkListNode& operator*() const { return *node; }
|
||||
|
||||
TLinkListNode* node;
|
||||
public:
|
||||
/* 0x00 */ TLinkListNode* node;
|
||||
};
|
||||
|
||||
struct const_iterator {
|
||||
const_iterator(TLinkListNode* pNode) { node = pNode; }
|
||||
explicit const_iterator(TLinkListNode* pNode) { node = pNode; }
|
||||
const_iterator(const const_iterator& iter) { *this = iter; }
|
||||
const_iterator(iterator iter) { *this = iter; }
|
||||
TLinkListNode* operator->() const { return node; }
|
||||
explicit const_iterator(iterator it) { node = it.node; }
|
||||
|
||||
const_iterator& operator++() {
|
||||
node = node->getNext();
|
||||
return *this;
|
||||
return *this;
|
||||
}
|
||||
const_iterator& operator--() {
|
||||
node = node->getPrev();
|
||||
return *this;
|
||||
}
|
||||
const_iterator operator++(int) {
|
||||
const const_iterator old(*this);
|
||||
(void)++*this;
|
||||
return old;
|
||||
}
|
||||
const_iterator operator--(int) {
|
||||
const const_iterator old(*this);
|
||||
(void)--*this;
|
||||
return old;
|
||||
}
|
||||
friend bool operator==(const_iterator a, const_iterator b) { return a.node == b.node; }
|
||||
friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); }
|
||||
|
||||
TLinkListNode* node;
|
||||
friend bool operator==(const_iterator a, iterator b) { return a.node == b.node; }
|
||||
friend bool operator!=(const_iterator a, iterator b) { return !(a == b); }
|
||||
|
||||
const TLinkListNode* operator->() const { return node; }
|
||||
const TLinkListNode& operator*() const { return *node; }
|
||||
|
||||
public:
|
||||
/* 0x00 */ TLinkListNode* node;
|
||||
};
|
||||
|
||||
TNodeLinkList() : ocObject_() { Initialize_(); }
|
||||
~TNodeLinkList();
|
||||
|
||||
void Initialize_() {
|
||||
count = 0;
|
||||
@@ -58,31 +95,47 @@ struct TNodeLinkList {
|
||||
ocObject_.mPrev = &ocObject_;
|
||||
}
|
||||
|
||||
iterator end() {
|
||||
iterator iter(&ocObject_);
|
||||
return iter;
|
||||
}
|
||||
|
||||
iterator begin() {
|
||||
return iterator(ocObject_.getNext());
|
||||
}
|
||||
|
||||
iterator begin() { return iterator(ocObject_.getNext()); }
|
||||
const_iterator begin() const { return const_iterator(ocObject_.getNext()); }
|
||||
iterator end() { return iterator(&ocObject_); }
|
||||
const_iterator end() const { return const_iterator((TLinkListNode*)(&ocObject_)); }
|
||||
u32 size() { return count; }
|
||||
bool empty() { return size() == 0; }
|
||||
iterator pop_front() {
|
||||
return erase(begin());
|
||||
iterator pop_front() { return erase(begin()); }
|
||||
|
||||
iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
|
||||
iterator erase(JGadget::TNodeLinkList::iterator);
|
||||
void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
|
||||
JGadget::TNodeLinkList::iterator);
|
||||
iterator Find(const JGadget::TLinkListNode*);
|
||||
iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
||||
iterator Erase(JGadget::TLinkListNode*);
|
||||
void Remove(JGadget::TLinkListNode*);
|
||||
|
||||
bool Iterator_isEnd_(const_iterator it) const { return it.node == &ocObject_; }
|
||||
template <typename Predicate>
|
||||
void Remove_if(Predicate predicate, TNodeLinkList& tList) {
|
||||
iterator it = begin();
|
||||
|
||||
while (!Iterator_isEnd_(const_iterator(it))) {
|
||||
if (predicate(*it)) {
|
||||
iterator itPrev = it;
|
||||
++it;
|
||||
tList.splice(tList.end(), *this, itPrev);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DCA1C */ ~TNodeLinkList();
|
||||
/* 802DCAA0 */ iterator erase(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList::iterator);
|
||||
/* 802DCA58 */ iterator erase(JGadget::TNodeLinkList::iterator);
|
||||
/* 802DCB08 */ void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
|
||||
JGadget::TNodeLinkList::iterator);
|
||||
/* 802DCBA8 */ iterator Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
||||
/* 802DCBD4 */ iterator Erase(JGadget::TLinkListNode*);
|
||||
/* 802DCBF8 */ void Remove(JGadget::TLinkListNode*);
|
||||
template <typename Predicate>
|
||||
void remove_if(Predicate predicate) {
|
||||
TNodeLinkList list;
|
||||
Remove_if(predicate, list);
|
||||
}
|
||||
|
||||
/* 0x00 */ int count;
|
||||
public:
|
||||
/* 0x00 */ u32 count;
|
||||
/* 0x04 */ TLinkListNode ocObject_;
|
||||
}; // Size: 0xC
|
||||
|
||||
@@ -90,108 +143,105 @@ template <typename T, int I>
|
||||
struct TLinkList : public TNodeLinkList {
|
||||
TLinkList() : TNodeLinkList() {}
|
||||
|
||||
struct iterator : TNodeLinkList::iterator {
|
||||
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
|
||||
T& operator*() { return *operator->(); }
|
||||
T* operator->() {
|
||||
TLinkListNode* node = TNodeLinkList::iterator::operator->();
|
||||
JUT_ASSERT(541, node != 0);
|
||||
return Element_toValue(node);
|
||||
struct iterator {
|
||||
explicit iterator(TNodeLinkList::iterator iter) : base(iter) {}
|
||||
|
||||
iterator& operator++() {
|
||||
++base;
|
||||
return *this;
|
||||
}
|
||||
iterator& operator--() {
|
||||
TNodeLinkList::iterator::operator--();
|
||||
--base;
|
||||
return *this;
|
||||
}
|
||||
// Stack issues. See JStudio::ctb::TControl::getObject
|
||||
inline friend bool operator==(iterator a, iterator b) {
|
||||
TNodeLinkList::iterator ita = a;
|
||||
TNodeLinkList::iterator itb = b;
|
||||
return operator==(ita,itb);
|
||||
iterator operator++(int) {
|
||||
const iterator old(*this);
|
||||
++*this;
|
||||
return old;
|
||||
}
|
||||
inline friend bool operator!=(iterator a, iterator b) { return !(a == b); }
|
||||
iterator operator--(int) {
|
||||
const iterator old(*this);
|
||||
--*this;
|
||||
return old;
|
||||
}
|
||||
friend bool operator==(iterator a, iterator b) { return a.base == b.base; }
|
||||
friend bool operator!=(iterator a, iterator b) { return !(a == b); }
|
||||
|
||||
T* operator->() const { return Element_toValue(base.operator->()); }
|
||||
T& operator*() const { return *operator->(); }
|
||||
|
||||
public:
|
||||
/* 0x00 */ TNodeLinkList::iterator base;
|
||||
};
|
||||
|
||||
struct const_iterator : TNodeLinkList::const_iterator {
|
||||
const_iterator(TNodeLinkList::const_iterator iter) : TNodeLinkList::const_iterator(iter) {}
|
||||
const_iterator(iterator iter) : TNodeLinkList::const_iterator(iter) {}
|
||||
const T* operator->() const {
|
||||
return Element_toValue(TNodeLinkList::const_iterator::operator->());
|
||||
}
|
||||
const T& operator*() const { return *operator->(); }
|
||||
struct const_iterator {
|
||||
explicit const_iterator(TNodeLinkList::const_iterator iter) : base(iter) {}
|
||||
explicit const_iterator(iterator iter) : base(iter.base) {}
|
||||
|
||||
const_iterator& operator++() {
|
||||
TNodeLinkList::const_iterator::operator++();
|
||||
++base;
|
||||
return *this;
|
||||
}
|
||||
|
||||
friend bool operator==(const_iterator a, const_iterator b) { return a == b; }
|
||||
const_iterator& operator--() {
|
||||
--base;
|
||||
return *this;
|
||||
}
|
||||
const_iterator operator++(int) {
|
||||
const const_iterator old(*this);
|
||||
++*this;
|
||||
return old;
|
||||
}
|
||||
const_iterator operator--(int) {
|
||||
const const_iterator old(*this);
|
||||
--*this;
|
||||
return old;
|
||||
}
|
||||
friend bool operator==(const_iterator a, const_iterator b) { return a.base == b.base; }
|
||||
friend bool operator!=(const_iterator a, const_iterator b) { return !(a == b); }
|
||||
|
||||
const T* operator->() const { return Element_toValue(base.operator->()); }
|
||||
const T& operator*() const { return *operator->(); }
|
||||
|
||||
public:
|
||||
/* 0x00 */ TNodeLinkList::const_iterator base;
|
||||
};
|
||||
|
||||
TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; }
|
||||
static T* Element_toValue(TLinkListNode* node) { return (T*)((char*)node - offsetof(T, ocObject_)); }
|
||||
|
||||
iterator Insert(TLinkList::iterator iter, T* element) {
|
||||
TLinkListNode* node = Element_toNode(element);
|
||||
return TNodeLinkList::Insert(iter, node);
|
||||
static const TLinkListNode* Element_toNode(const T* element) {
|
||||
(void)element; // Debug-only assert
|
||||
return reinterpret_cast<const TLinkListNode*>(reinterpret_cast<const char*>(element) - I);
|
||||
}
|
||||
static TLinkListNode* Element_toNode(T* element) {
|
||||
(void)element; // Debug-only assert
|
||||
return reinterpret_cast<TLinkListNode*>(reinterpret_cast<char*>(element) - I);
|
||||
}
|
||||
static const T* Element_toValue(const TLinkListNode* node) {
|
||||
(void)node; // Debug-only assert
|
||||
return reinterpret_cast<const T*>(reinterpret_cast<const char*>(node) + I);
|
||||
}
|
||||
static T* Element_toValue(TLinkListNode* node) {
|
||||
(void)node; // Debug-only assert
|
||||
return reinterpret_cast<T*>(reinterpret_cast<char*>(node) + I);
|
||||
}
|
||||
|
||||
iterator Erase(T* element) {
|
||||
TLinkListNode* node = Element_toNode(element);
|
||||
return ((TNodeLinkList*)this)->Erase(node);
|
||||
iterator Insert(iterator iter, T* element) {
|
||||
return iterator(TNodeLinkList::Insert(iter.base, Element_toNode(element)));
|
||||
}
|
||||
iterator Erase(T* element) { return iterator(TNodeLinkList::Erase(Element_toNode(element))); }
|
||||
|
||||
TLinkList::iterator end() {
|
||||
return iterator(TNodeLinkList::end());
|
||||
}
|
||||
|
||||
TLinkList::const_iterator end() const {
|
||||
return TLinkList::const_iterator(((TLinkList*)this)->end());
|
||||
}
|
||||
|
||||
TLinkList::iterator begin() {
|
||||
return iterator(TNodeLinkList::begin());
|
||||
}
|
||||
|
||||
TLinkList::const_iterator begin() const {
|
||||
return TLinkList::const_iterator(((TLinkList*)this)->begin());
|
||||
}
|
||||
|
||||
void Push_back(T* element) {
|
||||
TLinkList::iterator iter = TLinkList::end();
|
||||
this->Insert(iter, element);
|
||||
}
|
||||
|
||||
T& front() {
|
||||
JUT_ASSERT(642, !empty());
|
||||
return *begin();
|
||||
}
|
||||
|
||||
T& back() {
|
||||
JUT_ASSERT(652, !empty());
|
||||
return *--TLinkList::end();
|
||||
iterator begin() { return iterator(TNodeLinkList::begin()); }
|
||||
const_iterator begin() const { return const_iterator(const_cast<TLinkList*>(this)->begin()); }
|
||||
iterator end() { return iterator(TNodeLinkList::end()); }
|
||||
const_iterator end() const { return const_iterator(const_cast<TLinkList*>(this)->end()); }
|
||||
T& front() { return *begin(); }
|
||||
T& back() { return *--end(); }
|
||||
void Push_front(T* element) { Insert(begin(), element); }
|
||||
void Push_back(T* element) { Insert(end(), element); }
|
||||
iterator Find(const T* element) {
|
||||
return iterator(TNodeLinkList::Find(Element_toNode(element)));
|
||||
}
|
||||
void Remove(T* element) { TNodeLinkList::Remove(Element_toNode(element)); }
|
||||
};
|
||||
|
||||
template<typename T, int I>
|
||||
bool operator==(const typename TLinkList<T, I>::const_iterator iter1, const typename TLinkList<T, I>::const_iterator iter2) {
|
||||
return iter1->node == iter2->node;
|
||||
}
|
||||
|
||||
template<typename T, int I>
|
||||
bool operator!=(const typename TLinkList<T, I>::const_iterator iter1, const typename TLinkList<T, I>::const_iterator iter2) {
|
||||
return !(iter1 == iter2);
|
||||
}
|
||||
|
||||
// template<typename T, int I>
|
||||
// inline bool operator==(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
|
||||
// return iter1->node == iter2->node;
|
||||
// }
|
||||
|
||||
// template<typename T, int I>
|
||||
// inline bool operator!=(typename TLinkList<T, I>::iterator iter1, typename TLinkList<T, I>::iterator iter2) {
|
||||
// return !(iter1 == iter2);
|
||||
// }
|
||||
|
||||
template <typename T, int I>
|
||||
struct TLinkList_factory : public TLinkList<T, I> {
|
||||
virtual ~TLinkList_factory() {}
|
||||
@@ -208,14 +258,14 @@ struct TLinkList_factory : public TLinkList<T, I> {
|
||||
|
||||
template <typename T, int I>
|
||||
struct TEnumerator {
|
||||
inline TEnumerator(typename TLinkList<T,I>::const_iterator _current, typename TLinkList<T,I>::const_iterator _end) :
|
||||
current(_current), end(_end)
|
||||
{}
|
||||
inline TEnumerator(typename TLinkList<T, I>::const_iterator _current,
|
||||
typename TLinkList<T, I>::const_iterator _end)
|
||||
: current(_current), end(_end) {}
|
||||
|
||||
bool isEnd() const { return current.node == end.node; }
|
||||
operator bool() const { return isEnd(); }
|
||||
T& operator*() {
|
||||
T& rv = (T&)*current;
|
||||
T& rv = (T&)*current;
|
||||
++current;
|
||||
return rv;
|
||||
}
|
||||
@@ -226,8 +276,8 @@ struct TEnumerator {
|
||||
|
||||
template <typename T, int I>
|
||||
struct TContainerEnumerator_const : public TEnumerator<T, I> {
|
||||
inline TContainerEnumerator_const(const T* param_0) : TEnumerator<T,I>(param_0->begin(), param_0->end())
|
||||
{}
|
||||
inline TContainerEnumerator_const(const T* param_0)
|
||||
: TEnumerator<T, I>(param_0->begin(), param_0->end()) {}
|
||||
};
|
||||
|
||||
}; // namespace JGadget
|
||||
|
||||
@@ -45,8 +45,9 @@ public:
|
||||
static void setSZSBufferSize(u32 size) { sSZSBufferSize = size; }
|
||||
|
||||
// TODO: fix type
|
||||
static u8 sDvdAramAsyncList[12];
|
||||
static JSUList<JKRADCommand> sDvdAramAsyncList;
|
||||
static u32 sSZSBufferSize;
|
||||
static bool errorRetry;
|
||||
};
|
||||
|
||||
inline JKRAramBlock *JKRDvdToAram(s32 entrynum, u32 p2, JKRExpandSwitch expSwitch, u32 p4, u32 p5, u32 *p6) {
|
||||
|
||||
@@ -23,7 +23,7 @@ public:
|
||||
private:
|
||||
/* 0x00 */ // vtable
|
||||
/* 0x04 */ // JKRArchive
|
||||
/* 0x64 */ s32 field_0x64;
|
||||
/* 0x64 */ s32 mDataOffset;
|
||||
/* 0x68 */ JKRDvdFile* mDvdFile;
|
||||
};
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "JSystem/JGadget/binary.h"
|
||||
#include "JSystem/JGadget/linklist.h"
|
||||
#include "JSystem/JStudio/JStudio/object-id.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace ctb {
|
||||
@@ -134,7 +135,7 @@ struct TControl {
|
||||
TFactory* getFactory() { return pFactory_; }
|
||||
|
||||
/* 0x4 */ TFactory* pFactory_;
|
||||
/* 0x8 */ JGadget::TLinkList<TObject, 2> mList;
|
||||
/* 0x8 */ JGadget::TLinkList<TObject, -12> mList;
|
||||
};
|
||||
|
||||
struct TParse : public JGadget::binary::TParse_header_block {
|
||||
|
||||
@@ -146,7 +146,7 @@ private:
|
||||
/* 0x04 */ u32 _4;
|
||||
/* 0x08 */ u32 _8;
|
||||
/* 0x0C */ TFactory* pFactory;
|
||||
/* 0x10 */ JGadget::TLinkList<TObject, 12> mObjectContainer;
|
||||
/* 0x10 */ JGadget::TLinkList<TObject, -12> mObjectContainer;
|
||||
/* 0x1C */ u32 mStatus;
|
||||
/* 0x20 */ TObject_control mObject_control;
|
||||
/* 0x54 */ s32 _54;
|
||||
|
||||
@@ -89,10 +89,7 @@ public:
|
||||
void scrollToLastLine() { scroll(mMaxLines); }
|
||||
void scrollToFirstLine() { scroll(-mMaxLines); }
|
||||
|
||||
private:
|
||||
/* 0x18 */ JGadget::TLinkListNode mListNode;
|
||||
|
||||
private:
|
||||
/* 0x20 */ u32 field_0x20;
|
||||
/* 0x24 */ int mMaxLines;
|
||||
/* 0x28 */ u8* mBuf;
|
||||
@@ -133,8 +130,10 @@ public:
|
||||
|
||||
static JUTConsoleManager* sManager;
|
||||
|
||||
typedef JGadget::TLinkList<JUTConsole, -offsetof(JUTConsole, mListNode)> ConsoleList;
|
||||
|
||||
private:
|
||||
/* 0x00 */ JGadget::TLinkList<JUTConsole, 4> mLinkList;
|
||||
/* 0x00 */ ConsoleList soLink_;
|
||||
/* 0x0C */ JUTConsole* mActiveConsole;
|
||||
/* 0x10 */ JUTConsole* mDirectConsole;
|
||||
}; // Size: 0x14
|
||||
|
||||
@@ -27,6 +27,7 @@ public:
|
||||
const cXyz& GetEndP(void) const { return mEnd; }
|
||||
cXyz& GetEndP(void) { return mEnd; }
|
||||
cXyz& GetEnd() { return mEnd; }
|
||||
const cXyz& GetEnd() const { return mEnd; }
|
||||
}; // Size = 0x1C
|
||||
|
||||
STATIC_ASSERT(0x1C == sizeof(cM3dGLin));
|
||||
|
||||
@@ -4,4 +4,23 @@
|
||||
#include "dolphin/gd/GDBase.h"
|
||||
#include "dolphin/gd/GDGeometry.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static inline u16 __GDLightID2Index(GXLightID id) {
|
||||
u16 lightIdx = (31 - __cntlzw(id));
|
||||
if (lightIdx > 7)
|
||||
lightIdx = 0;
|
||||
return lightIdx;
|
||||
}
|
||||
|
||||
static inline u16 __GDLightID2Offset(GXLightID id) {
|
||||
return __GDLightID2Index(id) * 0x10;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* GD_H */
|
||||
|
||||
Reference in New Issue
Block a user