mirror of
https://github.com/zeldaret/tp
synced 2026-07-08 14:36:36 -04:00
work on J3DMaterialFactory and J3DMaterialFactory_v21 (#2012)
This commit is contained in:
@@ -5,14 +5,17 @@
|
||||
#include "JSystem/J3DGraphBase/J3DTevs.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
|
||||
struct J3DGXColorS10 : public GXColorS10 {
|
||||
/* 8000E460 */ J3DGXColorS10() {}
|
||||
J3DGXColorS10(J3DGXColorS10 const& other) { __memcpy(this, &other, sizeof(J3DGXColorS10)); }
|
||||
J3DGXColorS10(GXColorS10 const& color) : GXColorS10(color) {}
|
||||
};
|
||||
|
||||
struct J3DGXColor : public GXColor {
|
||||
/* 8000E538 */ J3DGXColor() {}
|
||||
J3DGXColor(J3DGXColor const& other) { __memcpy(this, &other, sizeof(J3DGXColor)); }
|
||||
J3DGXColor(GXColor const& color) : GXColor(color) {}
|
||||
};
|
||||
|
||||
struct J3DNBTScale : public J3DNBTScaleInfo {
|
||||
@@ -52,7 +55,21 @@ public:
|
||||
/* 80317334 */ virtual J3DNBTScale* getNBTScale();
|
||||
/* 80317428 */ virtual bool getTexMtxOffset() const;
|
||||
/* 80317430 */ virtual void setTexMtxOffset(u32);
|
||||
/* 803171DC */ virtual ~J3DTexGenBlock();
|
||||
/* 803171DC */ virtual ~J3DTexGenBlock() {}
|
||||
};
|
||||
|
||||
struct J3DTexGenBlockNull : public J3DTexGenBlock {
|
||||
/* 80332AA0 */ virtual void calc(f32 const (*)[4]); // {}
|
||||
/* 80332AA4 */ virtual void calcWithoutViewMtx(f32 const (*)[4]); // {}
|
||||
/* 80332AA8 */ virtual void calcPostTexMtx(f32 const (*)[4]); // {}
|
||||
/* 80332AAC */ virtual void calcPostTexMtxWithoutViewMtx(f32 const (*)[4]); // {}
|
||||
/* 80332AB0 */ virtual void load(); // {}
|
||||
/* 80332AB4 */ virtual void patch(); // {}
|
||||
/* 80332AB8 */ virtual void diff(u32); // {}
|
||||
/* 80332ABC */ virtual void diffTexMtx(); // {}
|
||||
/* 80332AC0 */ virtual void diffTexGen(); // {}
|
||||
/* 80332AC4 */ virtual u32 getType(); // { return 'TGNL'; }
|
||||
/* 80332AD0 */ virtual ~J3DTexGenBlockNull(); // {}
|
||||
};
|
||||
|
||||
class J3DTexGenBlockPatched : public J3DTexGenBlock {
|
||||
@@ -188,14 +205,25 @@ public:
|
||||
/* 80322964 */ virtual bool getTevRegOffset() const;
|
||||
/* 80321FE0 */ virtual void setTexNoOffset(u32);
|
||||
/* 8032296C */ virtual void setTevRegOffset(u32);
|
||||
/* 80317224 */ virtual ~J3DTevBlock();
|
||||
/* 80317224 */ virtual ~J3DTevBlock() {}
|
||||
|
||||
private:
|
||||
protected:
|
||||
/* 8031E098 */ void indexToPtr_private(u32);
|
||||
|
||||
/* 0x4 */ u32 mTexNoOffset;
|
||||
};
|
||||
|
||||
class J3DTevBlockNull : public J3DTevBlock {
|
||||
public:
|
||||
J3DTevBlockNull() { initialize(); }
|
||||
/* 803176D4 */ void initialize();
|
||||
/* 80332A0C */ virtual void reset(J3DTevBlock*); // {}
|
||||
/* 80332A10 */ virtual void ptrToIndex(); // {}
|
||||
/* 80332A14 */ virtual void indexToPtr(); // { indexToPtr_private(mTexNoOffset); }
|
||||
/* 80332A38 */ virtual u32 getType(); // { return 'TVNL'; }
|
||||
/* 80332A44 */ virtual ~J3DTevBlockNull(); // {}
|
||||
};
|
||||
|
||||
class J3DTevBlockPatched : public J3DTevBlock {
|
||||
public:
|
||||
J3DTevBlockPatched() {
|
||||
@@ -259,10 +287,6 @@ private:
|
||||
/* 0xD4 */ u32 mTevRegOffset;
|
||||
}; // Size: 0xD8
|
||||
|
||||
class J3DTevBlockNull : public J3DTevBlock {
|
||||
/* 803176D4 */ void initialize();
|
||||
};
|
||||
|
||||
class J3DTevBlock4 : public J3DTevBlock {
|
||||
public:
|
||||
J3DTevBlock4() {
|
||||
@@ -532,19 +556,19 @@ private:
|
||||
extern const u16 j3dDefaultZModeID;
|
||||
|
||||
inline u16 calcZModeID(u8 param_0, u8 param_1, u8 param_2) {
|
||||
return ((param_1 * 2) & 0x1FE) + (param_0 * 0x10) + param_2;
|
||||
return param_1 * 2 + param_0 * 0x10 + param_2;
|
||||
}
|
||||
|
||||
struct J3DZModeInfo {
|
||||
/* 0x0 */ u8 field_0x0;
|
||||
/* 0x1 */ u8 field_0x1;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 pad;
|
||||
};
|
||||
|
||||
struct J3DZMode {
|
||||
J3DZMode() {
|
||||
mZModeID = j3dDefaultZModeID;
|
||||
}
|
||||
J3DZMode() : mZModeID(j3dDefaultZModeID) {}
|
||||
J3DZMode(J3DZModeInfo const& info) : mZModeID(calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2)) {}
|
||||
|
||||
void setZModeInfo(const J3DZModeInfo& info) {
|
||||
mZModeID = calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2);
|
||||
@@ -566,18 +590,16 @@ struct J3DBlendInfo {
|
||||
extern const J3DBlendInfo j3dDefaultBlendInfo;
|
||||
|
||||
struct J3DBlend : public J3DBlendInfo {
|
||||
J3DBlend() {
|
||||
*(J3DBlendInfo*)this = j3dDefaultBlendInfo;
|
||||
}
|
||||
J3DBlend() : J3DBlendInfo(j3dDefaultBlendInfo) {}
|
||||
J3DBlend(J3DBlendInfo const& info) : J3DBlendInfo(info) {}
|
||||
};
|
||||
|
||||
extern const J3DFogInfo j3dDefaultFogInfo;
|
||||
|
||||
struct J3DFog : public J3DFogInfo {
|
||||
J3DFog() {
|
||||
*getFogInfo() = j3dDefaultFogInfo;
|
||||
}
|
||||
J3DFogInfo* getFogInfo() { return (J3DFogInfo*)this; }
|
||||
J3DFog() { *(J3DFogInfo*)this = j3dDefaultFogInfo; }
|
||||
J3DFogInfo* getFogInfo() { return this; }
|
||||
void setFogInfo(J3DFogInfo info) { *(J3DFogInfo*)this = info; }
|
||||
};
|
||||
|
||||
struct J3DAlphaCompInfo {
|
||||
@@ -593,25 +615,36 @@ struct J3DAlphaCompInfo {
|
||||
|
||||
extern const u16 j3dDefaultAlphaCmpID;
|
||||
|
||||
inline u32 calcAlphaCmpID(u32 param_1, u32 param_2, u32 param_3) {
|
||||
return ((param_1 & 0xff) << 5) + ((param_2 & 0xff) << 3) + (param_3 & 0xff);
|
||||
}
|
||||
|
||||
// matches for `J3DMaterialFactory::newAlphaComp` but fails for `d_resorce::addWarpMaterial`
|
||||
// inline u32 calcAlphaCmpID(u8 param_1, u8 param_2, u8 param_3) {
|
||||
// return param_1 * 0x20 + param_2 * 8 + param_3;
|
||||
// }
|
||||
|
||||
struct J3DAlphaComp {
|
||||
J3DAlphaComp() {
|
||||
field_0x0 = j3dDefaultAlphaCmpID;
|
||||
mRef0 = 0;
|
||||
mRef1 = 0;
|
||||
}
|
||||
J3DAlphaComp() : mID(j3dDefaultAlphaCmpID), mRef0(0), mRef1(0) {}
|
||||
J3DAlphaComp(u16 id) : mID(id), mRef0(0), mRef1(0) {}
|
||||
J3DAlphaComp(J3DAlphaCompInfo const& info) :
|
||||
mID(calcAlphaCmpID(info.field_0x0, info.mRef0, info.mRef1)),
|
||||
mRef0(info.field_0x1),
|
||||
mRef1(info.field_0x4)
|
||||
{}
|
||||
|
||||
void setAlphaCompInfo(const J3DAlphaCompInfo& param_1) {
|
||||
mRef0 = param_1.field_0x1;
|
||||
mRef1 = param_1.field_0x4;
|
||||
u32 p1_mref1 = param_1.mRef1;
|
||||
field_0x0 = calcAlphaCmpID(param_1.field_0x0, param_1.mRef0, p1_mref1);
|
||||
mID = calcAlphaCmpID(param_1.field_0x0, param_1.mRef0, p1_mref1);
|
||||
|
||||
// this matches for `dKy_bg_MAxx_proc` but causes `addWarpMaterial` to fail,
|
||||
// while the above matches for `addWarpMaterial` but causes `dKy_bg_MAxx_proc` to fail?
|
||||
// field_0x0 = calcAlphaCmpID(param_1.field_0x0, param_1.mRef0, param_1.mRef1);
|
||||
// mID = calcAlphaCmpID(param_1.field_0x0, param_1.mRef0, param_1.mRef1);
|
||||
}
|
||||
|
||||
/* 0x00 */ u16 field_0x0;
|
||||
/* 0x00 */ u16 mID;
|
||||
/* 0x02 */ u8 mRef0;
|
||||
/* 0x03 */ u8 mRef1;
|
||||
}; // Size: 0x4
|
||||
@@ -646,7 +679,13 @@ public:
|
||||
/* 80317384 */ virtual bool getDither() const;
|
||||
/* 8031738C */ virtual bool getFogOffset() const;
|
||||
/* 80317394 */ virtual void setFogOffset(u32);
|
||||
virtual ~J3DPEBlock();
|
||||
virtual ~J3DPEBlock() {}
|
||||
};
|
||||
|
||||
struct J3DPEBlockNull : public J3DPEBlock {
|
||||
/* 803329A0 */ virtual void load(); // {}
|
||||
/* 803329A4 */ virtual u32 getType(); // { return 'PENL'; }
|
||||
/* 803329B0 */ virtual ~J3DPEBlockNull(); // {}
|
||||
};
|
||||
|
||||
class J3DPEBlockXlu : public J3DPEBlock {
|
||||
@@ -763,24 +802,22 @@ struct J3DIndTexCoordScaleInfo {
|
||||
/* 0x1 */ u8 mScaleT;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
};
|
||||
}; // Size: 0x4
|
||||
|
||||
struct J3DIndTexCoordScale {
|
||||
/* 8000E024 */ ~J3DIndTexCoordScale();
|
||||
/* 8000E0E4 */ J3DIndTexCoordScale();
|
||||
extern J3DIndTexCoordScaleInfo j3dDefaultIndTexCoordScaleInfo;
|
||||
|
||||
/* 0x0 */ u8 mScaleS;
|
||||
/* 0x1 */ u8 mScaleT;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
};
|
||||
struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo {
|
||||
/* 8000E0E4 */ J3DIndTexCoordScale() : J3DIndTexCoordScaleInfo(j3dDefaultIndTexCoordScaleInfo) {}
|
||||
J3DIndTexCoordScale(J3DIndTexCoordScaleInfo const& info) : J3DIndTexCoordScaleInfo(info) {}
|
||||
/* 8000E024 */ ~J3DIndTexCoordScale() {}
|
||||
}; // Size: 0x4
|
||||
|
||||
struct J3DIndTexMtx {
|
||||
/* 8000E064 */ ~J3DIndTexMtx();
|
||||
/* 8000E0F0 */ J3DIndTexMtx();
|
||||
extern J3DIndTexMtxInfo const j3dDefaultIndTexMtxInfo;
|
||||
|
||||
/* 0x00 */ Mtx23 mOffsetMtx;
|
||||
/* 0x18 */ u8 mScaleExp;
|
||||
struct J3DIndTexMtx : public J3DIndTexMtxInfo {
|
||||
/* 8000E0F0 */ J3DIndTexMtx() { *(J3DIndTexMtxInfo*)this = j3dDefaultIndTexMtxInfo; }
|
||||
J3DIndTexMtx(J3DIndTexMtxInfo const& info) { *(J3DIndTexMtxInfo*)this = info; }
|
||||
/* 8000E064 */ ~J3DIndTexMtx() {}
|
||||
}; // Size: 0x1C
|
||||
|
||||
struct J3DIndTexOrderInfo {
|
||||
@@ -788,16 +825,14 @@ struct J3DIndTexOrderInfo {
|
||||
/* 0x1 */ u8 mCoord;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
};
|
||||
}; // Size: 0x04
|
||||
|
||||
struct J3DIndTexOrder {
|
||||
/* 8000E128 */ J3DIndTexOrder();
|
||||
extern J3DIndTexOrderInfo j3dDefaultIndTexOrderNull;
|
||||
|
||||
/* 0x0 */ u8 mMap;
|
||||
/* 0x1 */ u8 mCoord;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
};
|
||||
struct J3DIndTexOrder : public J3DIndTexOrderInfo {
|
||||
/* 8000E128 */ J3DIndTexOrder() : J3DIndTexOrderInfo(j3dDefaultIndTexOrderNull) {}
|
||||
J3DIndTexOrder(J3DIndTexOrderInfo const& info) : J3DIndTexOrderInfo(info) {}
|
||||
}; // Size: 0x04
|
||||
|
||||
class J3DIndBlock {
|
||||
public:
|
||||
@@ -820,6 +855,15 @@ public:
|
||||
/* 8031726C */ virtual ~J3DIndBlock();
|
||||
};
|
||||
|
||||
class J3DIndBlockNull : public J3DIndBlock {
|
||||
public:
|
||||
/* 803173A0 */ virtual void reset(J3DIndBlock*);
|
||||
/* 80317398 */ virtual void diff(u32);
|
||||
/* 8031739C */ virtual void load();
|
||||
/* 803173A4 */ virtual u32 getType();
|
||||
/* 803173B0 */ virtual ~J3DIndBlockNull();
|
||||
};
|
||||
|
||||
class J3DIndBlockFull : public J3DIndBlock {
|
||||
public:
|
||||
J3DIndBlockFull() {
|
||||
@@ -852,15 +896,6 @@ private:
|
||||
/* 0x6C */ J3DIndTexCoordScale mIndTexCoordScale[4];
|
||||
}; // Size: 0x7C
|
||||
|
||||
class J3DIndBlockNull : public J3DIndBlock {
|
||||
public:
|
||||
/* 803173A0 */ virtual void reset(J3DIndBlock*);
|
||||
/* 80317398 */ virtual void diff(u32);
|
||||
/* 8031739C */ virtual void load();
|
||||
/* 803173A4 */ virtual u32 getType();
|
||||
/* 803173B0 */ virtual ~J3DIndBlockNull();
|
||||
};
|
||||
|
||||
struct J3DColorChanInfo {
|
||||
/* 0x0 */ u8 field_0x0;
|
||||
/* 0x1 */ u8 field_0x1;
|
||||
@@ -868,10 +903,41 @@ struct J3DColorChanInfo {
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
/* 0x4 */ u8 field_0x4;
|
||||
/* 0x5 */ u8 field_0x5;
|
||||
/* 0x6 */ u8 pad[2];
|
||||
};
|
||||
|
||||
extern J3DColorChanInfo j3dDefaultColorChanInfo;
|
||||
|
||||
struct J3DColorChan {
|
||||
/* 8000E47C */ J3DColorChan();
|
||||
/* 8000E47C */ J3DColorChan() {
|
||||
setColorChanInfo(j3dDefaultColorChanInfo);
|
||||
}
|
||||
J3DColorChan(J3DColorChanInfo const& info) {
|
||||
setColorChanInfo(info);
|
||||
}
|
||||
void setColorChanInfo(J3DColorChanInfo const& info) {
|
||||
mColorChanID = calcColorChanID(info.field_0x0, info.field_0x1, info.field_0x2,
|
||||
info.field_0x3, info.field_0x4, info.field_0x5 == 0xff ? 0 : info.field_0x5);
|
||||
}
|
||||
u16 calcColorChanID(u16 param_0, u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) {
|
||||
// if (param_4 == 0) {
|
||||
// param_3 = 0;
|
||||
// }
|
||||
u32 b0 = ((param_2 & 1) != 0);
|
||||
u32 b1 = ((param_2 & 2) != 0);
|
||||
u32 b2 = ((param_2 & 4) != 0);
|
||||
u32 b3 = ((param_2 & 8) != 0);
|
||||
u32 b4 = ((param_2 & 0x10) != 0);
|
||||
u32 b5 = ((param_2 & 0x20) != 0);
|
||||
u32 b6 = ((param_2 & 0x40) != 0);
|
||||
u32 b7 = ((param_2 & 0x80) != 0);
|
||||
return param_1 | (param_0 << 1) | (b0 << 2) | (b1 << 3) | (b2 << 4) | (b3 << 5) |
|
||||
(param_5 << 6) | (param_3 << 7) | ((param_4 != 2) << 9) | ((param_4 != 0) << 10) |
|
||||
(b4 << 11) | (b5 << 12) | (b6 << 13) | (b7 << 14);
|
||||
// return (b7 << 14) | (b6 << 13) | (b5 << 12) | (b4 << 11) |
|
||||
// ((param_4 != 0) << 10) | ((param_4 != 2) << 9) | ((param_3 != 0) << 7) | ((param_5 != 0) << 6) |
|
||||
// (b3 << 5) | (b2 << 4) | (b1 << 3) | (b0 << 2) | ((param_0 != 0) << 1) | param_1;
|
||||
}
|
||||
u8 getLightMask() { return (((mColorChanID & 0x7800) >> 7) | (mColorChanID & 0x3c) >> 2); }
|
||||
void setLightMask(u8 param_1) {
|
||||
mColorChanID = (mColorChanID & ~0x3c) | ((param_1 & 0xf) << 2);
|
||||
@@ -916,7 +982,12 @@ public:
|
||||
/* 8031746C */ virtual bool getColorChanOffset() const;
|
||||
/* 80317474 */ virtual void setMatColorOffset(u32);
|
||||
/* 80317478 */ virtual void setColorChanOffset(u32);
|
||||
/* 80317138 */ virtual ~J3DColorBlock();
|
||||
/* 80317138 */ virtual ~J3DColorBlock() {}
|
||||
};
|
||||
|
||||
struct J3DColorBlockNull : public J3DColorBlock {
|
||||
/* 80332B2C */ virtual u32 getType(); // { return 'CLNL'; }
|
||||
/* 80332B38 */ virtual ~J3DColorBlockNull(); // {}
|
||||
};
|
||||
|
||||
class J3DColorBlockLightOn : public J3DColorBlock {
|
||||
|
||||
@@ -1,128 +1,129 @@
|
||||
#ifndef J3DMATERIAL_H
|
||||
#define J3DMATERIAL_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DJoint;
|
||||
class J3DMaterialAnm;
|
||||
|
||||
class J3DMaterial {
|
||||
public:
|
||||
/* 803157A0 */ static J3DColorBlock* createColorBlock(u32);
|
||||
/* 803159A0 */ static J3DTexGenBlock* createTexGenBlock(u32);
|
||||
/* 80315B04 */ static J3DTevBlock* createTevBlock(int);
|
||||
/* 80315E78 */ static J3DIndBlock* createIndBlock(int);
|
||||
/* 80315F60 */ static J3DPEBlock* createPEBlock(u32, u32);
|
||||
/* 80316100 */ static u32 calcSizeColorBlock(u32);
|
||||
/* 80316150 */ static u32 calcSizeTexGenBlock(u32);
|
||||
/* 8031617C */ static u32 calcSizeTevBlock(int);
|
||||
/* 803161C4 */ static u32 calcSizeIndBlock(int);
|
||||
/* 803161D8 */ static u32 calcSizePEBlock(u32, u32);
|
||||
/* 80316240 */ void initialize();
|
||||
/* 80316290 */ u32 countDLSize();
|
||||
/* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*);
|
||||
/* 80316AB0 */ void setCurrentMtx();
|
||||
/* 80316AC8 */ void calcCurrentMtx();
|
||||
/* 80316D68 */ void copy(J3DMaterial*);
|
||||
/* 80316E90 */ s32 newSharedDisplayList(u32);
|
||||
/* 80316F24 */ s32 newSingleSharedDisplayList(u32);
|
||||
|
||||
/* 803169DC */ virtual void calc(f32 const (*)[4]);
|
||||
/* 80316A54 */ virtual void calcDiffTexMtx(f32 const (*)[4]);
|
||||
/* 80316620 */ virtual void makeDisplayList();
|
||||
/* 80316668 */ virtual void makeSharedDisplayList();
|
||||
/* 8031668C */ virtual void load();
|
||||
/* 803166DC */ virtual void loadSharedDL();
|
||||
/* 80316740 */ virtual void patch();
|
||||
/* 803167D8 */ virtual void diff(u32);
|
||||
/* 80316E14 */ virtual void reset();
|
||||
/* 80316E70 */ virtual void change();
|
||||
|
||||
J3DMaterial() { initialize(); }
|
||||
~J3DMaterial() {}
|
||||
J3DMaterial* getNext() const { return mNext; }
|
||||
J3DShape* getShape() const { return mShape; }
|
||||
J3DTevBlock* getTevBlock() const { return mTevBlock; }
|
||||
J3DColorBlock* getColorBlock() const { return mColorBlock; }
|
||||
J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
|
||||
J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; }
|
||||
J3DIndBlock* getIndBlock() const { return mIndBlock; }
|
||||
J3DShape* getShape() { return mShape; }
|
||||
J3DJoint* getJoint() { return mJoint; }
|
||||
J3DMaterialAnm* getMaterialAnm() const {
|
||||
if ((u32)mMaterialAnm < 0xC0000000) {
|
||||
return mMaterialAnm;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); }
|
||||
u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); }
|
||||
GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
|
||||
GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); }
|
||||
J3DFog* getFog() { return mPEBlock->getFog(); }
|
||||
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
|
||||
u16 getIndex() { return mIndex; }
|
||||
bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; }
|
||||
J3DPEBlock* getPEBlock() { return mPEBlock; }
|
||||
void onInvalid() { mInvalid = 1; }
|
||||
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); }
|
||||
u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); }
|
||||
|
||||
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
|
||||
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
|
||||
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
|
||||
void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); }
|
||||
|
||||
public:
|
||||
/* 0x04 */ J3DMaterial* mNext;
|
||||
/* 0x08 */ J3DShape* mShape;
|
||||
/* 0x0C */ J3DJoint* mJoint;
|
||||
/* 0x10 */ u32 mMaterialMode;
|
||||
/* 0x14 */ u16 mIndex;
|
||||
/* 0x18 */ u32 mInvalid;
|
||||
/* 0x1C */ u32 field_0x1c;
|
||||
/* 0x20 */ u32 mDiffFlag;
|
||||
/* 0x24 */ J3DColorBlock* mColorBlock;
|
||||
/* 0x28 */ J3DTexGenBlock* mTexGenBlock;
|
||||
/* 0x2C */ J3DTevBlock* mTevBlock;
|
||||
/* 0x30 */ J3DIndBlock* mIndBlock;
|
||||
/* 0x34 */ J3DPEBlock* mPEBlock;
|
||||
/* 0x38 */ J3DMaterial* mpOrigMaterial;
|
||||
/* 0x3C */ J3DMaterialAnm* mMaterialAnm;
|
||||
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
|
||||
/* 0x48 */ J3DDisplayListObj* mSharedDLObj;
|
||||
};
|
||||
|
||||
class J3DPatchedMaterial : public J3DMaterial {
|
||||
public:
|
||||
/* 80316FB8 */ void initialize();
|
||||
|
||||
/* 80316FD8 */ virtual void makeDisplayList();
|
||||
/* 80316FDC */ virtual void makeSharedDisplayList();
|
||||
/* 80316FE0 */ virtual void load();
|
||||
/* 80316FFC */ virtual void loadSharedDL();
|
||||
/* 8031703C */ virtual void reset();
|
||||
/* 80317040 */ virtual void change();
|
||||
};
|
||||
|
||||
class J3DLockedMaterial : public J3DMaterial {
|
||||
public:
|
||||
/* 80317044 */ void initialize();
|
||||
|
||||
/* 803170D0 */ virtual void calc(f32 const (*)[4]);
|
||||
/* 80317064 */ virtual void makeDisplayList();
|
||||
/* 80317068 */ virtual void makeSharedDisplayList();
|
||||
/* 8031706C */ virtual void load();
|
||||
/* 80317088 */ virtual void loadSharedDL();
|
||||
/* 803170C8 */ virtual void patch();
|
||||
/* 803170CC */ virtual void diff(u32);
|
||||
/* 803170D4 */ virtual void reset();
|
||||
/* 803170D8 */ virtual void change();
|
||||
};
|
||||
|
||||
#endif /* J3DMATERIAL_H */
|
||||
#ifndef J3DMATERIAL_H
|
||||
#define J3DMATERIAL_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DJoint;
|
||||
class J3DMaterialAnm;
|
||||
|
||||
class J3DMaterial {
|
||||
public:
|
||||
/* 803157A0 */ static J3DColorBlock* createColorBlock(u32);
|
||||
/* 803159A0 */ static J3DTexGenBlock* createTexGenBlock(u32);
|
||||
/* 80315B04 */ static J3DTevBlock* createTevBlock(int);
|
||||
/* 80315E78 */ static J3DIndBlock* createIndBlock(int);
|
||||
/* 80315F60 */ static J3DPEBlock* createPEBlock(u32, u32);
|
||||
/* 80316100 */ static u32 calcSizeColorBlock(u32);
|
||||
/* 80316150 */ static u32 calcSizeTexGenBlock(u32);
|
||||
/* 8031617C */ static u32 calcSizeTevBlock(int);
|
||||
/* 803161C4 */ static u32 calcSizeIndBlock(int);
|
||||
/* 803161D8 */ static u32 calcSizePEBlock(u32, u32);
|
||||
/* 80316240 */ void initialize();
|
||||
/* 80316290 */ u32 countDLSize();
|
||||
/* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*);
|
||||
/* 80316AB0 */ void setCurrentMtx();
|
||||
/* 80316AC8 */ void calcCurrentMtx();
|
||||
/* 80316D68 */ void copy(J3DMaterial*);
|
||||
/* 80316E90 */ s32 newSharedDisplayList(u32);
|
||||
/* 80316F24 */ s32 newSingleSharedDisplayList(u32);
|
||||
|
||||
/* 803169DC */ virtual void calc(f32 const (*)[4]);
|
||||
/* 80316A54 */ virtual void calcDiffTexMtx(f32 const (*)[4]);
|
||||
/* 80316620 */ virtual void makeDisplayList();
|
||||
/* 80316668 */ virtual void makeSharedDisplayList();
|
||||
/* 8031668C */ virtual void load();
|
||||
/* 803166DC */ virtual void loadSharedDL();
|
||||
/* 80316740 */ virtual void patch();
|
||||
/* 803167D8 */ virtual void diff(u32);
|
||||
/* 80316E14 */ virtual void reset();
|
||||
/* 80316E70 */ virtual void change();
|
||||
|
||||
J3DMaterial() { initialize(); }
|
||||
~J3DMaterial() {}
|
||||
J3DMaterial* getNext() const { return mNext; }
|
||||
J3DShape* getShape() const { return mShape; }
|
||||
J3DTevBlock* getTevBlock() const { return mTevBlock; }
|
||||
J3DColorBlock* getColorBlock() const { return mColorBlock; }
|
||||
J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
|
||||
J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; }
|
||||
J3DIndBlock* getIndBlock() const { return mIndBlock; }
|
||||
J3DShape* getShape() { return mShape; }
|
||||
J3DJoint* getJoint() { return mJoint; }
|
||||
J3DMaterialAnm* getMaterialAnm() const {
|
||||
if ((u32)mMaterialAnm < 0xC0000000) {
|
||||
return mMaterialAnm;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); }
|
||||
u16 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); }
|
||||
GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
|
||||
GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); }
|
||||
J3DFog* getFog() { return mPEBlock->getFog(); }
|
||||
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
|
||||
u16 getIndex() { return mIndex; }
|
||||
bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; }
|
||||
J3DPEBlock* getPEBlock() { return mPEBlock; }
|
||||
void onInvalid() { mInvalid = 1; }
|
||||
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); }
|
||||
u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); }
|
||||
|
||||
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
|
||||
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
|
||||
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
|
||||
void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); }
|
||||
|
||||
public:
|
||||
/* 0x04 */ J3DMaterial* mNext;
|
||||
/* 0x08 */ J3DShape* mShape;
|
||||
/* 0x0C */ J3DJoint* mJoint;
|
||||
/* 0x10 */ u32 mMaterialMode;
|
||||
/* 0x14 */ u16 mIndex;
|
||||
/* 0x18 */ u32 mInvalid;
|
||||
/* 0x1C */ u32 field_0x1c;
|
||||
/* 0x20 */ u32 mDiffFlag;
|
||||
/* 0x24 */ J3DColorBlock* mColorBlock;
|
||||
/* 0x28 */ J3DTexGenBlock* mTexGenBlock;
|
||||
/* 0x2C */ J3DTevBlock* mTevBlock;
|
||||
/* 0x30 */ J3DIndBlock* mIndBlock;
|
||||
/* 0x34 */ J3DPEBlock* mPEBlock;
|
||||
/* 0x38 */ J3DMaterial* mpOrigMaterial;
|
||||
/* 0x3C */ J3DMaterialAnm* mMaterialAnm;
|
||||
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
|
||||
/* 0x48 */ J3DDisplayListObj* mSharedDLObj;
|
||||
};
|
||||
|
||||
class J3DPatchedMaterial : public J3DMaterial {
|
||||
public:
|
||||
/* 80316FB8 */ void initialize();
|
||||
|
||||
/* 80316FD8 */ virtual void makeDisplayList();
|
||||
/* 80316FDC */ virtual void makeSharedDisplayList();
|
||||
/* 80316FE0 */ virtual void load();
|
||||
/* 80316FFC */ virtual void loadSharedDL();
|
||||
/* 8031703C */ virtual void reset();
|
||||
/* 80317040 */ virtual void change();
|
||||
};
|
||||
|
||||
class J3DLockedMaterial : public J3DMaterial {
|
||||
public:
|
||||
J3DLockedMaterial() { initialize(); }
|
||||
/* 80317044 */ void initialize();
|
||||
|
||||
/* 803170D0 */ virtual void calc(f32 const (*)[4]);
|
||||
/* 80317064 */ virtual void makeDisplayList();
|
||||
/* 80317068 */ virtual void makeSharedDisplayList();
|
||||
/* 8031706C */ virtual void load();
|
||||
/* 80317088 */ virtual void loadSharedDL();
|
||||
/* 803170C8 */ virtual void patch();
|
||||
/* 803170CC */ virtual void diff(u32);
|
||||
/* 803170D4 */ virtual void reset();
|
||||
/* 803170D8 */ virtual void change();
|
||||
};
|
||||
|
||||
#endif /* J3DMATERIAL_H */
|
||||
|
||||
@@ -1,152 +1,158 @@
|
||||
#ifndef J3DSHAPE_H
|
||||
#define J3DSHAPE_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DCurrentMtxInfo {
|
||||
public:
|
||||
u32 mMtxIdxRegA;
|
||||
u32 mMtxIdxRegB;
|
||||
};
|
||||
|
||||
static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
|
||||
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
|
||||
GFX_FIFO(u8) = cmd;
|
||||
GFX_FIFO(u32) = param;
|
||||
}
|
||||
|
||||
static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
|
||||
GFX_FIFO(u8) = GX_CMD_LOAD_XF_REG;
|
||||
GFX_FIFO(u16) = (len - 1);
|
||||
GFX_FIFO(u16) = cmd;
|
||||
}
|
||||
|
||||
class J3DCurrentMtx : public J3DCurrentMtxInfo {
|
||||
public:
|
||||
J3DCurrentMtx() {
|
||||
mMtxIdxRegA = 0x3cf3cf00;
|
||||
mMtxIdxRegB = 0x00f3cf3c;
|
||||
}
|
||||
|
||||
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
|
||||
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
|
||||
|
||||
inline void load() const {
|
||||
J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
|
||||
J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
|
||||
J3DFifoWriteXFCmd(0x1018, 2);
|
||||
GFX_FIFO(u32) = getMtxIdxRegA();
|
||||
GFX_FIFO(u32) = getMtxIdxRegB();
|
||||
}
|
||||
|
||||
void setCurrentTexMtx(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
|
||||
u8 param_5, u8 param_6, u8 param_7, u8 param_8) {
|
||||
mMtxIdxRegA = ((param_1 & 0xff) << 6) | (param_2 << 0xc)| (param_3 << 0x12) | (param_4 << 0x18);
|
||||
mMtxIdxRegB = (param_5) | param_6 << 6 | param_7 << 0xc | param_8 << 0x12;
|
||||
}
|
||||
};
|
||||
|
||||
class J3DMaterial;
|
||||
class J3DVertexData;
|
||||
class J3DDrawMtxData;
|
||||
|
||||
enum J3DShpFlag {
|
||||
J3DShpFlag_Visible = 0x0001,
|
||||
J3DShpFlag_SkinPosCpu = 0x0004,
|
||||
J3DShpFlag_SkinNrmCpu = 0x0008,
|
||||
J3DShpFlag_Hidden = 0x0010,
|
||||
J3DShpFlag_EnableLod = 0x0100,
|
||||
J3DShpFlag_NoMtx = 0x0200,
|
||||
};
|
||||
|
||||
class J3DShape {
|
||||
public:
|
||||
J3DShape() {
|
||||
initialize();
|
||||
}
|
||||
|
||||
enum {
|
||||
kVcdVatDLSize = 0xC0,
|
||||
};
|
||||
|
||||
/* 80314B48 */ void initialize();
|
||||
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
|
||||
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
/* 80314E28 */ u32 countBumpMtxNum() const;
|
||||
/* 80314EEC */ void loadVtxArray() const;
|
||||
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
|
||||
/* 80314F98 */ void makeVtxArrayCmd();
|
||||
/* 80315260 */ void makeVcdVatCmd();
|
||||
/* 80315300 */ void loadPreDrawSetting() const;
|
||||
/* 80315398 */ void setArrayAndBindPipeline() const;
|
||||
|
||||
/* 803155E0 */ virtual void draw() const;
|
||||
/* 8031544C */ virtual void drawFast() const;
|
||||
/* 80315628 */ virtual void simpleDraw() const;
|
||||
/* 803156AC */ virtual void simpleDrawCache() const;
|
||||
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
void offFlag(u32 flag) { mFlags &= ~flag; }
|
||||
bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
|
||||
void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
|
||||
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
|
||||
void* getVcdVatCmd() const { return mVcdVatCmd; }
|
||||
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = (u8*)pVatCmd; }
|
||||
void show() { offFlag(J3DShpFlag_Visible); }
|
||||
void hide() { onFlag(J3DShpFlag_Visible); }
|
||||
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
|
||||
void setCurrentMtx(J3DCurrentMtx& mtx) { mCurrentMtx = mtx; }
|
||||
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
|
||||
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
|
||||
void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; }
|
||||
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
|
||||
bool getNBTFlag() const { return mHasNBT; }
|
||||
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
|
||||
GXVtxDescList* getVtxDesc() const { return mVtxDesc; }
|
||||
|
||||
J3DMaterial* getMaterial() const { return mMaterial; }
|
||||
u32 getIndex() const { return mIndex; }
|
||||
u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
|
||||
u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
|
||||
u32 getMtxGroupNum() const { return mMtxGroupNum; }
|
||||
J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
|
||||
J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
|
||||
Vec* getMin() { return &mMin; }
|
||||
Vec* getMax() { return &mMax; }
|
||||
|
||||
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
|
||||
|
||||
static void* sOldVcdVatCmd;
|
||||
|
||||
private:
|
||||
friend struct J3DShapeFactory;
|
||||
friend class J3DJointTree;
|
||||
|
||||
/* 0x04 */ J3DMaterial* mMaterial;
|
||||
/* 0x08 */ u16 mIndex;
|
||||
/* 0x0A */ u16 mMtxGroupNum;
|
||||
/* 0x0C */ u32 mFlags;
|
||||
/* 0x10 */ f32 mRadius;
|
||||
/* 0x14 */ Vec mMin;
|
||||
/* 0x20 */ Vec mMax;
|
||||
/* 0x2C */ u8* mVcdVatCmd;
|
||||
/* 0x30 */ GXVtxDescList* mVtxDesc;
|
||||
/* 0x34 */ bool mHasNBT;
|
||||
/* 0x38 */ J3DShapeMtx** mShapeMtx;
|
||||
/* 0x3C */ J3DShapeDraw** mShapeDraw;
|
||||
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
|
||||
/* 0x48 */ bool mHasPNMTXIdx;
|
||||
/* 0x4C */ J3DVertexData* mVertexData;
|
||||
/* 0x50 */ J3DDrawMtxData* mDrawMtxData;
|
||||
/* 0x54 */ u8* mScaleFlagArray;
|
||||
/* 0x58 */ Mtx** mDrawMtx;
|
||||
/* 0x5C */ Mtx33** mNrmMtx;
|
||||
/* 0x60 */ u32* mCurrentViewNo;
|
||||
/* 0x64 */ u32 mBumpMtxOffset;
|
||||
};
|
||||
|
||||
#endif /* J3DSHAPE_H */
|
||||
#ifndef J3DSHAPE_H
|
||||
#define J3DSHAPE_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DCurrentMtxInfo {
|
||||
public:
|
||||
u32 mMtxIdxRegA;
|
||||
u32 mMtxIdxRegB;
|
||||
};
|
||||
|
||||
static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
|
||||
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
|
||||
GFX_FIFO(u8) = cmd;
|
||||
GFX_FIFO(u32) = param;
|
||||
}
|
||||
|
||||
static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
|
||||
GFX_FIFO(u8) = GX_CMD_LOAD_XF_REG;
|
||||
GFX_FIFO(u16) = (len - 1);
|
||||
GFX_FIFO(u16) = cmd;
|
||||
}
|
||||
|
||||
class J3DCurrentMtx : public J3DCurrentMtxInfo {
|
||||
public:
|
||||
J3DCurrentMtx() {
|
||||
mMtxIdxRegA = 0x3cf3cf00;
|
||||
mMtxIdxRegB = 0x00f3cf3c;
|
||||
}
|
||||
|
||||
J3DCurrentMtx& operator=(J3DCurrentMtxInfo const& info) {
|
||||
mMtxIdxRegA = info.mMtxIdxRegA;
|
||||
mMtxIdxRegB = info.mMtxIdxRegB;
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
|
||||
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
|
||||
|
||||
inline void load() const {
|
||||
J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
|
||||
J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
|
||||
J3DFifoWriteXFCmd(0x1018, 2);
|
||||
GFX_FIFO(u32) = getMtxIdxRegA();
|
||||
GFX_FIFO(u32) = getMtxIdxRegB();
|
||||
}
|
||||
|
||||
void setCurrentTexMtx(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
|
||||
u8 param_5, u8 param_6, u8 param_7, u8 param_8) {
|
||||
mMtxIdxRegA = ((param_1 & 0xff) << 6) | (param_2 << 0xc)| (param_3 << 0x12) | (param_4 << 0x18);
|
||||
mMtxIdxRegB = (param_5) | param_6 << 6 | param_7 << 0xc | param_8 << 0x12;
|
||||
}
|
||||
};
|
||||
|
||||
class J3DMaterial;
|
||||
class J3DVertexData;
|
||||
class J3DDrawMtxData;
|
||||
|
||||
enum J3DShpFlag {
|
||||
J3DShpFlag_Visible = 0x0001,
|
||||
J3DShpFlag_SkinPosCpu = 0x0004,
|
||||
J3DShpFlag_SkinNrmCpu = 0x0008,
|
||||
J3DShpFlag_Hidden = 0x0010,
|
||||
J3DShpFlag_EnableLod = 0x0100,
|
||||
J3DShpFlag_NoMtx = 0x0200,
|
||||
};
|
||||
|
||||
class J3DShape {
|
||||
public:
|
||||
J3DShape() {
|
||||
initialize();
|
||||
}
|
||||
|
||||
enum {
|
||||
kVcdVatDLSize = 0xC0,
|
||||
};
|
||||
|
||||
/* 80314B48 */ void initialize();
|
||||
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
|
||||
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
/* 80314E28 */ u32 countBumpMtxNum() const;
|
||||
/* 80314EEC */ void loadVtxArray() const;
|
||||
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
|
||||
/* 80314F98 */ void makeVtxArrayCmd();
|
||||
/* 80315260 */ void makeVcdVatCmd();
|
||||
/* 80315300 */ void loadPreDrawSetting() const;
|
||||
/* 80315398 */ void setArrayAndBindPipeline() const;
|
||||
|
||||
/* 803155E0 */ virtual void draw() const;
|
||||
/* 8031544C */ virtual void drawFast() const;
|
||||
/* 80315628 */ virtual void simpleDraw() const;
|
||||
/* 803156AC */ virtual void simpleDrawCache() const;
|
||||
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
void offFlag(u32 flag) { mFlags &= ~flag; }
|
||||
bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
|
||||
void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
|
||||
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
|
||||
void* getVcdVatCmd() const { return mVcdVatCmd; }
|
||||
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = (u8*)pVatCmd; }
|
||||
void show() { offFlag(J3DShpFlag_Visible); }
|
||||
void hide() { onFlag(J3DShpFlag_Visible); }
|
||||
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
|
||||
void setCurrentMtx(J3DCurrentMtx& mtx) { mCurrentMtx = mtx; }
|
||||
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
|
||||
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
|
||||
void setNrmMtx(Mtx33** pNrmMtx) { mNrmMtx = pNrmMtx; }
|
||||
void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; }
|
||||
bool getNBTFlag() const { return mHasNBT; }
|
||||
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
|
||||
GXVtxDescList* getVtxDesc() const { return mVtxDesc; }
|
||||
|
||||
J3DMaterial* getMaterial() const { return mMaterial; }
|
||||
u32 getIndex() const { return mIndex; }
|
||||
u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
|
||||
u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
|
||||
u32 getMtxGroupNum() const { return mMtxGroupNum; }
|
||||
J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
|
||||
J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
|
||||
Vec* getMin() { return &mMin; }
|
||||
Vec* getMax() { return &mMax; }
|
||||
|
||||
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
|
||||
|
||||
static void* sOldVcdVatCmd;
|
||||
|
||||
private:
|
||||
friend struct J3DShapeFactory;
|
||||
friend class J3DJointTree;
|
||||
|
||||
/* 0x04 */ J3DMaterial* mMaterial;
|
||||
/* 0x08 */ u16 mIndex;
|
||||
/* 0x0A */ u16 mMtxGroupNum;
|
||||
/* 0x0C */ u32 mFlags;
|
||||
/* 0x10 */ f32 mRadius;
|
||||
/* 0x14 */ Vec mMin;
|
||||
/* 0x20 */ Vec mMax;
|
||||
/* 0x2C */ u8* mVcdVatCmd;
|
||||
/* 0x30 */ GXVtxDescList* mVtxDesc;
|
||||
/* 0x34 */ bool mHasNBT;
|
||||
/* 0x38 */ J3DShapeMtx** mShapeMtx;
|
||||
/* 0x3C */ J3DShapeDraw** mShapeDraw;
|
||||
/* 0x40 */ J3DCurrentMtx mCurrentMtx;
|
||||
/* 0x48 */ bool mHasPNMTXIdx;
|
||||
/* 0x4C */ J3DVertexData* mVertexData;
|
||||
/* 0x50 */ J3DDrawMtxData* mDrawMtxData;
|
||||
/* 0x54 */ u8* mScaleFlagArray;
|
||||
/* 0x58 */ Mtx** mDrawMtx;
|
||||
/* 0x5C */ Mtx33** mNrmMtx;
|
||||
/* 0x60 */ u32* mCurrentViewNo;
|
||||
/* 0x64 */ u32 mBumpMtxOffset;
|
||||
};
|
||||
|
||||
#endif /* J3DSHAPE_H */
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
class J3DLightInfo {
|
||||
public:
|
||||
/* 803256C4 */ void operator=(J3DLightInfo const&);
|
||||
/* 803256C4 */ J3DLightInfo& operator=(J3DLightInfo const&);
|
||||
|
||||
/* 0x00 */ Vec mLightPosition;
|
||||
/* 0x0C */ Vec mLightDirection;
|
||||
@@ -61,7 +61,7 @@ struct J3DTextureSRTInfo {
|
||||
}; // Size: 0x14
|
||||
|
||||
struct J3DTexMtxInfo {
|
||||
/* 80325718 */ void operator=(J3DTexMtxInfo const&);
|
||||
/* 80325718 */ J3DTexMtxInfo& operator=(J3DTexMtxInfo const&);
|
||||
/* 80325794 */ void setEffectMtx(Mtx);
|
||||
|
||||
/* 0x00 */ u8 mProjection;
|
||||
@@ -72,14 +72,13 @@ struct J3DTexMtxInfo {
|
||||
}; // Size: 0x64
|
||||
|
||||
struct J3DIndTexMtxInfo {
|
||||
/* 803257DC */ void operator=(J3DIndTexMtxInfo const&);
|
||||
|
||||
J3DIndTexMtxInfo& operator=(J3DIndTexMtxInfo const&);
|
||||
/* 0x00 */ Mtx23 field_0x0;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
}; // Size: 0x1C
|
||||
|
||||
struct J3DFogInfo {
|
||||
/* 80325800 */ void operator=(J3DFogInfo const&);
|
||||
/* 80325800 */ J3DFogInfo& operator=(J3DFogInfo const&);
|
||||
|
||||
/* 0x00 */ u8 field_0x0;
|
||||
/* 0x01 */ u8 field_0x1;
|
||||
@@ -88,15 +87,12 @@ struct J3DFogInfo {
|
||||
/* 0x08 */ f32 field_0x8;
|
||||
/* 0x0C */ f32 field_0xc;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ u8 field_0x14;
|
||||
/* 0x15 */ u8 field_0x15;
|
||||
/* 0x16 */ u8 field_0x16;
|
||||
/* 0x17 */ u8 field_0x17;
|
||||
/* 0x18 */ u16 field_0x18[10];
|
||||
/* 0x14 */ GXColor field_0x14;
|
||||
/* 0x18 */ GXFogAdjTable field_0x18;
|
||||
}; // Size: 0x2C
|
||||
|
||||
struct J3DNBTScaleInfo {
|
||||
/* 8032587C */ void operator=(J3DNBTScaleInfo const&);
|
||||
/* 8032587C */ J3DNBTScaleInfo& operator=(J3DNBTScaleInfo const&);
|
||||
|
||||
/* 0x0 */ bool mbHasScale;
|
||||
/* 0x4 */ Vec mScale;
|
||||
|
||||
@@ -12,12 +12,27 @@ struct J3DTevStageInfo {
|
||||
/* 0x5 */ u8 mTevAlphaOp;
|
||||
/* 0x6 */ u8 mTevAlphaAB;
|
||||
/* 0x7 */ u8 mTevSwapModeInfo;
|
||||
/* 0x8 */ u8 field_0x8[0xc];
|
||||
};
|
||||
|
||||
struct J3DTevStage : public J3DTevStageInfo {
|
||||
extern J3DTevStageInfo const j3dDefaultTevStageInfo;
|
||||
|
||||
struct J3DTevStage {
|
||||
/* 8000E230 */ J3DTevStage();
|
||||
/* 8000E298 */ void setTevStageInfo(J3DTevStageInfo const&);
|
||||
/* 8003AACC */ J3DTevStage(J3DTevStageInfo const&);
|
||||
|
||||
void setRasSel(u8 ras_sel) { mTevSwapModeInfo = (mTevSwapModeInfo & ~3) | ras_sel; }
|
||||
void setTexSel(u8 tex_sel) { mTevSwapModeInfo = (mTevSwapModeInfo & ~0xc) | (tex_sel << 2); }
|
||||
|
||||
/* 0x0 */ u8 field_0x0;
|
||||
/* 0x1 */ u8 mTevColorOp;
|
||||
/* 0x2 */ u8 mTevColorAB;
|
||||
/* 0x3 */ u8 mTevColorCD;
|
||||
/* 0x4 */ u8 field_0x4;
|
||||
/* 0x5 */ u8 mTevAlphaOp;
|
||||
/* 0x6 */ u8 mTevAlphaAB;
|
||||
/* 0x7 */ u8 mTevSwapModeInfo;
|
||||
};
|
||||
|
||||
struct J3DIndTevStageInfo {
|
||||
@@ -30,10 +45,34 @@ struct J3DIndTevStageInfo {
|
||||
/* 0x6 */ u8 mPrev;
|
||||
/* 0x7 */ u8 mLod;
|
||||
/* 0x8 */ u8 mAlphaSel;
|
||||
/* 0x9 */ u8 pad[3];
|
||||
};
|
||||
|
||||
extern J3DIndTevStageInfo const j3dDefaultIndTevStageInfo;
|
||||
|
||||
struct J3DIndTevStage {
|
||||
/* 8000E14C */ J3DIndTevStage();
|
||||
/* 8000E14C */ J3DIndTevStage() : mInfo(0) { setIndTevStageInfo(j3dDefaultIndTevStageInfo); }
|
||||
J3DIndTevStage(J3DIndTevStageInfo const& info) : mInfo(0) { setIndTevStageInfo(info); }
|
||||
void setIndTevStageInfo(J3DIndTevStageInfo const& info) {
|
||||
setIndStage(info.mIndStage);
|
||||
setIndFormat(info.mIndFormat);
|
||||
setBiasSel(info.mBiasSel);
|
||||
setMtxSel(info.mMtxSel);
|
||||
setWrapS(info.mWrapS);
|
||||
setWrapT(info.mWrapT);
|
||||
setPrev(info.mPrev);
|
||||
setLod(info.mLod);
|
||||
setAlphaSel(info.mAlphaSel);
|
||||
}
|
||||
void setIndStage(u8 indStage) { mInfo = (mInfo & ~3) | indStage; }
|
||||
void setIndFormat(u8 indFormat) { mInfo = (mInfo & ~0xc) | (indFormat << 2); }
|
||||
void setBiasSel(u8 biasSel) { mInfo = (mInfo & ~0x70) | (biasSel << 4); }
|
||||
void setMtxSel(u8 mtxSel) { mInfo = (mInfo & ~0x1e00) | (mtxSel << 9); }
|
||||
void setWrapS(u8 wrapS) { mInfo = (mInfo & ~0xe000) | (wrapS << 13); }
|
||||
void setWrapT(u8 wrapT) { mInfo = (mInfo & ~0x70000) | (wrapT << 16); }
|
||||
void setPrev(u8 prev) { mInfo = (mInfo & ~0x100000) | (prev << 20); }
|
||||
void setLod(u8 lod) { mInfo = (mInfo & ~0x80000) | (lod << 19); }
|
||||
void setAlphaSel(u8 alphaSel) { mInfo = (mInfo & ~0x180) | (alphaSel << 7); }
|
||||
|
||||
/* 0x0 */ u32 mInfo;
|
||||
};
|
||||
@@ -49,22 +88,42 @@ struct J3DTevOrderInfo {
|
||||
/* 0x3 */ u8 field_0x3; // Maybe padding
|
||||
};
|
||||
|
||||
extern J3DTevOrderInfo j3dDefaultTevOrderInfoNull;
|
||||
|
||||
struct J3DTevOrder : public J3DTevOrderInfo {
|
||||
/* 8000E140 */ J3DTevOrder();
|
||||
J3DTevOrder(const J3DTevOrderInfo& info) {
|
||||
*(J3DTevOrderInfo*)this = info;
|
||||
}
|
||||
/* 8000E140 */ J3DTevOrder() : J3DTevOrderInfo(j3dDefaultTevOrderInfoNull) {}
|
||||
J3DTevOrder(const J3DTevOrderInfo& info) : J3DTevOrderInfo(info) {}
|
||||
|
||||
u8 getTexMap() { return mTexMap; }
|
||||
};
|
||||
|
||||
struct J3DTevSwapModeTableInfo {
|
||||
/* 0x0 */ u8 field_0x0;
|
||||
/* 0x1 */ u8 field_0x1;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
}; // Size: 0x4
|
||||
|
||||
extern J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable;
|
||||
|
||||
struct J3DTevSwapModeTable {
|
||||
/* 8000E134 */ J3DTevSwapModeTable();
|
||||
J3DTevSwapModeTable(J3DTevSwapModeTableInfo const& info) {
|
||||
field_0x0 = calcTevSwapTableID(info.field_0x0, info.field_0x1, info.field_0x2, info.field_0x3);
|
||||
}
|
||||
u8 calcTevSwapTableID(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
return 0x40 * param_0 + 0x10 * param_1 + 4 * param_2 + param_3;
|
||||
}
|
||||
|
||||
/* 0x0 */ u8 field_0x0;
|
||||
}; // Size: 0x1
|
||||
|
||||
struct J3DTevSwapModeInfo {};
|
||||
struct J3DTevSwapModeInfo {
|
||||
/* 0x0 */ u8 mRasSel;
|
||||
/* 0x1 */ u8 mTexSel;
|
||||
/* 0x2 */ u8 field_0x2;
|
||||
/* 0x3 */ u8 field_0x3;
|
||||
}; // Size: 0x4
|
||||
|
||||
struct J3DNBTScale;
|
||||
void loadNBTScale(J3DNBTScale& param_0);
|
||||
|
||||
@@ -1,86 +1,86 @@
|
||||
#ifndef J3DTEXTURE_H
|
||||
#define J3DTEXTURE_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DStruct.h"
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DTexture {
|
||||
private:
|
||||
/* 0x0 */ u16 mNum;
|
||||
/* 0x2 */ u16 field_0x2;
|
||||
/* 0x4 */ ResTIMG* mpRes;
|
||||
|
||||
public:
|
||||
J3DTexture(u16 num, ResTIMG* res) : mNum(num), field_0x2(0), mpRes(res) {}
|
||||
/* 8031204C */ void loadGX(u16, _GXTexMapID) const;
|
||||
/* 803121A4 */ void entryNum(u16);
|
||||
/* 8031221C */ void addResTIMG(u16, ResTIMG const*);
|
||||
/* 803366A4 */ virtual ~J3DTexture() {}
|
||||
|
||||
u16 getNum() const { return mNum; }
|
||||
ResTIMG* getResTIMG(u16 entry) const { return &mpRes[entry]; }
|
||||
void setResTIMG(u16 entry, const ResTIMG& timg) {
|
||||
mpRes[entry] = timg;
|
||||
mpRes[entry].imageOffset = ((mpRes[entry].imageOffset + (u32)&timg - (u32)(mpRes + entry)));
|
||||
mpRes[entry].paletteOffset = ((mpRes[entry].paletteOffset + (u32)&timg - (u32)(mpRes + entry)));
|
||||
}
|
||||
};
|
||||
|
||||
class J3DTexMtx {
|
||||
public:
|
||||
J3DTexMtx(const J3DTexMtxInfo& info) {
|
||||
mTexMtxInfo = info;
|
||||
}
|
||||
/* 803238C4 */ void load(u32) const;
|
||||
/* 80323900 */ void calc(const Mtx);
|
||||
/* 80323920 */ void calcTexMtx(const Mtx);
|
||||
/* 80323C0C */ void calcPostTexMtx(const Mtx);
|
||||
/* 80324358 */ void loadTexMtx(u32) const;
|
||||
/* 803243BC */ void loadPostTexMtx(u32) const;
|
||||
|
||||
J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; }
|
||||
Mtx& getMtx() { return mMtx; }
|
||||
void setEffectMtx(Mtx effectMtx) { mTexMtxInfo.setEffectMtx(effectMtx); }
|
||||
|
||||
private:
|
||||
/* 0x00 */ J3DTexMtxInfo mTexMtxInfo;
|
||||
/* 0x64 */ Mtx mMtx;
|
||||
}; // Size: 0x94
|
||||
|
||||
struct J3DTexCoordInfo {
|
||||
/* 0x0 */ u8 mTexGenType;
|
||||
/* 0x1 */ u8 mTexGenSrc;
|
||||
/* 0x2 */ u8 mTexGenMtx;
|
||||
void operator=(J3DTexCoordInfo const& other) {
|
||||
*(u32*) this = *(u32*)&other;
|
||||
}
|
||||
};
|
||||
|
||||
struct J3DTexCoord : public J3DTexCoordInfo {
|
||||
/* 8000E464 */ J3DTexCoord();
|
||||
void setTexCoordInfo(J3DTexCoordInfo *param_1) {
|
||||
*(J3DTexCoordInfo*)this = *param_1;
|
||||
}
|
||||
|
||||
u8 getTexGenType() { return mTexGenType; }
|
||||
u8 getTexGenSrc() { return mTexGenSrc; }
|
||||
u8 getTexGenMtx() { return mTexGenMtx & 0xff; }
|
||||
u16 getTexMtxReg() { return mTexMtxReg & 0xff; }
|
||||
|
||||
void resetTexMtxReg() {
|
||||
mTexMtxReg = mTexGenMtx;
|
||||
}
|
||||
|
||||
/* 0x4 */ u16 mTexMtxReg;
|
||||
}; // Size: 0x6
|
||||
|
||||
struct J3DDefaultTexCoordInfo {
|
||||
/* 0x0 */ u8 mTexGenType;
|
||||
/* 0x1 */ u8 mTexGenSrc;
|
||||
/* 0x2 */ u8 mTexGenMtx;
|
||||
/* 0x3 */ u8 pad;
|
||||
};
|
||||
|
||||
#endif /* J3DTEXTURE_H */
|
||||
#ifndef J3DTEXTURE_H
|
||||
#define J3DTEXTURE_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DStruct.h"
|
||||
#include "JSystem/JUtility/JUTTexture.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DTexture {
|
||||
private:
|
||||
/* 0x0 */ u16 mNum;
|
||||
/* 0x2 */ u16 field_0x2;
|
||||
/* 0x4 */ ResTIMG* mpRes;
|
||||
|
||||
public:
|
||||
J3DTexture(u16 num, ResTIMG* res) : mNum(num), field_0x2(0), mpRes(res) {}
|
||||
/* 8031204C */ void loadGX(u16, _GXTexMapID) const;
|
||||
/* 803121A4 */ void entryNum(u16);
|
||||
/* 8031221C */ void addResTIMG(u16, ResTIMG const*);
|
||||
/* 803366A4 */ virtual ~J3DTexture() {}
|
||||
|
||||
u16 getNum() const { return mNum; }
|
||||
ResTIMG* getResTIMG(u16 entry) const { return &mpRes[entry]; }
|
||||
void setResTIMG(u16 entry, const ResTIMG& timg) {
|
||||
mpRes[entry] = timg;
|
||||
mpRes[entry].imageOffset = ((mpRes[entry].imageOffset + (u32)&timg - (u32)(mpRes + entry)));
|
||||
mpRes[entry].paletteOffset = ((mpRes[entry].paletteOffset + (u32)&timg - (u32)(mpRes + entry)));
|
||||
}
|
||||
};
|
||||
|
||||
class J3DTexMtx {
|
||||
public:
|
||||
J3DTexMtx(const J3DTexMtxInfo& info) {
|
||||
mTexMtxInfo = info;
|
||||
}
|
||||
/* 803238C4 */ void load(u32) const;
|
||||
/* 80323900 */ void calc(const Mtx);
|
||||
/* 80323920 */ void calcTexMtx(const Mtx);
|
||||
/* 80323C0C */ void calcPostTexMtx(const Mtx);
|
||||
/* 80324358 */ void loadTexMtx(u32) const;
|
||||
/* 803243BC */ void loadPostTexMtx(u32) const;
|
||||
|
||||
J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; }
|
||||
Mtx& getMtx() { return mMtx; }
|
||||
void setEffectMtx(Mtx effectMtx) { mTexMtxInfo.setEffectMtx(effectMtx); }
|
||||
|
||||
private:
|
||||
/* 0x00 */ J3DTexMtxInfo mTexMtxInfo;
|
||||
/* 0x64 */ Mtx mMtx;
|
||||
}; // Size: 0x94
|
||||
|
||||
struct J3DTexCoordInfo {
|
||||
/* 0x0 */ u8 mTexGenType;
|
||||
/* 0x1 */ u8 mTexGenSrc;
|
||||
/* 0x2 */ u8 mTexGenMtx;
|
||||
/* 0x3 */ u8 pad;
|
||||
};
|
||||
|
||||
extern J3DTexCoordInfo const j3dDefaultTexCoordInfo[8];
|
||||
|
||||
struct J3DTexCoord : public J3DTexCoordInfo {
|
||||
/* 8000E464 */ J3DTexCoord() {
|
||||
setTexCoordInfo(j3dDefaultTexCoordInfo[0]);
|
||||
resetTexMtxReg();
|
||||
}
|
||||
J3DTexCoord(J3DTexCoordInfo const& info) {
|
||||
setTexCoordInfo(info);
|
||||
resetTexMtxReg();
|
||||
}
|
||||
void setTexCoordInfo(J3DTexCoordInfo const& info) {
|
||||
__memcpy(this, &info, sizeof(J3DTexCoordInfo));
|
||||
}
|
||||
|
||||
u8 getTexGenType() { return mTexGenType; }
|
||||
u8 getTexGenSrc() { return mTexGenSrc; }
|
||||
u8 getTexGenMtx() { return mTexGenMtx & 0xff; }
|
||||
u16 getTexMtxReg() { return mTexMtxReg & 0xff; }
|
||||
|
||||
void resetTexMtxReg() {
|
||||
mTexMtxReg = mTexGenMtx;
|
||||
}
|
||||
|
||||
/* 0x4 */ u16 mTexMtxReg;
|
||||
}; // Size: 0x6
|
||||
|
||||
#endif /* J3DTEXTURE_H */
|
||||
|
||||
@@ -1,10 +1,76 @@
|
||||
#ifndef J3DMATERIALFACTORY_H
|
||||
#define J3DMATERIALFACTORY_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
|
||||
class J3DMaterial;
|
||||
|
||||
struct J3DMaterialInitData {
|
||||
/* 0x000 */ u8 mMaterialMode;
|
||||
/* 0x001 */ u8 mCullModeIdx;
|
||||
/* 0x002 */ u8 mColorChanNumIdx;
|
||||
/* 0x003 */ u8 mTexGenNumIdx;
|
||||
/* 0x004 */ u8 mTevStageNumIdx;
|
||||
/* 0x005 */ u8 mZCompLocIdx;
|
||||
/* 0x006 */ u8 mZModeIdx;
|
||||
/* 0x007 */ u8 mDitherIdx;
|
||||
/* 0x008 */ u16 mMatColorIdx[2];
|
||||
/* 0x00C */ u16 mColorChanIdx[4];
|
||||
/* 0x014 */ u16 mAmbColorIdx[2];
|
||||
/* 0x018 */ u8 field_0x018[0x10];
|
||||
/* 0x028 */ u16 mTexCoordIdx[8];
|
||||
/* 0x038 */ u8 field_0x038[0x10];
|
||||
/* 0x048 */ u16 mTexMtxIdx[8];
|
||||
/* 0x058 */ u8 field_0x058[0x2c];
|
||||
/* 0x084 */ u16 mTexNoIdx[8];
|
||||
/* 0x094 */ u16 mTevKColorIdx[4];
|
||||
/* 0x09C */ u8 mTevKColorSel[0x10];
|
||||
/* 0x0AC */ u8 mTevKAlphaSel[0x10];
|
||||
/* 0x0BC */ u16 mTevOrderIdx[0x10];
|
||||
/* 0x0DC */ u16 mTevColorIdx[4];
|
||||
/* 0x0E4 */ u16 mTevStageIdx[0x10];
|
||||
/* 0x104 */ u16 mTevSwapModeIdx[0x10];
|
||||
/* 0x124 */ u16 mTevSwapModeTableIdx[4];
|
||||
/* 0x12C */ u8 field_0x12c[0x18];
|
||||
/* 0x144 */ u16 mFogIdx;
|
||||
/* 0x146 */ u16 mAlphaCompIdx;
|
||||
/* 0x148 */ u16 mBlendIdx;
|
||||
/* 0x14A */ u16 mNBTScaleIdx;
|
||||
}; // size 0x14C
|
||||
|
||||
struct J3DIndInitData {
|
||||
/* 0x000 */ bool mEnabled;
|
||||
/* 0x001 */ u8 mIndTexStageNum;
|
||||
/* 0x002 */ u8 field_0x002[2];
|
||||
/* 0x004 */ J3DIndTexOrderInfo mIndTexOrderInfo[3];
|
||||
/* 0x010 */ u8 field_0x010[4];
|
||||
/* 0x014 */ J3DIndTexMtxInfo mIndTexMtxInfo[3];
|
||||
/* 0x068 */ J3DIndTexCoordScaleInfo mIndTexCoordScaleInfo[3];
|
||||
/* 0x074 */ u8 field_0x074[4];
|
||||
/* 0x078 */ J3DIndTevStageInfo mIndTevStageInfo[0x10];
|
||||
}; // size 0x138
|
||||
|
||||
struct J3DPatchingInfo {
|
||||
/* 0x0 */ u16 mMatColorOffset;
|
||||
/* 0x2 */ u16 mColorChanOffset;
|
||||
/* 0x4 */ u16 mTexMtxOffset;
|
||||
/* 0x6 */ u16 mTexNoOffset;
|
||||
/* 0x8 */ u16 mTevRegOffset;
|
||||
/* 0xA */ u16 mFogOffset;
|
||||
/* 0xC */ u8 field_0xc[4];
|
||||
}; // size 0x10
|
||||
|
||||
struct J3DDisplayListInit {
|
||||
/* 0x0 */ u32 mOffset;
|
||||
/* 0x4 */ u32 field_0x4;
|
||||
}; // size 8
|
||||
|
||||
struct J3DTexCoord2Info;
|
||||
struct J3DCurrentMtxInfo;
|
||||
|
||||
class J3DMaterialFactory {
|
||||
public:
|
||||
enum MaterialType {
|
||||
@@ -16,50 +82,87 @@ public:
|
||||
/* 80330234 */ J3DMaterialFactory(J3DMaterialDLBlock const&);
|
||||
/* 8032FFEC */ J3DMaterialFactory(J3DMaterialBlock const&);
|
||||
/* 803302BC */ u16 countUniqueMaterials();
|
||||
/* 80330304 */ void countTexGens(int) const;
|
||||
/* 8033033C */ void countStages(int) const;
|
||||
/* 803303C4 */ J3DMaterial* create(J3DMaterial*, J3DMaterialFactory::MaterialType, int, u32) const;
|
||||
/* 80330440 */ void createNormalMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80330D84 */ void createPatchedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80330304 */ u32 countTexGens(int) const;
|
||||
/* 8033033C */ u32 countStages(int) const;
|
||||
/* 803303C4 */ J3DMaterial* create(J3DMaterial*, MaterialType, int, u32) const;
|
||||
/* 80330440 */ J3DMaterial* createNormalMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80330D84 */ J3DMaterial* createPatchedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 8033168C */ void modifyPatchedCurrentMtx(J3DMaterial*, int) const;
|
||||
/* 803317D4 */ void createLockedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331A7C */ void calcSize(J3DMaterial*, J3DMaterialFactory::MaterialType, int, u32) const;
|
||||
/* 80331AFC */ void calcSizeNormalMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331C30 */ void calcSizePatchedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331D00 */ void calcSizeLockedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331D18 */ void newMatColor(int, int) const;
|
||||
/* 80331D74 */ void newColorChanNum(int) const;
|
||||
/* 80331DAC */ void newColorChan(int, int) const;
|
||||
/* 80331F50 */ void newAmbColor(int, int) const;
|
||||
/* 80331FAC */ void newTexGenNum(int) const;
|
||||
/* 80331FE4 */ void newTexCoord(int, int) const;
|
||||
/* 80332044 */ void newTexMtx(int, int) const;
|
||||
/* 803320CC */ void newCullMode(int) const;
|
||||
/* 8033210C */ void newTexNo(int, int) const;
|
||||
/* 80332154 */ void newTevOrder(int, int) const;
|
||||
/* 803321A0 */ void newTevColor(int, int) const;
|
||||
/* 80332210 */ void newTevKColor(int, int) const;
|
||||
/* 8033226C */ void newTevStageNum(int) const;
|
||||
/* 803322A4 */ void newTevStage(int, int) const;
|
||||
/* 80332304 */ void newTevSwapModeTable(int, int) const;
|
||||
/* 803323A0 */ void newIndTexStageNum(int) const;
|
||||
/* 803323C8 */ void newIndTexOrder(int, int) const;
|
||||
/* 8033240C */ void newIndTexMtx(int, int) const;
|
||||
/* 803324B4 */ void newIndTevStage(int, int) const;
|
||||
/* 80332648 */ void newIndTexCoordScale(int, int) const;
|
||||
/* 8033268C */ void newFog(int) const;
|
||||
/* 80332768 */ void newAlphaComp(int) const;
|
||||
/* 803327E8 */ void newBlend(int) const;
|
||||
/* 8033282C */ void newZMode(int) const;
|
||||
/* 8033288C */ void newZCompLoc(int) const;
|
||||
/* 803328C4 */ void newDither(int) const;
|
||||
/* 803328FC */ void newNBTScale(int) const;
|
||||
/* 803317D4 */ J3DMaterial* createLockedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331A7C */ u32 calcSize(J3DMaterial*, MaterialType, int, u32) const;
|
||||
/* 80331AFC */ u32 calcSizeNormalMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331C30 */ u32 calcSizePatchedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331D00 */ u32 calcSizeLockedMaterial(J3DMaterial*, int, u32) const;
|
||||
/* 80331D18 */ J3DGXColor newMatColor(int, int) const;
|
||||
/* 80331D74 */ u8 newColorChanNum(int) const;
|
||||
/* 80331DAC */ J3DColorChan newColorChan(int, int) const;
|
||||
/* 80331F50 */ J3DGXColor newAmbColor(int, int) const;
|
||||
/* 80331FAC */ u32 newTexGenNum(int) const;
|
||||
/* 80331FE4 */ J3DTexCoord newTexCoord(int, int) const;
|
||||
/* 80332044 */ J3DTexMtx* newTexMtx(int, int) const;
|
||||
/* 803320CC */ u8 newCullMode(int) const;
|
||||
/* 8033210C */ u16 newTexNo(int, int) const;
|
||||
/* 80332154 */ J3DTevOrder newTevOrder(int, int) const;
|
||||
/* 803321A0 */ J3DGXColorS10 newTevColor(int, int) const;
|
||||
/* 80332210 */ J3DGXColor newTevKColor(int, int) const;
|
||||
/* 8033226C */ u8 newTevStageNum(int) const;
|
||||
/* 803322A4 */ J3DTevStage newTevStage(int, int) const;
|
||||
/* 80332304 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
|
||||
/* 803323A0 */ u8 newIndTexStageNum(int) const;
|
||||
/* 803323C8 */ J3DIndTexOrder newIndTexOrder(int, int) const;
|
||||
/* 8033240C */ J3DIndTexMtx newIndTexMtx(int, int) const;
|
||||
/* 803324B4 */ J3DIndTevStage newIndTevStage(int, int) const;
|
||||
/* 80332648 */ J3DIndTexCoordScale newIndTexCoordScale(int, int) const;
|
||||
/* 8033268C */ J3DFog newFog(int) const;
|
||||
/* 80332768 */ J3DAlphaComp newAlphaComp(int) const;
|
||||
/* 803327E8 */ J3DBlend newBlend(int) const;
|
||||
/* 8033282C */ J3DZMode newZMode(int) const;
|
||||
/* 8033288C */ u8 newZCompLoc(int) const;
|
||||
/* 803328C4 */ u8 newDither(int) const;
|
||||
/* 803328FC */ J3DNBTScale newNBTScale(int) const;
|
||||
|
||||
u16 getMaterialID(int i_idx) { return mpMaterialID[i_idx]; }
|
||||
u16 getMaterialID(int idx) const { return mpMaterialID[idx]; }
|
||||
u8 getMaterialMode(int idx) const { return mpMaterialInitData[mpMaterialID[idx]].mMaterialMode; }
|
||||
|
||||
static u32 getMdlDataFlag_TevStageNum(u32 flags) { return (flags >> 0x10) & 0x1f; }
|
||||
static u32 getMdlDataFlag_TexGenFlag(u32 flags) { return flags & 0x0c000000; }
|
||||
static u32 getMdlDataFlag_ColorFlag(u32 flags) { return flags & 0xc0000000; }
|
||||
static u32 getMdlDataFlag_PEFlag(u32 flags) { return flags & 0x30000000; }
|
||||
|
||||
/* 0x00 */ u8 field_0x00[8];
|
||||
/* 0x00 */ u16 mMaterialNum;
|
||||
/* 0x04 */ J3DMaterialInitData* mpMaterialInitData;
|
||||
/* 0x08 */ u16* mpMaterialID;
|
||||
/* 0x0C */ u8 field_0x0c[0x7C];
|
||||
/* 0x0C */ J3DIndInitData* mpIndInitData;
|
||||
/* 0x10 */ GXColor* mpMatColor;
|
||||
/* 0x14 */ u8* mpColorChanNum;
|
||||
/* 0x18 */ J3DColorChanInfo* mpColorChanInfo;
|
||||
/* 0x1C */ GXColor* mpAmbColor;
|
||||
/* 0x20 */ J3DLightInfo* mpLightInfo;
|
||||
/* 0x24 */ u8* mpTexGenNum;
|
||||
/* 0x28 */ J3DTexCoordInfo* mpTexCoordInfo;
|
||||
/* 0x2C */ J3DTexCoord2Info* mpTexCoord2Info;
|
||||
/* 0x30 */ J3DTexMtxInfo* mpTexMtxInfo;
|
||||
/* 0x34 */ J3DTexMtxInfo* field_0x34;
|
||||
/* 0x38 */ u16* mpTexNo;
|
||||
/* 0x3C */ GXCullMode* mpCullMode;
|
||||
/* 0x40 */ J3DTevOrderInfo* mpTevOrderInfo;
|
||||
/* 0x44 */ GXColorS10* mpTevColor;
|
||||
/* 0x48 */ GXColor* mpTevKColor;
|
||||
/* 0x4C */ u8* mpTevStageNum;
|
||||
/* 0x50 */ J3DTevStageInfo* mpTevStageInfo;
|
||||
/* 0x54 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
|
||||
/* 0x58 */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
|
||||
/* 0x5C */ J3DFogInfo* mpFogInfo;
|
||||
/* 0x60 */ J3DAlphaCompInfo* mpAlphaCompInfo;
|
||||
/* 0x64 */ J3DBlendInfo* mpBlendInfo;
|
||||
/* 0x68 */ J3DZModeInfo* mpZModeInfo;
|
||||
/* 0x6C */ u8* mpZCompLoc;
|
||||
/* 0x70 */ u8* mpDither;
|
||||
/* 0x74 */ J3DNBTScaleInfo* mpNBTScaleInfo;
|
||||
/* 0x78 */ J3DDisplayListInit* mpDisplayListInit;
|
||||
/* 0x7C */ J3DPatchingInfo* mpPatchingInfo;
|
||||
/* 0x80 */ J3DCurrentMtxInfo* mpCurrentMtxInfo;
|
||||
/* 0x84 */ u8* mpMaterialMode;
|
||||
};
|
||||
|
||||
#endif /* J3DMATERIALFACTORY_H */
|
||||
|
||||
@@ -1,92 +1,107 @@
|
||||
#ifndef J3DMATERIALFACTORY_V21_H
|
||||
#define J3DMATERIALFACTORY_V21_H
|
||||
|
||||
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
|
||||
class J3DMaterial;
|
||||
class J3DMaterialInitData_v21;
|
||||
class J3DIndInitData;
|
||||
class J3DColorChanInfo;
|
||||
class J3DLightInfo;
|
||||
class J3DTexCoordInfo;
|
||||
class J3DTexCoord2Info;
|
||||
class J3DTexMtxInfo;
|
||||
class J3DTevOrderInfo;
|
||||
class J3DTevStageInfo;
|
||||
class J3DTevSwapModeInfo;
|
||||
class J3DTevSwapModeTableInfo;
|
||||
class J3DFogInfo;
|
||||
class J3DAlphaCompInfo;
|
||||
class J3DBlendInfo;
|
||||
class J3DZModeInfo;
|
||||
class J3DNBTScaleInfo;
|
||||
class J3DDisplayListInit;
|
||||
class J3DPatchingInfo;
|
||||
class J3DCurrentMtxInfo;
|
||||
|
||||
class J3DMaterialFactory_v21 {
|
||||
public:
|
||||
/* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
|
||||
/* 80332F84 */ u16 countUniqueMaterials();
|
||||
/* 80332FA8 */ void countTexGens(int) const;
|
||||
/* 80332FE0 */ void countStages(int) const;
|
||||
/* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const;
|
||||
/* 803337D8 */ void newMatColor(int, int) const;
|
||||
/* 80333834 */ void newColorChanNum(int) const;
|
||||
/* 8033386C */ void newColorChan(int, int) const;
|
||||
/* 80333A10 */ void newTexGenNum(int) const;
|
||||
/* 80333A48 */ void newTexCoord(int, int) const;
|
||||
/* 80333AA8 */ void newTexMtx(int, int) const;
|
||||
/* 80333B30 */ void newCullMode(int) const;
|
||||
/* 80333B70 */ void newTexNo(int, int) const;
|
||||
/* 80333BB8 */ void newTevOrder(int, int) const;
|
||||
/* 80333C04 */ void newTevColor(int, int) const;
|
||||
/* 80333C74 */ void newTevKColor(int, int) const;
|
||||
/* 80333CD0 */ void newTevStageNum(int) const;
|
||||
/* 80333D08 */ void newTevStage(int, int) const;
|
||||
/* 80333D68 */ void newTevSwapModeTable(int, int) const;
|
||||
/* 80333E04 */ void newFog(int) const;
|
||||
/* 80333EE0 */ void newAlphaComp(int) const;
|
||||
/* 80333F60 */ void newBlend(int) const;
|
||||
/* 80333FA4 */ void newZMode(int) const;
|
||||
/* 80334004 */ void newZCompLoc(int) const;
|
||||
/* 8033403C */ void newDither(int) const;
|
||||
/* 80334074 */ void newNBTScale(int) const;
|
||||
|
||||
u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; }
|
||||
|
||||
/* 0x00 */ u16 mMaterialNum;
|
||||
/* 0x04 */ J3DMaterialInitData_v21* field_0x04;
|
||||
/* 0x08 */ u16* mpMaterialID;
|
||||
/* 0x0C */ GXColor* field_0x0c;
|
||||
/* 0x10 */ u8* field_0x10;
|
||||
/* 0x14 */ J3DColorChanInfo* field_0x14;
|
||||
/* 0x18 */ u8* field_0x18;
|
||||
/* 0x1C */ J3DTexCoordInfo* field_0x1c;
|
||||
/* 0x20 */ J3DTexCoord2Info* field_0x20;
|
||||
/* 0x24 */ J3DTexMtxInfo* field_0x24;
|
||||
/* 0x28 */ J3DTexMtxInfo* field_0x28;
|
||||
/* 0x2C */ u16* field_0x2c;
|
||||
/* 0x30 */ GXCullMode* field_0x30;
|
||||
/* 0x34 */ J3DTevOrderInfo* field_0x34;
|
||||
/* 0x38 */ GXColorS10* field_0x38;
|
||||
/* 0x3C */ GXColor* field_0x3c;
|
||||
/* 0x40 */ u8* field_0x40;
|
||||
/* 0x44 */ J3DTevStageInfo* field_0x44;
|
||||
/* 0x48 */ J3DTevSwapModeTableInfo* field_0x48;
|
||||
/* 0x4C */ J3DFogInfo* field_0x4c;
|
||||
/* 0x50 */ J3DAlphaCompInfo* field_0x50;
|
||||
/* 0x54 */ J3DBlendInfo* field_0x54;
|
||||
/* 0x58 */ J3DZModeInfo* field_0x58;
|
||||
/* 0x5C */ u8* field_0x5c;
|
||||
/* 0x60 */ u8* field_0x60;
|
||||
/* 0x64 */ J3DNBTScaleInfo* field_0x64;
|
||||
/* 0x68 */ u16 field_0x68;
|
||||
/* 0x69 */ u8 field_0x69;
|
||||
/* 0x6A */ u8 field_0x6a;
|
||||
};
|
||||
|
||||
#endif /* J3DMATERIALFACTORY_V21_H */
|
||||
#ifndef J3DMATERIALFACTORY_V21_H
|
||||
#define J3DMATERIALFACTORY_V21_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
|
||||
class J3DMaterial;
|
||||
struct J3DTexCoord2Info;
|
||||
struct J3DCurrentMtxInfo;
|
||||
|
||||
struct J3DMaterialInitData_v21 {
|
||||
/* 0x000 */ u8 mMaterialMode;
|
||||
/* 0x001 */ u8 mCullModeIdx;
|
||||
/* 0x002 */ u8 mColorChanNumIdx;
|
||||
/* 0x003 */ u8 mTexGenNumIdx;
|
||||
/* 0x004 */ u8 mTevStageNumIdx;
|
||||
/* 0x005 */ u8 mZCompLocIdx;
|
||||
/* 0x006 */ u8 mZModeIdx;
|
||||
/* 0x007 */ u8 mDitherIdx;
|
||||
/* 0x008 */ u16 mMatColorIdx[2];
|
||||
/* 0x00C */ u16 mColorChanIdx[4];
|
||||
/* 0x014 */ u16 mTexCoordIdx[8];
|
||||
/* 0x024 */ u8 field_0x038[0x10];
|
||||
/* 0x034 */ u16 mTexMtxIdx[8];
|
||||
/* 0x044 */ u8 field_0x058[0x2c];
|
||||
/* 0x070 */ u16 mTexNoIdx[8];
|
||||
/* 0x080 */ u16 mTevKColorIdx[4];
|
||||
/* 0x088 */ u8 mTevKColorSel[0x10];
|
||||
/* 0x098 */ u8 mTevKAlphaSel[0x10];
|
||||
/* 0x0A8 */ u16 mTevOrderIdx[0x10];
|
||||
/* 0x0C8 */ u16 mTevColorIdx[4];
|
||||
/* 0x0D0 */ u16 mTevStageIdx[0x10];
|
||||
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
|
||||
/* 0x110 */ u16 mTevSwapModeTableIdx[4];
|
||||
/* 0x118 */ u8 field_0x12c[0x18];
|
||||
/* 0x130 */ u16 mFogIdx;
|
||||
/* 0x132 */ u16 mAlphaCompIdx;
|
||||
/* 0x134 */ u16 mBlendIdx;
|
||||
/* 0x136 */ u16 mNBTScaleIdx;
|
||||
}; // size 0x138
|
||||
|
||||
class J3DMaterialFactory_v21 {
|
||||
public:
|
||||
/* 80332DA4 */ J3DMaterialFactory_v21(J3DMaterialBlock_v21 const&);
|
||||
/* 80332F84 */ u16 countUniqueMaterials();
|
||||
/* 80332FA8 */ u32 countTexGens(int) const;
|
||||
/* 80332FE0 */ u32 countStages(int) const;
|
||||
/* 80333068 */ J3DMaterial* create(J3DMaterial*, int, u32) const;
|
||||
/* 803337D8 */ J3DGXColor newMatColor(int, int) const;
|
||||
/* 80333834 */ u8 newColorChanNum(int) const;
|
||||
/* 8033386C */ J3DColorChan newColorChan(int, int) const;
|
||||
/* 80333A10 */ u32 newTexGenNum(int) const;
|
||||
/* 80333A48 */ J3DTexCoord newTexCoord(int, int) const;
|
||||
/* 80333AA8 */ J3DTexMtx* newTexMtx(int, int) const;
|
||||
/* 80333B30 */ u8 newCullMode(int) const;
|
||||
/* 80333B70 */ u16 newTexNo(int, int) const;
|
||||
/* 80333BB8 */ J3DTevOrder newTevOrder(int, int) const;
|
||||
/* 80333C04 */ J3DGXColorS10 newTevColor(int, int) const;
|
||||
/* 80333C74 */ J3DGXColor newTevKColor(int, int) const;
|
||||
/* 80333CD0 */ u8 newTevStageNum(int) const;
|
||||
/* 80333D08 */ J3DTevStage newTevStage(int, int) const;
|
||||
/* 80333D68 */ J3DTevSwapModeTable newTevSwapModeTable(int, int) const;
|
||||
/* 80333E04 */ J3DFog newFog(int) const;
|
||||
/* 80333EE0 */ J3DAlphaComp newAlphaComp(int) const;
|
||||
/* 80333F60 */ J3DBlend newBlend(int) const;
|
||||
/* 80333FA4 */ J3DZMode newZMode(int) const;
|
||||
/* 80334004 */ u8 newZCompLoc(int) const;
|
||||
/* 8033403C */ u8 newDither(int) const;
|
||||
/* 80334074 */ J3DNBTScale newNBTScale(int) const;
|
||||
|
||||
u16 getMaterialID(u16 idx) { return mpMaterialID[idx]; }
|
||||
|
||||
/* 0x00 */ u16 mMaterialNum;
|
||||
/* 0x04 */ J3DMaterialInitData_v21* mpMaterialInitData;
|
||||
/* 0x08 */ u16* mpMaterialID;
|
||||
/* 0x0C */ GXColor* mpMatColor;
|
||||
/* 0x10 */ u8* mpColorChanNum;
|
||||
/* 0x14 */ J3DColorChanInfo* mpColorChanInfo;
|
||||
/* 0x18 */ u8* mpTexGenNum;
|
||||
/* 0x1C */ J3DTexCoordInfo* mpTexCoordInfo;
|
||||
/* 0x20 */ J3DTexCoord2Info* mpTexCoord2Info;
|
||||
/* 0x24 */ J3DTexMtxInfo* mpTexMtxInfo;
|
||||
/* 0x28 */ J3DTexMtxInfo* field_0x28;
|
||||
/* 0x2C */ u16* mpTexNo;
|
||||
/* 0x30 */ GXCullMode* mpCullMode;
|
||||
/* 0x34 */ J3DTevOrderInfo* mpTevOrderInfo;
|
||||
/* 0x38 */ GXColorS10* mpTevColor;
|
||||
/* 0x3C */ GXColor* mpTevKColor;
|
||||
/* 0x40 */ u8* mpTevStageNum;
|
||||
/* 0x44 */ J3DTevStageInfo* mpTevStageInfo;
|
||||
/* 0x48 */ J3DTevSwapModeInfo* mpTevSwapModeInfo;
|
||||
/* 0x4C */ J3DTevSwapModeTableInfo* mpTevSwapModeTableInfo;
|
||||
/* 0x50 */ J3DFogInfo* mpFogInfo;
|
||||
/* 0x54 */ J3DAlphaCompInfo* mpAlphaCompInfo;
|
||||
/* 0x58 */ J3DBlendInfo* mpBlendInfo;
|
||||
/* 0x5C */ J3DZModeInfo* mpZModeInfo;
|
||||
/* 0x60 */ u8* mpZCompLoc;
|
||||
/* 0x64 */ u8* mpDither;
|
||||
/* 0x68 */ J3DNBTScaleInfo* mpNBTScaleInfo;
|
||||
/* 0x6C */ u16 field_0x6c;
|
||||
/* 0x6E */ u8 field_0x6e;
|
||||
/* 0x6F */ u8 field_0x6f;
|
||||
};
|
||||
|
||||
#endif /* J3DMATERIALFACTORY_V21_H */
|
||||
|
||||
@@ -1,227 +1,249 @@
|
||||
#ifndef J3DMODELLOADER_H
|
||||
#define J3DMODELLOADER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
||||
class J3DModelData;
|
||||
class J3DMaterialTable;
|
||||
class J3DModelHierarchy;
|
||||
|
||||
struct J3DModelBlock {
|
||||
/* 0x00 */ u32 mBlockType;
|
||||
/* 0x04 */ u32 mBlockSize;
|
||||
};
|
||||
|
||||
struct J3DModelFileData {
|
||||
/* 0x00 */ u32 mMagic1;
|
||||
/* 0x04 */ u32 mMagic2;
|
||||
/* 0x08 */ u8 field_0x08[4];
|
||||
/* 0x0C */ u32 mBlockNum;
|
||||
/* 0x10 */ u8 field_0x10[0x10];
|
||||
/* 0x20 */ J3DModelBlock mBlocks[1];
|
||||
};
|
||||
|
||||
struct J3DModelInfoBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mFlags;
|
||||
/* 0x0C */ u32 mPacketNum;
|
||||
/* 0x10 */ u32 mVtxNum;
|
||||
/* 0x14 */ void* mpHierarchy;
|
||||
}; // size 0x18
|
||||
|
||||
struct J3DVertexBlock : public J3DModelBlock {
|
||||
/* 0x08 */ void* mpVtxAttrFmtList;
|
||||
/* 0x0C */ void* mpVtxPosArray;
|
||||
/* 0x10 */ void* mpVtxNrmArray;
|
||||
/* 0x14 */ void* mpVtxNBTArray;
|
||||
/* 0x18 */ void* mpVtxColorArray[2];
|
||||
/* 0x20 */ void* mpVtxTexCoordArray[8];
|
||||
}; // size 0x40
|
||||
|
||||
struct J3DEnvelopeBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mWEvlpMtxNum;
|
||||
/* 0x0C */ void* mpWEvlpMixMtxNum;
|
||||
/* 0x10 */ void* mpWEvlpMixIndex;
|
||||
/* 0x14 */ void* mpWEvlpMixWeight;
|
||||
/* 0x18 */ void* mpInvJointMtx;
|
||||
}; // size 0x1C
|
||||
|
||||
struct J3DDrawBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mMtxNum;
|
||||
/* 0x0C */ void* mpDrawMtxFlag;
|
||||
/* 0x10 */ void* mpDrawMtxIndex;
|
||||
}; // size 0x14
|
||||
|
||||
struct J3DJointBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mJointNum;
|
||||
/* 0x0C */ void* mpJointInitData;
|
||||
/* 0x10 */ void* mpIndexTable;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
}; // size 0x18
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
struct J3DMaterialBlock_v21 : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mMaterialNum;
|
||||
/* 0x0C */ void* field_0x0c;
|
||||
/* 0x10 */ void* field_0x10;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
/* more */
|
||||
};
|
||||
|
||||
struct J3DMaterialDLBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mMaterialNum;
|
||||
/* 0x0C */ void* field_0x0c;
|
||||
/* 0x10 */ void* field_0x10;
|
||||
/* 0x14 */ void* field_0x14;
|
||||
/* 0x18 */ void* field_0x18;
|
||||
/* 0x1C */ void* field_0x1c;
|
||||
/* 0x20 */ void* mpNameTable;
|
||||
/* more */
|
||||
};
|
||||
|
||||
struct J3DShapeBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mShapeNum;
|
||||
/* 0x0C */ void* mpShapeInitData;
|
||||
/* 0x10 */ void* mpIndexTable;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
/* 0x18 */ void* mpVtxDescList;
|
||||
/* 0x1C */ void* mpMtxTable;
|
||||
/* 0x20 */ void* mpDisplayListData;
|
||||
/* 0x24 */ void* mpMtxInitData;
|
||||
/* 0x28 */ void* mpDrawInitData;
|
||||
}; // size 0x2C
|
||||
|
||||
struct J3DTextureBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mTextureNum;
|
||||
/* 0x0C */ void* mpTextureRes;
|
||||
/* 0x10 */ void* mpNameTable;
|
||||
};
|
||||
|
||||
class J3DModelLoader {
|
||||
public:
|
||||
/* 8033468C */ J3DModelLoader();
|
||||
/* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32);
|
||||
/* 803351D0 */ void readVertex(J3DVertexBlock const*);
|
||||
/* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*);
|
||||
/* 80335480 */ void readDraw(J3DDrawBlock const*);
|
||||
/* 80335530 */ void readJoint(J3DJointBlock const*);
|
||||
/* 80335AF4 */ void readShape(J3DShapeBlock const*, u32);
|
||||
/* 80335C18 */ void readTexture(J3DTextureBlock const*);
|
||||
/* 80335F5C */ void readTextureTable(J3DTextureBlock const*);
|
||||
/* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32);
|
||||
/* 8033631C */ void modifyMaterial(u32);
|
||||
|
||||
/* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
|
||||
/* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*);
|
||||
/* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
|
||||
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*);
|
||||
/* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32);
|
||||
/* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
|
||||
/* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*);
|
||||
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
|
||||
|
||||
// virtuals
|
||||
/* 803347E0 */ J3DModelData* load(void const*, u32);
|
||||
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
|
||||
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
|
||||
/* 803367D4 */ u32 calcLoadSize(void const*, u32);
|
||||
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
|
||||
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
|
||||
/* 80336794 */ u16 countMaterialNum(void const*);
|
||||
/* 80334EE0 */ void setupBBoardInfo();
|
||||
/* 80336450 */ ~J3DModelLoader();
|
||||
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
|
||||
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 803364B0 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoader_v21 { // : public J3DModelLoader {
|
||||
public:
|
||||
/* 803363F4 */ ~J3DModelLoader_v21() {}
|
||||
/* 80335890 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 80335E20 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoader_v26 { // : public J3DModelLoader {
|
||||
public:
|
||||
/* 80336398 */ ~J3DModelLoader_v26() {}
|
||||
/* 80335614 */ void readMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80335CE4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
|
||||
/* 80336DB4 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336F60 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoaderDataBase {
|
||||
public:
|
||||
/* 803346BC */ static J3DModelData* load(void const* i_data, u32 i_flags);
|
||||
};
|
||||
|
||||
#endif /* J3DMODELLOADER_H */
|
||||
#ifndef J3DMODELLOADER_H
|
||||
#define J3DMODELLOADER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
||||
class J3DModelData;
|
||||
class J3DMaterialTable;
|
||||
class J3DModelHierarchy;
|
||||
|
||||
struct J3DModelBlock {
|
||||
/* 0x00 */ u32 mBlockType;
|
||||
/* 0x04 */ u32 mBlockSize;
|
||||
};
|
||||
|
||||
struct J3DModelFileData {
|
||||
/* 0x00 */ u32 mMagic1;
|
||||
/* 0x04 */ u32 mMagic2;
|
||||
/* 0x08 */ u8 field_0x08[4];
|
||||
/* 0x0C */ u32 mBlockNum;
|
||||
/* 0x10 */ u8 field_0x10[0x10];
|
||||
/* 0x20 */ J3DModelBlock mBlocks[1];
|
||||
};
|
||||
|
||||
struct J3DModelInfoBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mFlags;
|
||||
/* 0x0C */ u32 mPacketNum;
|
||||
/* 0x10 */ u32 mVtxNum;
|
||||
/* 0x14 */ void* mpHierarchy;
|
||||
}; // size 0x18
|
||||
|
||||
struct J3DVertexBlock : public J3DModelBlock {
|
||||
/* 0x08 */ void* mpVtxAttrFmtList;
|
||||
/* 0x0C */ void* mpVtxPosArray;
|
||||
/* 0x10 */ void* mpVtxNrmArray;
|
||||
/* 0x14 */ void* mpVtxNBTArray;
|
||||
/* 0x18 */ void* mpVtxColorArray[2];
|
||||
/* 0x20 */ void* mpVtxTexCoordArray[8];
|
||||
}; // size 0x40
|
||||
|
||||
struct J3DEnvelopeBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mWEvlpMtxNum;
|
||||
/* 0x0C */ void* mpWEvlpMixMtxNum;
|
||||
/* 0x10 */ void* mpWEvlpMixIndex;
|
||||
/* 0x14 */ void* mpWEvlpMixWeight;
|
||||
/* 0x18 */ void* mpInvJointMtx;
|
||||
}; // size 0x1C
|
||||
|
||||
struct J3DDrawBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mMtxNum;
|
||||
/* 0x0C */ void* mpDrawMtxFlag;
|
||||
/* 0x10 */ void* mpDrawMtxIndex;
|
||||
}; // size 0x14
|
||||
|
||||
struct J3DJointBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mJointNum;
|
||||
/* 0x0C */ void* mpJointInitData;
|
||||
/* 0x10 */ void* mpIndexTable;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
}; // size 0x18
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
struct J3DShapeBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mShapeNum;
|
||||
/* 0x0C */ void* mpShapeInitData;
|
||||
/* 0x10 */ void* mpIndexTable;
|
||||
/* 0x14 */ void* mpNameTable;
|
||||
/* 0x18 */ void* mpVtxDescList;
|
||||
/* 0x1C */ void* mpMtxTable;
|
||||
/* 0x20 */ void* mpDisplayListData;
|
||||
/* 0x24 */ void* mpMtxInitData;
|
||||
/* 0x28 */ void* mpDrawInitData;
|
||||
}; // size 0x2C
|
||||
|
||||
struct J3DTextureBlock : public J3DModelBlock {
|
||||
/* 0x08 */ u16 mTextureNum;
|
||||
/* 0x0C */ void* mpTextureRes;
|
||||
/* 0x10 */ void* mpNameTable;
|
||||
};
|
||||
|
||||
class J3DModelLoader {
|
||||
public:
|
||||
/* 8033468C */ J3DModelLoader();
|
||||
/* 80335048 */ void readInformation(J3DModelInfoBlock const*, u32);
|
||||
/* 803351D0 */ void readVertex(J3DVertexBlock const*);
|
||||
/* 803353F0 */ void readEnvelop(J3DEnvelopeBlock const*);
|
||||
/* 80335480 */ void readDraw(J3DDrawBlock const*);
|
||||
/* 80335530 */ void readJoint(J3DJointBlock const*);
|
||||
/* 80335AF4 */ void readShape(J3DShapeBlock const*, u32);
|
||||
/* 80335C18 */ void readTexture(J3DTextureBlock const*);
|
||||
/* 80335F5C */ void readTextureTable(J3DTextureBlock const*);
|
||||
/* 80336028 */ void readPatchedMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336168 */ void readMaterialDL(J3DMaterialDLBlock const*, u32);
|
||||
/* 8033631C */ void modifyMaterial(u32);
|
||||
|
||||
/* 80336CD8 */ u32 calcSizeInformation(J3DModelInfoBlock const*, u32);
|
||||
/* 80336D64 */ u32 calcSizeJoint(J3DJointBlock const*);
|
||||
/* 80336D90 */ u32 calcSizeEnvelope(J3DEnvelopeBlock const*);
|
||||
/* 80336DA0 */ u32 calcSizeDraw(J3DDrawBlock const*);
|
||||
/* 80336EA0 */ u32 calcSizeShape(J3DShapeBlock const*, u32);
|
||||
/* 80336F44 */ u32 calcSizeTexture(J3DTextureBlock const*);
|
||||
/* 80336FF0 */ u32 calcSizeTextureTable(J3DTextureBlock const*);
|
||||
/* 80337010 */ u32 calcSizePatchedMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 803370A0 */ u32 calcSizeMaterialDL(J3DMaterialDLBlock const*, u32);
|
||||
|
||||
// virtuals
|
||||
/* 803347E0 */ J3DModelData* load(void const*, u32);
|
||||
/* 80334ABC */ J3DMaterialTable* loadMaterialTable(void const*);
|
||||
/* 80334C20 */ J3DModelData* loadBinaryDisplayList(void const*, u32);
|
||||
/* 803367D4 */ u32 calcLoadSize(void const*, u32);
|
||||
/* 803369A0 */ u32 calcLoadMaterialTableSize(void const*);
|
||||
/* 80336A98 */ u32 calcLoadBinaryDisplayListSize(void const*, u32);
|
||||
/* 80336794 */ u16 countMaterialNum(void const*);
|
||||
/* 80334EE0 */ void setupBBoardInfo();
|
||||
/* 80336450 */ ~J3DModelLoader();
|
||||
/* 8033649C */ void readMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336498 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 803364A4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
|
||||
/* 803364A0 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 803364A8 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 803364B0 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoader_v21 { // : public J3DModelLoader {
|
||||
public:
|
||||
/* 803363F4 */ ~J3DModelLoader_v21() {}
|
||||
/* 80335890 */ void readMaterial_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
/* 80335E20 */ void readMaterialTable_v21(J3DMaterialBlock_v21 const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoader_v26 { // : public J3DModelLoader {
|
||||
public:
|
||||
/* 80336398 */ ~J3DModelLoader_v26() {}
|
||||
/* 80335614 */ void readMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80335CE4 */ void readMaterialTable(J3DMaterialBlock const*, u32);
|
||||
/* 80336DB4 */ u32 calcSizeMaterial(J3DMaterialBlock const*, u32);
|
||||
/* 80336F60 */ u32 calcSizeMaterialTable(J3DMaterialBlock const*, u32);
|
||||
|
||||
/* 0x00 */ void* _vtable;
|
||||
/* 0x04 */ J3DModelData* mpModelData;
|
||||
/* 0x08 */ J3DMaterialTable* mpMaterialTable;
|
||||
/* 0x0C */ J3DShapeBlock const* mpShapeBlock;
|
||||
/* 0x10 */ J3DMaterialBlock const* mpMaterialBlock;
|
||||
/* 0x14 */ J3DModelHierarchy* mpModelHierarchy;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u16 mEnvelopeSize;
|
||||
};
|
||||
|
||||
class J3DModelLoaderDataBase {
|
||||
public:
|
||||
/* 803346BC */ static J3DModelData* load(void const* i_data, u32 i_flags);
|
||||
};
|
||||
|
||||
#endif /* J3DMODELLOADER_H */
|
||||
|
||||
@@ -44,8 +44,4 @@ u8 mDoLib_setResTimgObj(ResTIMG const* res, GXTexObj* o_texObj, u32 tlut_name,
|
||||
GXTlutObj* o_tlutObj);
|
||||
void mDoLib_pos2camera(Vec* src, Vec* dst);
|
||||
|
||||
inline u32 calcAlphaCmpID(u32 param_1, u32 param_2, u32 param_3) {
|
||||
return ((param_1 & 0xff) << 5) + ((param_2 & 0xff) << 3) + (param_3 & 0xff);
|
||||
}
|
||||
|
||||
#endif /* M_DO_M_DO_LIB_H */
|
||||
|
||||
Reference in New Issue
Block a user