summaryrefslogtreecommitdiff
path: root/include/JSystem/J3DGraphBase
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-10-11 09:38:53 -0700
committerGitHub <noreply@github.com>2021-10-11 18:38:53 +0200
commita2636e84c3eefa98ad8a24dbb5398b664f3d732a (patch)
tree2d2dd404de4364097f3490c77dfc8167e420da5e /include/JSystem/J3DGraphBase
parent5084413cb7c8869a866ed552070369b1aadc748f (diff)
J3D setup (#155)
* setup j3d classes * remove asm * fixes * fix newDifferedDisplayList
Diffstat (limited to 'include/JSystem/J3DGraphBase')
-rw-r--r--include/JSystem/J3DGraphBase/J3DMatBlock.h916
-rw-r--r--include/JSystem/J3DGraphBase/J3DMaterial.h101
-rw-r--r--include/JSystem/J3DGraphBase/J3DPacket.h83
-rw-r--r--include/JSystem/J3DGraphBase/J3DShape.h9
-rw-r--r--include/JSystem/J3DGraphBase/J3DShapeMtx.h62
-rw-r--r--include/JSystem/J3DGraphBase/J3DSys.h49
-rw-r--r--include/JSystem/J3DGraphBase/J3DTevs.h53
-rw-r--r--include/JSystem/J3DGraphBase/J3DTexture.h66
-rw-r--r--include/JSystem/J3DGraphBase/J3DTransform.h14
-rw-r--r--include/JSystem/J3DGraphBase/J3DVertex.h88
10 files changed, 1390 insertions, 51 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h
index ff5235ef2d..c62fa07850 100644
--- a/include/JSystem/J3DGraphBase/J3DMatBlock.h
+++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h
@@ -1,14 +1,926 @@
#ifndef J3DMATBLOCK_H
#define J3DMATBLOCK_H
+#include "JSystem/J3DGraphBase/J3DStruct.h"
+#include "JSystem/J3DGraphBase/J3DTevs.h"
+#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "dolphin/gx/GXTexture.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
-class J3DGXColorS10 {
-public:
+struct J3DGXColorS10 {
/* 8000E460 */ J3DGXColorS10();
_GXColorS10 mColor;
};
+struct J3DGXColor : public _GXColor {
+ /* 8000E538 */ J3DGXColor();
+};
+
+struct J3DNBTScaleInfo {
+ /* 8032587C */ void operator=(J3DNBTScaleInfo const&);
+
+ /* 0x0 */ u8 field_0x0;
+ /* 0x4 */ Vec mScale;
+}; // Size: 0x10
+
+struct J3DNBTScale : public J3DNBTScaleInfo {};
+
+class J3DTexGenBlock {
+public:
+ /* 80317354 */ virtual void reset(J3DTexGenBlock*);
+ virtual void calc(f32 const (*)[4]) = 0;
+ virtual void calcWithoutViewMtx(f32 const (*)[4]) = 0;
+ virtual void calcPostTexMtx(f32 const (*)[4]) = 0;
+ virtual void calcPostTexMtxWithoutViewMtx(f32 const (*)[4]) = 0;
+ virtual void load() = 0;
+ virtual void patch() = 0;
+ virtual void diff(u32) = 0;
+ virtual void diffTexMtx() = 0;
+ virtual void diffTexGen() = 0;
+ /* 803172FC */ virtual bool countDLSize();
+ virtual void getType() = 0;
+ /* 8031741C */ virtual void setTexGenNum(u32 const*);
+ /* 8000E0D0 */ virtual void setTexGenNum(u32);
+ /* 8000DFE8 */ virtual bool getTexGenNum() const;
+ /* 8000E0CC */ virtual void setTexCoord(u32, J3DTexCoord const*);
+ /* 8000DFE0 */ virtual bool getTexCoord(u32);
+ /* 8003AB2C */ virtual void setTexMtx(u32, J3DTexMtx*);
+ /* 8000DFD8 */ virtual J3DTexMtx* getTexMtx(u32);
+ /* 80317424 */ virtual void setNBTScale(J3DNBTScale const*);
+ /* 80317420 */ virtual void setNBTScale(J3DNBTScale);
+ /* 80317334 */ virtual bool getNBTScale();
+ /* 80317428 */ virtual bool getTexMtxOffset() const;
+ /* 80317430 */ virtual void setTexMtxOffset(u32);
+ /* 803171DC */ virtual ~J3DTexGenBlock();
+};
+
+class J3DTexGenBlockPatched : public J3DTexGenBlock {
+public:
+ /* 80317644 */ void initialize();
+
+ /* 80320084 */ virtual void reset(J3DTexGenBlock*);
+ /* 803213C0 */ virtual void calc(f32 const (*)[4]);
+ /* 80321584 */ virtual void calcWithoutViewMtx(f32 const (*)[4]);
+ /* 803216D8 */ virtual void calcPostTexMtx(f32 const (*)[4]);
+ /* 8032181C */ virtual void calcPostTexMtxWithoutViewMtx(f32 const (*)[4]);
+ /* 80322E70 */ virtual void load();
+ /* 8031AA88 */ virtual void patch();
+ /* 8031AC68 */ virtual void diff(u32);
+ /* 8031ACD0 */ virtual void diffTexMtx();
+ /* 8031AD30 */ virtual void diffTexGen();
+ /* 80317B9C */ virtual s32 countDLSize();
+ /* 80322E74 */ virtual void getType();
+ /* 80322D3C */ virtual void setTexGenNum(u32 const*);
+ /* 80322D34 */ virtual void setTexGenNum(u32);
+ /* 80322D48 */ virtual void getTexGenNum() const;
+ /* 80322D50 */ virtual void setTexCoord(u32, J3DTexCoord const*);
+ /* 80322D64 */ virtual void getTexCoord(u32);
+ /* 80322D78 */ virtual void setTexMtx(u32, J3DTexMtx*);
+ /* 80322D88 */ virtual void getTexMtx(u32);
+ /* 80322D98 */ virtual void getTexMtxOffset() const;
+ /* 80322DA0 */ virtual void setTexMtxOffset(u32);
+ /* 80317180 */ virtual ~J3DTexGenBlockPatched();
+
+private:
+ /* 0x04 */ u32 mTexGenNum;
+ /* 0x08 */ J3DTexCoord mTexCoord[9];
+ /* 0x38 */ J3DTexMtx* mTexMtx[8];
+ /* 0x58 */ u32 mTexMtxOffset;
+}; // Size: 0x5C
+
+class J3DTexGenBlockBasic : public J3DTexGenBlockPatched {
+public:
+ /* 803176A4 */ void initialize();
+
+ /* 803202DC */ virtual void reset(J3DTexGenBlock*);
+ /* 8031A9E8 */ virtual void load();
+ /* 8031ABC0 */ virtual void patch();
+ /* 80317BAC */ virtual s32 countDLSize();
+ /* 80322C6C */ virtual void getType();
+ /* 80322C9C */ virtual void setNBTScale(J3DNBTScale const*);
+ /* 80322C78 */ virtual void setNBTScale(J3DNBTScale);
+ /* 80322CC0 */ virtual void getNBTScale();
+ /* 80322CC8 */ virtual ~J3DTexGenBlockBasic();
+
+private:
+ /* 0x5C */ J3DNBTScale mNBTScale;
+}; // Size: 0x6C
+
+class J3DTexGenBlock4 : public J3DTexGenBlockPatched {
+public:
+ /* 80317674 */ void initialize();
+
+ /* 803201A0 */ virtual void reset(J3DTexGenBlock*);
+ /* 8031A948 */ virtual void load();
+ /* 8031AB18 */ virtual void patch();
+ /* 80317BA4 */ virtual s32 countDLSize();
+ /* 80322DA8 */ virtual void getType();
+ /* 80322DD8 */ virtual void setNBTScale(J3DNBTScale const*);
+ /* 80322DB4 */ virtual void setNBTScale(J3DNBTScale);
+ /* 80322DFC */ virtual void getNBTScale();
+ /* 80322E04 */ virtual ~J3DTexGenBlock4();
+
+private:
+ /* 0x5C */ J3DNBTScale mNBTScale;
+}; // Size: 0x6C
+
+class J3DTevBlock {
+public:
+ /* 80317350 */ virtual void reset(J3DTevBlock*);
+ /* 80317330 */ virtual void load();
+ /* 8031CD44 */ virtual void diff(u32);
+ /* 80321948 */ virtual void diffTexNo();
+ /* 80321938 */ virtual void diffTevReg();
+ /* 80321944 */ virtual void diffTexCoordScale();
+ /* 80321940 */ virtual void diffTevStage();
+ /* 8032193C */ virtual void diffTevStageIndirect();
+ /* 8000DBD4 */ virtual void patch();
+ /* 8032353C */ virtual void patchTexNo();
+ /* 80323540 */ virtual void patchTevReg();
+ /* 8000DBC8 */ virtual void patchTexNoAndTexCoordScale();
+ virtual void ptrToIndex() = 0;
+ virtual void indexToPtr() = 0;
+ virtual void getType() = 0;
+ /* 8031730C */ virtual bool countDLSize();
+ /* 80323544 */ virtual void setTexNo(u32, u16 const*);
+ /* 8000E0AC */ virtual void setTexNo(u32, u16);
+ /* 8000DF94 */ virtual void getTexNo(u32) const;
+ /* 80323548 */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 8000E0BC */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 8000DFB8 */ virtual bool getTevOrder(u32);
+ /* 80110E80 */ virtual void setTevColor(u32, J3DGXColorS10 const*);
+ /* 8000E0C4 */ virtual void setTevColor(u32, J3DGXColorS10);
+ /* 8000DFC8 */ virtual _GXColorS10* getTevColor(u32);
+ /* 800732AC */ virtual void setTevKColor(u32, J3DGXColor const*);
+ /* 8000E0C0 */ virtual void setTevKColor(u32, J3DGXColor);
+ /* 8000DFC0 */ virtual _GXColor* getTevKColor(u32);
+ /* 80322950 */ virtual void setTevKColorSel(u32, u8 const*);
+ /* 8000E0B8 */ virtual void setTevKColorSel(u32, u8);
+ /* 8000DFB0 */ virtual bool getTevKColorSel(u32);
+ /* 80322954 */ virtual void setTevKAlphaSel(u32, u8 const*);
+ /* 8000E0B4 */ virtual void setTevKAlphaSel(u32, u8);
+ /* 8000DFA8 */ virtual bool getTevKAlphaSel(u32);
+ /* 8032354C */ virtual void setTevStageNum(u8 const*);
+ /* 8000E0C8 */ virtual void setTevStageNum(u8);
+ /* 8000DFD0 */ virtual u8 getTevStageNum() const;
+ /* 80323550 */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 8000E0A8 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 8000DF8C */ virtual bool getTevStage(u32);
+ /* 8032295C */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo const*);
+ /* 80322958 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo);
+ /* 80322960 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable const*);
+ /* 8000E0B0 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable);
+ /* 8000DFA0 */ virtual bool getTevSwapModeTable(u32);
+ /* 80323554 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 8000E0A4 */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 8000DF84 */ virtual bool getIndTevStage(u32);
+ /* 80323558 */ virtual bool getTexNoOffset() const;
+ /* 80322964 */ virtual bool getTevRegOffset() const;
+ /* 80321FE0 */ virtual void setTexNoOffset(u32);
+ /* 8032296C */ virtual void setTevRegOffset(u32);
+ /* 80317224 */ virtual ~J3DTevBlock();
+
+private:
+ /* 8031E098 */ void indexToPtr_private(u32);
+
+ /* 0x4 */ u32 mTexNoOffset;
+};
+
+class J3DTevBlockPatched : public J3DTevBlock {
+public:
+ /* 803176E0 */ void initialize();
+
+ /* 80320418 */ virtual void reset(J3DTevBlock*);
+ /* 80322970 */ virtual void load();
+ /* 8031CE00 */ virtual void diffTexNo();
+ /* 8031D028 */ virtual void diffTevReg();
+ /* 8031D0C4 */ virtual void diffTexCoordScale();
+ /* 8031CE64 */ virtual void diffTevStage();
+ /* 8031CF78 */ virtual void diffTevStageIndirect();
+ /* 8031C228 */ virtual void patch();
+ /* 8031BF4C */ virtual void patchTexNo();
+ /* 8031BFE0 */ virtual void patchTevReg();
+ /* 8031C0AC */ virtual void patchTexNoAndTexCoordScale();
+ /* 8031DFB4 */ virtual void ptrToIndex();
+ /* 80322974 */ virtual void indexToPtr();
+ /* 80322998 */ virtual void getType();
+ /* 80317BB4 */ virtual s32 countDLSize();
+ /* 803229D0 */ virtual void setTexNo(u32, u16 const*);
+ /* 803229C0 */ virtual void setTexNo(u32, u16);
+ /* 803229E4 */ virtual void getTexNo(u32) const;
+ /* 80322A08 */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 803229F4 */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 80322A1C */ virtual void getTevOrder(u32);
+ /* 80322B24 */ virtual void setTevColor(u32, J3DGXColorS10 const*);
+ /* 80322AF8 */ virtual void setTevColor(u32, J3DGXColorS10);
+ /* 80322B50 */ virtual void getTevColor(u32);
+ /* 80322B90 */ virtual void setTevKColor(u32, J3DGXColor const*);
+ /* 80322B64 */ virtual void setTevKColor(u32, J3DGXColor);
+ /* 80322BBC */ virtual void getTevKColor(u32);
+ /* 80322BDC */ virtual void setTevKColorSel(u32, u8 const*);
+ /* 80322BD0 */ virtual void setTevKColorSel(u32, u8);
+ /* 80322BEC */ virtual void getTevKColorSel(u32);
+ /* 803229AC */ virtual void setTevStageNum(u8 const*);
+ /* 803229A4 */ virtual void setTevStageNum(u8);
+ /* 803229B8 */ virtual void getTevStageNum() const;
+ /* 80322A6C */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 80322A30 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 80322AA8 */ virtual void getTevStage(u32);
+ /* 80322AD0 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 80322ABC */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 80322AE4 */ virtual void getIndTevStage(u32);
+ /* 80322BF8 */ virtual void getTexNoOffset() const;
+ /* 80322C00 */ virtual void getTevRegOffset() const;
+ /* 80322C08 */ virtual void setTevRegOffset(u32);
+ /* 80322C10 */ virtual ~J3DTevBlockPatched();
+
+private:
+ /* 0x08 */ u16 mTexNo[8];
+ /* 0x18 */ J3DTevOrder mTevOrder[8];
+ /* 0x38 */ J3DTevStage mTevStage[8];
+ /* 0x78 */ J3DIndTevStage mIndTevStage[8];
+ /* 0x98 */ J3DGXColorS10 mTevColor[4];
+ /* 0xB8 */ J3DGXColor mTevKColor[4];
+ /* 0xC8 */ u8 mTevKColorSel[8];
+ /* 0xD0 */ u8 mTevStageNum;
+ /* 0xD4 */ u32 mTevRegOffset;
+}; // Size: 0xD8
+
+class J3DTevBlockNull : public J3DTevBlock {
+ /* 803176D4 */ void initialize();
+};
+
+class J3DTevBlock4 : public J3DTevBlock {
+public:
+ /* 803178EC */ void initialize();
+
+ /* 8032098C */ virtual void reset(J3DTevBlock*);
+ /* 8031B4C0 */ virtual void load();
+ /* 8031D758 */ virtual void diffTexNo();
+ /* 8031D7BC */ virtual void diffTevReg();
+ /* 8031DA1C */ virtual void diffTexCoordScale();
+ /* 8031D858 */ virtual void diffTevStage();
+ /* 8031D96C */ virtual void diffTevStageIndirect();
+ /* 8031C9D0 */ virtual void patch();
+ /* 8031C6F4 */ virtual void patchTexNo();
+ /* 8031C788 */ virtual void patchTevReg();
+ /* 8031C854 */ virtual void patchTexNoAndTexCoordScale();
+ /* 80321FE8 */ virtual void ptrToIndex();
+ /* 80321FEC */ virtual void indexToPtr();
+ /* 80322010 */ virtual void getType();
+ /* 80317BCC */ virtual s32 countDLSize();
+ /* 8032202C */ virtual void setTexNo(u32, u16 const*);
+ /* 8032201C */ virtual void setTexNo(u32, u16);
+ /* 80322040 */ virtual void getTexNo(u32) const;
+ /* 80322064 */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 80322050 */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 80322078 */ virtual void getTevOrder(u32);
+ /* 803220B8 */ virtual void setTevColor(u32, J3DGXColorS10 const*);
+ /* 8032208C */ virtual void setTevColor(u32, J3DGXColorS10);
+ /* 803220E4 */ virtual void getTevColor(u32);
+ /* 80322124 */ virtual void setTevKColor(u32, J3DGXColor const*);
+ /* 803220F8 */ virtual void setTevKColor(u32, J3DGXColor);
+ /* 80322150 */ virtual void getTevKColor(u32);
+ /* 80322170 */ virtual void setTevKColorSel(u32, u8 const*);
+ /* 80322164 */ virtual void setTevKColorSel(u32, u8);
+ /* 80322180 */ virtual void getTevKColorSel(u32);
+ /* 80322198 */ virtual void setTevKAlphaSel(u32, u8 const*);
+ /* 8032218C */ virtual void setTevKAlphaSel(u32, u8);
+ /* 803221A8 */ virtual void getTevKAlphaSel(u32);
+ /* 803221BC */ virtual void setTevStageNum(u8 const*);
+ /* 803221B4 */ virtual void setTevStageNum(u8);
+ /* 803221C8 */ virtual void getTevStageNum() const;
+ /* 8032220C */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 803221D0 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 80322248 */ virtual void getTevStage(u32);
+ /* 80322294 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo const*);
+ /* 8032225C */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo);
+ /* 803222DC */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable const*);
+ /* 803222CC */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable);
+ /* 803222EC */ virtual void getTevSwapModeTable(u32);
+ /* 80322310 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 803222FC */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 80322324 */ virtual void getIndTevStage(u32);
+ /* 80322338 */ virtual void getTexNoOffset() const;
+ /* 80322340 */ virtual void getTevRegOffset() const;
+ /* 80322348 */ virtual void setTevRegOffset(u32);
+ /* 80322350 */ virtual ~J3DTevBlock4();
+
+private:
+ /* 0x08 */ u16 mTexNo[4];
+ /* 0x10 */ J3DTevOrder mTevOrder[4];
+ /* 0x20 */ u8 mTevStageNum;
+ /* 0x21 */ J3DTevStage mTevStage[4];
+ /* 0x42 */ J3DGXColorS10 mTevColor[4];
+ /* 0x62 */ J3DGXColor mTevKColor[4];
+ /* 0x72 */ u8 mTevKColorSel[4];
+ /* 0x76 */ u8 mTevKAlphaSel[4];
+ /* 0x7A */ J3DTevSwapModeTable mTevSwapModeTable[4];
+ /* 0x80 */ J3DIndTevStage mIndTevStage[4];
+ /* 0x90 */ u32 mTevRegOffset;
+}; // Size: 0x94
+
+class J3DTevBlock2 : public J3DTevBlock {
+public:
+ /* 80317810 */ void initialize();
+
+ /* 803206AC */ virtual void reset(J3DTevBlock*);
+ /* 8031AFA4 */ virtual void load();
+ /* 8031D3D0 */ virtual void diffTexNo();
+ /* 8031D434 */ virtual void diffTevReg();
+ /* 8031D694 */ virtual void diffTexCoordScale();
+ /* 8031D4D0 */ virtual void diffTevStage();
+ /* 8031D5E4 */ virtual void diffTevStageIndirect();
+ /* 8031C6A8 */ virtual void patch();
+ /* 8031C3F8 */ virtual void patchTexNo();
+ /* 8031C48C */ virtual void patchTevReg();
+ /* 8031C558 */ virtual void patchTexNoAndTexCoordScale();
+ /* 803223AC */ virtual void ptrToIndex();
+ /* 803223B0 */ virtual void indexToPtr();
+ /* 803223D4 */ virtual void getType();
+ /* 80317BC4 */ virtual s32 countDLSize();
+ /* 803223F0 */ virtual void setTexNo(u32, u16 const*);
+ /* 803223E0 */ virtual void setTexNo(u32, u16);
+ /* 80322404 */ virtual void getTexNo(u32) const;
+ /* 80322428 */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 80322414 */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 8032243C */ virtual void getTevOrder(u32);
+ /* 8032247C */ virtual void setTevColor(u32, J3DGXColorS10 const*);
+ /* 80322450 */ virtual void setTevColor(u32, J3DGXColorS10);
+ /* 803224A8 */ virtual void getTevColor(u32);
+ /* 803224E8 */ virtual void setTevKColor(u32, J3DGXColor const*);
+ /* 803224BC */ virtual void setTevKColor(u32, J3DGXColor);
+ /* 80322514 */ virtual void getTevKColor(u32);
+ /* 80322534 */ virtual void setTevKColorSel(u32, u8 const*);
+ /* 80322528 */ virtual void setTevKColorSel(u32, u8);
+ /* 80322544 */ virtual void getTevKColorSel(u32);
+ /* 8032255C */ virtual void setTevKAlphaSel(u32, u8 const*);
+ /* 80322550 */ virtual void setTevKAlphaSel(u32, u8);
+ /* 8032256C */ virtual void getTevKAlphaSel(u32);
+ /* 80322580 */ virtual void setTevStageNum(u8 const*);
+ /* 80322578 */ virtual void setTevStageNum(u8);
+ /* 8032258C */ virtual void getTevStageNum() const;
+ /* 803225D0 */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 80322594 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 8032260C */ virtual void getTevStage(u32);
+ /* 80322658 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo const*);
+ /* 80322620 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo);
+ /* 803226A0 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable const*);
+ /* 80322690 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable);
+ /* 803226B0 */ virtual void getTevSwapModeTable(u32);
+ /* 803226D4 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 803226C0 */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 803226E8 */ virtual void getIndTevStage(u32);
+ /* 803226FC */ virtual void getTexNoOffset() const;
+ /* 80322704 */ virtual void getTevRegOffset() const;
+ /* 8032270C */ virtual void setTevRegOffset(u32);
+ /* 80322714 */ virtual ~J3DTevBlock2();
+
+private:
+ /* 0x08 */ u16 mTexNo[2];
+ /* 0x0C */ J3DTevOrder mTevOrder[2];
+ /* 0x14 */ J3DGXColorS10 mTevColor[4];
+ /* 0x34 */ u8 mTevStageNum;
+ /* 0x35 */ J3DTevStage mTevStage[2];
+ /* 0x45 */ J3DGXColor mTevKColor[4];
+ /* 0x55 */ u8 mTevKColorSel[2];
+ /* 0x57 */ u8 mTevKAlphaSel[2];
+ /* 0x59 */ J3DTevSwapModeTable mTevSwapModeTable[4];
+ /* 0x60 */ J3DIndTevStage mIndTevStage[2];
+ /* 0x68 */ u32 mTevRegOffset;
+}; // Size: 0x6C
+
+class J3DTevBlock16 : public J3DTevBlock {
+public:
+ /* 80317A00 */ void initialize();
+
+ /* 80320E24 */ virtual void reset(J3DTevBlock*);
+ /* 8031BA04 */ virtual void load();
+ /* 8031DB14 */ virtual void diffTexNo();
+ /* 8031DB78 */ virtual void diffTevReg();
+ /* 8031DDD8 */ virtual void diffTexCoordScale();
+ /* 8031DC14 */ virtual void diffTevStage();
+ /* 8031DD28 */ virtual void diffTevStageIndirect();
+ /* 8031CCF8 */ virtual void patch();
+ /* 8031CA1C */ virtual void patchTexNo();
+ /* 8031CAB0 */ virtual void patchTevReg();
+ /* 8031CB7C */ virtual void patchTexNoAndTexCoordScale();
+ /* 8031DED0 */ virtual void ptrToIndex();
+ /* 80321C20 */ virtual void indexToPtr();
+ /* 80321C44 */ virtual void getType();
+ /* 80317BD4 */ virtual s32 countDLSize();
+ /* 80321C60 */ virtual void setTexNo(u32, u16 const*);
+ /* 80321C50 */ virtual void setTexNo(u32, u16);
+ /* 80321C74 */ virtual void getTexNo(u32) const;
+ /* 80321C98 */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 80321C84 */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 80321CAC */ virtual void getTevOrder(u32);
+ /* 80321CEC */ virtual void setTevColor(u32, J3DGXColorS10 const*);
+ /* 80321CC0 */ virtual void setTevColor(u32, J3DGXColorS10);
+ /* 80321D18 */ virtual void getTevColor(u32);
+ /* 80321D58 */ virtual void setTevKColor(u32, J3DGXColor const*);
+ /* 80321D2C */ virtual void setTevKColor(u32, J3DGXColor);
+ /* 80321D84 */ virtual void getTevKColor(u32);
+ /* 80321DA4 */ virtual void setTevKColorSel(u32, u8 const*);
+ /* 80321D98 */ virtual void setTevKColorSel(u32, u8);
+ /* 80321DB4 */ virtual void getTevKColorSel(u32);
+ /* 80321DCC */ virtual void setTevKAlphaSel(u32, u8 const*);
+ /* 80321DC0 */ virtual void setTevKAlphaSel(u32, u8);
+ /* 80321DDC */ virtual void getTevKAlphaSel(u32);
+ /* 80321DE8 */ virtual void setTevStageNum(u8);
+ /* 80321DF0 */ virtual void setTevStageNum(u8 const*);
+ /* 80321DFC */ virtual void getTevStageNum() const;
+ /* 80321E40 */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 80321E04 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 80321E7C */ virtual void getTevStage(u32);
+ /* 80321EC8 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo const*);
+ /* 80321E90 */ virtual void setTevSwapModeInfo(u32, J3DTevSwapModeInfo);
+ /* 80321F10 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable const*);
+ /* 80321F00 */ virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable);
+ /* 80321F20 */ virtual void getTevSwapModeTable(u32);
+ /* 80321F44 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 80321F30 */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 80321F58 */ virtual void getIndTevStage(u32);
+ /* 80321F6C */ virtual void getTexNoOffset() const;
+ /* 80321F74 */ virtual void getTevRegOffset() const;
+ /* 80321F7C */ virtual void setTevRegOffset(u32);
+ /* 80321F84 */ virtual ~J3DTevBlock16();
+
+private:
+ /* 0x008 */ u16 mTexNo[8];
+ /* 0x018 */ J3DTevOrder mTevOrder[16];
+ /* 0x058 */ u8 mTevStageNum;
+ /* 0x059 */ J3DTevStage mTevStage[16];
+ /* 0x0DA */ J3DGXColorS10 mTevColor[4];
+ /* 0x0FA */ J3DGXColor mTevKColor[4];
+ /* 0x10A */ u8 mTevKColorSel[16];
+ /* 0x11A */ u8 mTevKAlphaSel[16];
+ /* 0x12A */ J3DTevSwapModeTable mTevSwapModeTable[4];
+ /* 0x130 */ J3DIndTevStage mIndTevStage[16];
+ /* 0x170 */ u32 mTevRegOffset;
+}; // Size: 0x174
+
+class J3DTevBlock1 : public J3DTevBlock {
+public:
+ /* 803177E8 */ void initialize();
+
+ /* 803205D4 */ virtual void reset(J3DTevBlock*);
+ /* 8031AD64 */ virtual void load();
+ /* 8031D1BC */ virtual void diffTexNo();
+ /* 8031D1F4 */ virtual void diffTevReg();
+ /* 8031D368 */ virtual void diffTexCoordScale();
+ /* 8031D1F8 */ virtual void diffTevStage();
+ /* 8031D2E8 */ virtual void diffTevStageIndirect();
+ /* 8031C3CC */ virtual void patch();
+ /* 8031C274 */ virtual void patchTexNo();
+ /* 8031C2E4 */ virtual void patchTevReg();
+ /* 8031C2E8 */ virtual void patchTexNoAndTexCoordScale();
+ /* 80322770 */ virtual void ptrToIndex();
+ /* 80322774 */ virtual void indexToPtr();
+ /* 80322798 */ virtual void getType();
+ /* 80317BBC */ virtual s32 countDLSize();
+ /* 803227B4 */ virtual void setTexNo(u32, u16 const*);
+ /* 803227A4 */ virtual void setTexNo(u32, u16);
+ /* 803227C8 */ virtual void getTexNo(u32) const;
+ /* 803227EC */ virtual void setTevOrder(u32, J3DTevOrder const*);
+ /* 803227D8 */ virtual void setTevOrder(u32, J3DTevOrder);
+ /* 80322800 */ virtual void getTevOrder(u32);
+ /* 80322818 */ virtual void setTevStageNum(u8 const*);
+ /* 80322814 */ virtual void setTevStageNum(u8);
+ /* 8032281C */ virtual bool getTevStageNum() const;
+ /* 80322860 */ virtual void setTevStage(u32, J3DTevStage const*);
+ /* 80322824 */ virtual void setTevStage(u32, J3DTevStage);
+ /* 8032289C */ virtual void getTevStage(u32);
+ /* 803228C4 */ virtual void setIndTevStage(u32, J3DIndTevStage const*);
+ /* 803228B0 */ virtual void setIndTevStage(u32, J3DIndTevStage);
+ /* 803228D8 */ virtual void getIndTevStage(u32);
+ /* 803228EC */ virtual void getTexNoOffset() const;
+ /* 803228F4 */ virtual ~J3DTevBlock1();
+
+private:
+ /* 0x08 */ u16 mTexNo[1];
+ /* 0x0A */ J3DTevOrder mTevOrder[1];
+ /* 0x0E */ J3DTevStage mTevStage[1];
+ /* 0x18 */ J3DIndTevStage mIndTevStage[1];
+}; // Size: 0x1C
+
+struct J3DZMode {
+ /* 0x0 */ u16 mZModeID;
+};
+
+struct J3DBlendInfo {
+ /* 0x0 */ u8 mType;
+ /* 0x1 */ u8 mSrcFactor;
+ /* 0x2 */ u8 mDstFactor;
+ /* 0x3 */ u8 mOp;
+};
+
+struct J3DBlend : public J3DBlendInfo {};
+
+struct J3DFogInfo {
+ /* 80325800 */ void operator=(J3DFogInfo const&);
+
+ /* 0x00 */ u8 field_0x0;
+ /* 0x01 */ u8 field_0x1;
+ /* 0x02 */ u16 field_0x2;
+ /* 0x04 */ f32 field_0x4;
+ /* 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];
+}; // Size: 0x2C
+
+struct J3DFog : public J3DFogInfo {};
+
+struct J3DAlphaComp {
+ /* 0x0 */ u16 field_0x0;
+ /* 0x2 */ u8 mRef0;
+ /* 0x3 */ u8 mRef1;
+}; // Size: 0x4
+
+class J3DPEBlock {
+public:
+ /* 80317348 */ virtual void reset(J3DPEBlock*);
+ virtual void load() = 0;
+ /* 8000DBCC */ virtual void patch();
+ /* 80317344 */ virtual void diff(u32);
+ /* 8031735C */ virtual void diffFog();
+ /* 80317360 */ virtual void diffBlend();
+ virtual bool countDLSize();
+ virtual void getType() = 0;
+ /* 80317368 */ virtual void setFog(J3DFog);
+ /* 80317364 */ virtual void setFog(J3DFog*);
+ /* 8000DF5C */ virtual bool getFog();
+ /* 8031736C */ virtual void setAlphaComp(J3DAlphaComp const*);
+ /* 8000E01C */ virtual void setAlphaComp(J3DAlphaComp const&);
+ /* 8000DF54 */ virtual bool getAlphaComp();
+ /* 80317370 */ virtual void setBlend(J3DBlend const*);
+ /* 8000E018 */ virtual void setBlend(J3DBlend const&);
+ /* 8000DF4C */ virtual bool getBlend();
+ /* 80317374 */ virtual void setZMode(J3DZMode const*);
+ /* 8000E014 */ virtual void setZMode(J3DZMode);
+ /* 8000DF44 */ virtual bool getZMode();
+ /* 80317378 */ virtual void setZCompLoc(u8 const*);
+ /* 8000E010 */ virtual void setZCompLoc(u8);
+ /* 8000DF3C */ virtual bool getZCompLoc() const;
+ /* 80317380 */ virtual void setDither(u8 const*);
+ /* 8031737C */ virtual void setDither(u8);
+ /* 80317384 */ virtual bool getDither() const;
+ /* 8031738C */ virtual bool getFogOffset() const;
+ /* 80317394 */ virtual void setFogOffset(u32);
+ virtual ~J3DPEBlock();
+};
+
+class J3DPEBlockXlu : public J3DPEBlock {
+public:
+ /* 8031E98C */ virtual void load();
+ /* 80317BF4 */ virtual s32 countDLSize();
+ /* 80323258 */ virtual void getType();
+ /* 80323264 */ virtual ~J3DPEBlockXlu();
+};
+
+class J3DPEBlockTexEdge : public J3DPEBlock {
+public:
+ /* 8031E6C8 */ virtual void load();
+ /* 80317BEC */ virtual s32 countDLSize();
+ /* 803232C0 */ virtual void getType();
+ /* 803232CC */ virtual ~J3DPEBlockTexEdge();
+};
+
+class J3DPEBlockOpa : public J3DPEBlock {
+public:
+ /* 8031E408 */ virtual void load();
+ /* 80317BE4 */ virtual s32 countDLSize();
+ /* 80323328 */ virtual void getType();
+ /* 80323334 */ virtual ~J3DPEBlockOpa();
+};
+
+class J3DPEBlockFull : public J3DPEBlock {
+public:
+ /* 80317B58 */ void initialize();
+
+ /* 8032129C */ virtual void reset(J3DPEBlock*);
+ /* 8031F3C0 */ virtual void load();
+ /* 8031F890 */ virtual void patch();
+ /* 8031FCA0 */ virtual void diff(u32);
+ /* 8031F940 */ virtual void diffFog();
+ /* 8031F9B8 */ virtual void diffBlend();
+ /* 80317C04 */ virtual s32 countDLSize();
+ /* 8032194C */ virtual void getType();
+ /* 8032197C */ virtual void setFog(J3DFog);
+ /* 80321958 */ virtual void setFog(J3DFog*);
+ /* 803219A0 */ virtual void getFog();
+ /* 803219C4 */ virtual void setAlphaComp(J3DAlphaComp const*);
+ /* 803219A8 */ virtual void setAlphaComp(J3DAlphaComp const&);
+ /* 803219E0 */ virtual void getAlphaComp();
+ /* 803219F4 */ virtual void setBlend(J3DBlend const*);
+ /* 803219E8 */ virtual void setBlend(J3DBlend const&);
+ /* 80321A00 */ virtual void getBlend();
+ /* 80321A14 */ virtual void setZMode(J3DZMode const*);
+ /* 80321A08 */ virtual void setZMode(J3DZMode);
+ /* 80321A20 */ virtual void getZMode();
+ /* 80321A30 */ virtual void setZCompLoc(u8 const*);
+ /* 80321A28 */ virtual void setZCompLoc(u8);
+ /* 80321A3C */ virtual void getZCompLoc() const;
+ /* 80321A4C */ virtual void setDither(u8 const*);
+ /* 80321A44 */ virtual void setDither(u8);
+ /* 80321A58 */ virtual void getDither() const;
+ /* 80321A60 */ virtual void getFogOffset() const;
+ /* 80321A68 */ virtual void setFogOffset(u32);
+ /* 80321A70 */ virtual ~J3DPEBlockFull();
+
+private:
+ /* 0x04 */ J3DFog mFog;
+ /* 0x30 */ J3DAlphaComp mAlphaComp;
+ /* 0x34 */ J3DBlend mBlend;
+ /* 0x38 */ J3DZMode mZMode;
+ /* 0x3A */ u8 mZCompLoc;
+ /* 0x3B */ u8 mDither;
+ /* 0x3C */ u32 mFogOffset;
+}; // Size: 0x40
+
+class J3DPEBlockFogOff : public J3DPEBlock {
+public:
+ /* 80317B34 */ void initialize();
+
+ /* 803211B4 */ virtual void reset(J3DPEBlock*);
+ /* 8031EC50 */ virtual void load();
+ /* 80321ACC */ virtual void diff(u32);
+ /* 8031F0D8 */ virtual void diffBlend();
+ /* 80317BFC */ virtual s32 countDLSize();
+ /* 80321B00 */ virtual void getType();
+ /* 80321B28 */ virtual void setAlphaComp(J3DAlphaComp const*);
+ /* 80321B0C */ virtual void setAlphaComp(J3DAlphaComp const&);
+ /* 80321B44 */ virtual void getAlphaComp();
+ /* 80321B58 */ virtual void setBlend(J3DBlend const*);
+ /* 80321B4C */ virtual void setBlend(J3DBlend const&);
+ /* 80321B64 */ virtual void getBlend();
+ /* 80321B78 */ virtual void setZMode(J3DZMode const*);
+ /* 80321B6C */ virtual void setZMode(J3DZMode);
+ /* 80321B84 */ virtual void getZMode();
+ /* 80321B94 */ virtual void setZCompLoc(u8 const*);
+ /* 80321B8C */ virtual void setZCompLoc(u8);
+ /* 80321BA0 */ virtual void getZCompLoc() const;
+ /* 80321BB0 */ virtual void setDither(u8 const*);
+ /* 80321BA8 */ virtual void setDither(u8);
+ /* 80321BBC */ virtual void getDither() const;
+ /* 80321BC4 */ virtual ~J3DPEBlockFogOff();
+
+private:
+ /* 0x04 */ J3DAlphaComp mAlphaComp;
+ /* 0x08 */ J3DBlend mBlend;
+ /* 0x0C */ J3DZMode mZMode;
+ /* 0x0E */ u8 mZCompLoc;
+ /* 0x0F */ u8 mDither;
+}; // Size: 0x10
+
+struct J3DIndTexCoordScale {
+ /* 8000E024 */ ~J3DIndTexCoordScale();
+ /* 8000E0E4 */ J3DIndTexCoordScale();
+
+ /* 0x0 */ u8 mScaleS;
+ /* 0x1 */ u8 mScaleT;
+};
+
+struct J3DIndTexMtx {
+ /* 8000E064 */ ~J3DIndTexMtx();
+ /* 8000E0F0 */ J3DIndTexMtx();
+
+ /* 0x00 */ Mtx23 mOffsetMtx;
+ /* 0x18 */ u8 mScaleExp;
+}; // Size: 0x1C
+
+struct J3DIndTexOrder {
+ /* 8000E128 */ J3DIndTexOrder();
+
+ /* 0x0 */ u8 mMap;
+ /* 0x1 */ u8 mCoord;
+};
+
+class J3DIndBlock {
+public:
+ /* 8031734C */ virtual void reset(J3DIndBlock*);
+ virtual void load() = 0;
+ virtual void diff(u32) = 0;
+ /* 80317314 */ virtual bool countDLSize();
+ virtual void getType() = 0;
+ /* 8000E0A0 */ virtual void setIndTexStageNum(u8);
+ /* 8000DF7C */ virtual bool getIndTexStageNum() const;
+ /* 80317410 */ virtual void setIndTexOrder(u32, J3DIndTexOrder);
+ /* 8031740C */ virtual void setIndTexOrder(u32, J3DIndTexOrder const*);
+ /* 8000DF74 */ virtual bool getIndTexOrder(u32);
+ /* 80317414 */ virtual void setIndTexMtx(u32, J3DIndTexMtx const*);
+ /* 8000E060 */ virtual void setIndTexMtx(u32, J3DIndTexMtx);
+ /* 8000DF6C */ virtual bool getIndTexMtx(u32);
+ /* 8000E020 */ virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale);
+ /* 80317418 */ virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale const*);
+ /* 8000DF64 */ virtual bool getIndTexCoordScale(u32);
+ /* 8031726C */ virtual ~J3DIndBlock();
+};
+
+class J3DIndBlockFull : public J3DIndBlock {
+public:
+ /* 80317B28 */ void initialize();
+
+ /* 803210B0 */ virtual void reset(J3DIndBlock*);
+ /* 8031E328 */ virtual void diff(u32);
+ /* 8031E12C */ virtual void load();
+ /* 80317BDC */ virtual s32 countDLSize();
+ /* 80323390 */ virtual void getType();
+ /* 8032339C */ virtual void setIndTexStageNum(u8);
+ /* 803233A4 */ virtual void getIndTexStageNum() const;
+ /* 803233AC */ virtual void setIndTexOrder(u32, J3DIndTexOrder);
+ /* 803233C0 */ virtual void setIndTexOrder(u32, J3DIndTexOrder const*);
+ /* 803233D4 */ virtual void getIndTexOrder(u32);
+ /* 8032341C */ virtual void setIndTexMtx(u32, J3DIndTexMtx const*);
+ /* 803233E8 */ virtual void setIndTexMtx(u32, J3DIndTexMtx);
+ /* 80323450 */ virtual void getIndTexMtx(u32);
+ /* 80323478 */ virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale const*);
+ /* 80323464 */ virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale);
+ /* 8032348C */ virtual void getIndTexCoordScale(u32);
+ /* 803234A0 */ virtual ~J3DIndBlockFull();
+
+private:
+ /* 0x04 */ u8 mIndTexStageNum;
+ /* 0x05 */ J3DIndTexOrder mIndTexOrder[4];
+ /* 0x18 */ J3DIndTexMtx mIndTexMtx[3];
+ /* 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 void getType();
+ /* 803173B0 */ virtual ~J3DIndBlockNull();
+};
+
+struct J3DColorChanInfo {
+ /* 0x0 */ u8 field_0x0;
+ /* 0x1 */ u8 field_0x1;
+ /* 0x2 */ u8 field_0x2;
+ /* 0x3 */ u8 field_0x3;
+ /* 0x4 */ u8 field_0x4;
+ /* 0x5 */ u8 field_0x5;
+};
+
+struct J3DColorChan {
+ /* 8000E47C */ J3DColorChan();
+
+ /* 0x0 */ u16 mColorChanID;
+};
+
+class J3DColorBlock {
+public:
+ /* 80317324 */ virtual void load();
+ /* 80317358 */ virtual void reset(J3DColorBlock*);
+ /* 8031733C */ virtual void patch();
+ /* 80317434 */ virtual void patchMatColor();
+ /* 8000DBD0 */ virtual void patchLight();
+ /* 80317340 */ virtual void diff(u32);
+ /* 80317438 */ virtual void diffAmbColor();
+ /* 8031743C */ virtual void diffMatColor();
+ /* 80317440 */ virtual void diffColorChan();
+ /* 80317444 */ virtual void diffLightObj(u32);
+ /* 80317304 */ virtual bool countDLSize();
+ virtual void getType() = 0;
+ /* 80317448 */ virtual void setMatColor(u32, J3DGXColor const*);
+ /* 8000E0DC */ virtual void setMatColor(u32, J3DGXColor);
+ /* 8000E000 */ virtual _GXColor* getMatColor(u32);
+ /* 801A4C0C */ virtual void setAmbColor(u32, J3DGXColor const*);
+ /* 8000E0D4 */ virtual void setAmbColor(u32, J3DGXColor);
+ /* 8000DFF0 */ virtual bool getAmbColor(u32);
+ /* 8000E0E0 */ virtual void setColorChanNum(u8);
+ /* 8031744C */ virtual void setColorChanNum(u8 const*);
+ /* 8000E008 */ virtual bool getColorChanNum() const;
+ /* 8000E0D8 */ virtual void setColorChan(u32, J3DColorChan const&);
+ /* 80317450 */ virtual void setColorChan(u32, J3DColorChan const*);
+ /* 8000DFF8 */ virtual bool getColorChan(u32);
+ /* 801A4C08 */ virtual void setLight(u32, J3DLightObj*);
+ /* 80317454 */ virtual bool getLight(u32);
+ /* 80317460 */ virtual void setCullMode(u8 const*);
+ /* 8031745C */ virtual void setCullMode(u8);
+ /* 80317328 */ virtual s32 getCullMode() const;
+ /* 80317464 */ virtual bool getMatColorOffset() const;
+ /* 8031746C */ virtual bool getColorChanOffset() const;
+ /* 80317474 */ virtual void setMatColorOffset(u32);
+ /* 80317478 */ virtual void setColorChanOffset(u32);
+ /* 80317138 */ virtual ~J3DColorBlock();
+};
+
+class J3DColorBlockLightOn : public J3DColorBlock {
+public:
+ /* 80317580 */ void initialize();
+
+ /* 803187F4 */ virtual void load();
+ /* 8031FF34 */ virtual void reset(J3DColorBlock*);
+ /* 803194E8 */ virtual void patch();
+ /* 80319534 */ virtual void patchMatColor();
+ /* 803196E0 */ virtual void patchLight();
+ /* 8031A13C */ virtual void diff(u32);
+ /* 8031A1DC */ virtual void diffAmbColor();
+ /* 8031A358 */ virtual void diffMatColor();
+ /* 8031A4D4 */ virtual void diffColorChan();
+ /* 8031A8E0 */ virtual void diffLightObj(u32);
+ /* 80317B94 */ virtual s32 countDLSize();
+ /* 80322E80 */ virtual void getType();
+ /* 80322EB8 */ virtual void setMatColor(u32, J3DGXColor const*);
+ /* 80322E8C */ virtual void setMatColor(u32, J3DGXColor);
+ /* 80322EE4 */ virtual void getMatColor(u32);
+ /* 80322F24 */ virtual void setAmbColor(u32, J3DGXColor const*);
+ /* 80322EF8 */ virtual void setAmbColor(u32, J3DGXColor);
+ /* 80322F50 */ virtual void getAmbColor(u32);
+ /* 80322F70 */ virtual void setColorChanNum(u8);
+ /* 80322F64 */ virtual void setColorChanNum(u8 const*);
+ /* 80322F78 */ virtual void getColorChanNum() const;
+ /* 80322F94 */ virtual void setColorChan(u32, J3DColorChan const&);
+ /* 80322F80 */ virtual void setColorChan(u32, J3DColorChan const*);
+ /* 80322FA8 */ virtual void getColorChan(u32);
+ /* 80322FBC */ virtual void setLight(u32, J3DLightObj*);
+ /* 80322FCC */ virtual void getLight(u32);
+ /* 80322FE4 */ virtual void setCullMode(u8 const*);
+ /* 80322FDC */ virtual void setCullMode(u8);
+ /* 80322FF0 */ virtual void getCullMode() const;
+ /* 80322FF8 */ virtual void getMatColorOffset() const;
+ /* 80323000 */ virtual void getColorChanOffset() const;
+ /* 80323008 */ virtual void setMatColorOffset(u32);
+ /* 80323010 */ virtual void setColorChanOffset(u32);
+ /* 80323018 */ virtual ~J3DColorBlockLightOn();
+
+private:
+ /* 0x04 */ J3DGXColor mMatColor[2];
+ /* 0x0C */ J3DGXColor mAmbColor[2];
+ /* 0x14 */ u8 mColorChanNum;
+ /* 0x16 */ J3DColorChan mColorChan[4];
+ /* 0x20 */ J3DLightObj* mLight[8];
+ /* 0x40 */ u8 mCullMode;
+ /* 0x44 */ u32 mMatColorOffset;
+ /* 0x48 */ u32 mColorChanOffset;
+}; // Size: 0x4C
+
+class J3DColorBlockLightOff : public J3DColorBlock {
+public:
+ /* 8031747C */ void initialize();
+
+ /* 80317C0C */ virtual void load();
+ /* 8031FD08 */ virtual void reset(J3DColorBlock*);
+ /* 80318EB4 */ virtual void patch();
+ /* 80318F00 */ virtual void patchMatColor();
+ /* 803190AC */ virtual void patchLight();
+ /* 80319B4C */ virtual void diff(u32);
+ /* 80319BB4 */ virtual void diffMatColor();
+ /* 80319D30 */ virtual void diffColorChan();
+ /* 80317B84 */ virtual s32 countDLSize();
+ /* 80323560 */ virtual void getType();
+ /* 80323184 */ virtual void setMatColor(u32, J3DGXColor const*);
+ /* 80323158 */ virtual void setMatColor(u32, J3DGXColor);
+ /* 803231B0 */ virtual void getMatColor(u32);
+ /* 803231D0 */ virtual void setColorChanNum(u8);
+ /* 803231C4 */ virtual void setColorChanNum(u8 const*);
+ /* 803231D8 */ virtual void getColorChanNum() const;
+ /* 803231F4 */ virtual void setColorChan(u32, J3DColorChan const&);
+ /* 803231E0 */ virtual void setColorChan(u32, J3DColorChan const*);
+ /* 80323208 */ virtual void getColorChan(u32);
+ /* 80323224 */ virtual void setCullMode(u8 const*);
+ /* 8032321C */ virtual void setCullMode(u8);
+ /* 80323230 */ virtual void getCullMode() const;
+ /* 80323238 */ virtual void getMatColorOffset() const;
+ /* 80323240 */ virtual void getColorChanOffset() const;
+ /* 80323248 */ virtual void setMatColorOffset(u32);
+ /* 80323250 */ virtual void setColorChanOffset(u32);
+ /* 803170DC */ virtual ~J3DColorBlockLightOff();
+
+private:
+ /* 0x04 */ J3DGXColor mMatColor[2];
+ /* 0x0C */ u8 mColorChanNum;
+ /* 0x0E */ J3DColorChan mColorChan[4];
+ /* 0x16 */ u8 mCullMode;
+ /* 0x18 */ u32 mMatColorOffset;
+ /* 0x1C */ u32 mColorChanOffset;
+}; // Size: 0x20
+
+class J3DColorBlockAmbientOn : public J3DColorBlockLightOff {
+public:
+ /* 803174DC */ void initialize();
+
+ /* 8031816C */ virtual void load();
+ /* 8031FDE4 */ virtual void reset(J3DColorBlock*);
+ /* 80317B8C */ virtual s32 countDLSize();
+ /* 80323074 */ virtual void getType();
+ /* 803230AC */ virtual void setAmbColor(u32, J3DGXColor const*);
+ /* 80323080 */ virtual void setAmbColor(u32, J3DGXColor);
+ /* 803230D8 */ virtual void getAmbColor(u32);
+ /* 803230EC */ virtual ~J3DColorBlockAmbientOn();
+
+private:
+ /* 0x20 */ J3DGXColor mAmbColor[2];
+}; // Size: 0x28
+
#endif /* J3DMATBLOCK_H */
diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h
index 65305008df..d4219a9985 100644
--- a/include/JSystem/J3DGraphBase/J3DMaterial.h
+++ b/include/JSystem/J3DGraphBase/J3DMaterial.h
@@ -1,6 +1,107 @@
#ifndef J3DMATERIAL_H
#define J3DMATERIAL_H
+#include "JSystem/J3DGraphBase/J3DMatBlock.h"
+#include "JSystem/J3DGraphBase/J3DPacket.h"
+#include "JSystem/J3DGraphBase/J3DShape.h"
+#include "JSystem/J3DGraphBase/J3DStruct.h"
+#include "JSystem/J3DGraphBase/J3DTevs.h"
+#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "dolphin/types.h"
+class J3DJoint;
+class J3DMaterialAnm;
+
+class J3DMaterial {
+public:
+ /* 803157A0 */ void createColorBlock(u32);
+ /* 803159A0 */ void createTexGenBlock(u32);
+ /* 80315B04 */ void createTevBlock(int);
+ /* 80315E78 */ void createIndBlock(int);
+ /* 80315F60 */ void createPEBlock(u32, u32);
+ /* 80316100 */ void calcSizeColorBlock(u32);
+ /* 80316150 */ void calcSizeTexGenBlock(u32);
+ /* 8031617C */ void calcSizeTevBlock(int);
+ /* 803161C4 */ void calcSizeIndBlock(int);
+ /* 803161D8 */ void 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* getNext() const { return mNext; }
+ J3DTevBlock* getTevBlock() const { return mTevBlock; }
+ J3DColorBlock* getColorBlock() const { return mColorBlock; }
+ J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
+ J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; }
+ J3DMaterialAnm* getMaterialAnm() const {
+ if ((u32)mMaterialAnm < 0xC0000000) {
+ return mMaterialAnm;
+ } else {
+ return NULL;
+ }
+ }
+
+private:
+ /* 0x04 */ J3DMaterial* mNext;
+ /* 0x08 */ J3DShape* mShape;
+ /* 0x0C */ J3DJoint* mJoint;
+ /* 0x10 */ u32 mMaterialMode;
+ /* 0x14 */ u16 mIndex;
+ /* 0x18 */ u32 mInvalid;
+ /* 0x1C */ u32 field_0x1c;
+ /* 0x20 */ u32 field_0x20;
+ /* 0x24 */ J3DColorBlock* mColorBlock;
+ /* 0x28 */ J3DTexGenBlock* mTexGenBlock;
+ /* 0x2C */ J3DTevBlock* mTevBlock;
+ /* 0x30 */ J3DIndBlock* mIndBlock;
+ /* 0x34 */ J3DPEBlock* mPEBlock;
+ /* 0x38 */ J3DMaterial* field_0x38;
+ /* 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 */
diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h
index 3ef6ac0840..cca1e0c60b 100644
--- a/include/JSystem/J3DGraphBase/J3DPacket.h
+++ b/include/JSystem/J3DGraphBase/J3DPacket.h
@@ -2,6 +2,7 @@
#define J3DPACKET_H
#include "JSystem/J3DGraphBase/J3DSys.h"
+#include "dolphin/gd/GDBase.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
@@ -18,6 +19,13 @@ class J3DTexture;
class J3DDisplayListObj {
public:
+ J3DDisplayListObj() {
+ mpData[0] = NULL;
+ mpData[1] = NULL;
+ mSize = 0;
+ mCapacity = 0;
+ }
+
J3DError newDisplayList(u32);
J3DError newSingleDisplayList(u32);
J3DError single_To_Double();
@@ -25,17 +33,20 @@ public:
void swapBuffer();
void callDL() const;
void beginDL();
- void endDL();
+ u32 endDL();
void beginPatch();
- void endPatch();
+ u32 endPatch();
+
+ u8* getDisplayList(int idx) const { return (u8*)mpData[idx]; }
+ u32 getDisplayListSize() const { return mSize; }
- static u8 sGDLObj[16];
- static u8 sInterruptFlag[4 + 4 /* padding */];
+ static GDLObj sGDLObj;
+ static s32 sInterruptFlag;
- void* mpData[2];
- u32 mSize;
- u32 mCapacity;
-};
+ /* 0x0 */ void* mpData[2];
+ /* 0x8 */ u32 mSize;
+ /* 0xC */ u32 mCapacity;
+}; // Size: 0x10
class J3DPacket {
public:
@@ -45,14 +56,14 @@ public:
mpUserData = NULL;
}
- void addChildPacket(J3DPacket* pChild);
+ void addChildPacket(J3DPacket*);
inline void clear() {
mpNextSibling = NULL;
mpFirstChild = NULL;
}
- virtual bool entry(J3DDrawBuffer* pDrawBuffer);
+ virtual bool entry(J3DDrawBuffer*);
virtual void draw();
virtual ~J3DPacket();
@@ -60,7 +71,7 @@ public:
/* 0x04 */ J3DPacket* mpNextSibling;
/* 0x08 */ J3DPacket* mpFirstChild;
/* 0x0C */ void* mpUserData;
-}; // Size = 0x10
+}; // Size: 0x10
class J3DDrawPacket : public J3DPacket {
public:
@@ -70,31 +81,37 @@ public:
J3DError newSingleDisplayList(u32);
virtual void draw();
+ J3DDisplayListObj* getDisplayListObj() { return mpDisplayListObj; }
+ void setDisplayListObj(J3DDisplayListObj* pObj) { mpDisplayListObj = pObj; }
+
public:
- int mFlags;
- char mPad0[0x0C]; // unk
- J3DDisplayListObj* mpDisplayListObj;
- J3DTexMtx* mpTexMtx;
-};
+ /* 0x10 */ u32 mFlags;
+ /* 0x14 */ char mPad0[0x0C]; // unk
+ /* 0x20 */ J3DDisplayListObj* mpDisplayListObj;
+ /* 0x24 */ J3DTexMtx* mpTexMtx;
+}; // Size: 0x28
class J3DShapePacket : public J3DDrawPacket {
public:
J3DShapePacket();
- void calcDifferedBufferSize(u32);
- void newDifferedDisplayList(u32);
+ u32 calcDifferedBufferSize(u32);
+ J3DError newDifferedDisplayList(u32);
void prepareDraw() const;
void drawFast();
virtual ~J3DShapePacket();
virtual void draw();
+ void setShape(J3DShape* pShape) { mpShape = pShape; }
+ void setModel(J3DModel* pModel) { mpModel = pModel; }
+
public:
- J3DShape* mpShape;
- J3DMtxBuffer* mpMtxBuffer;
- Mtx* mpViewMtx;
- u32 mDiffFlag;
- J3DModel* mpModel;
-};
+ /* 0x28 */ J3DShape* mpShape;
+ /* 0x2C */ J3DMtxBuffer* mpMtxBuffer;
+ /* 0x30 */ Mtx* mpViewMtx;
+ /* 0x34 */ u32 mDiffFlag;
+ /* 0x38 */ J3DModel* mpModel;
+}; // Size: 0x3C
class J3DMatPacket : public J3DDrawPacket {
public:
@@ -102,19 +119,19 @@ public:
void addShapePacket(J3DShapePacket*);
void beginDiff();
void endDiff();
- void isSame(J3DMatPacket*) const;
+ bool isSame(J3DMatPacket*) const;
virtual ~J3DMatPacket();
- virtual bool entry(J3DDrawBuffer* pDrawBuffer);
+ virtual bool entry(J3DDrawBuffer*);
virtual void draw();
public:
- J3DShapePacket* mpShapePacket;
- J3DShapePacket* mpFirstShapePacket;
- J3DMaterial* mpMaterial;
- s32 mSortFlags;
- J3DTexture* mpTexture;
- J3DMaterialAnm* mpMaterialAnm;
-};
+ /* 0x28 */ J3DShapePacket* mpShapePacket;
+ /* 0x2C */ J3DShapePacket* mpFirstShapePacket;
+ /* 0x30 */ J3DMaterial* mpMaterial;
+ /* 0x34 */ u32 mSortFlags;
+ /* 0x38 */ J3DTexture* mpTexture;
+ /* 0x3C */ J3DMaterialAnm* mpMaterialAnm;
+}; // Size: 0x40
#endif /* J3DPACKET_H */
diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h
index 5496e77094..9410d61ab9 100644
--- a/include/JSystem/J3DGraphBase/J3DShape.h
+++ b/include/JSystem/J3DGraphBase/J3DShape.h
@@ -31,7 +31,7 @@ public:
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
/* 80314E28 */ void countBumpMtxNum() const;
/* 80314EEC */ void loadVtxArray() const;
- /* 80314F5C */ void isSameVcdVatCmd(J3DShape*);
+ /* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
/* 80314F98 */ void makeVtxArrayCmd();
/* 80315260 */ void makeVcdVatCmd();
/* 80315300 */ void loadPreDrawSetting() const;
@@ -42,6 +42,13 @@ public:
/* 80315628 */ virtual void simpleDraw() const;
/* 803156AC */ virtual void simpleDrawCache() const;
+ void onFlag(u32 flag) { mFlags |= flag; }
+ void offFlag(u32 flag) { mFlags &= ~flag; }
+ void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
+ void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
+ void* getVcdVatCmd() const { return mVcdVatCmd; }
+ void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; }
+
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
static void* sOldVcdVatCmd;
diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h
index 1b52660e25..bfc1f90c33 100644
--- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h
+++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h
@@ -29,4 +29,66 @@ private:
/* 0x04 */ u16 mUseMtxIndex;
};
+class J3DShapeMtxConcatView : public J3DShapeMtx {
+public:
+ /* 80314730 */ virtual ~J3DShapeMtxConcatView();
+ /* 8031478C */ virtual void getType() const;
+ /* 80313C54 */ virtual void load() const;
+ /* 80314598 */ virtual void loadNrmMtx(int, u16) const;
+ /* 80313D28 */ virtual void loadNrmMtx(int, u16, f32 (*)[4]) const;
+
+ /* 80313828 */ void loadMtxConcatView_PNGP(int, u16) const;
+ /* 803138C8 */ void loadMtxConcatView_PCPU(int, u16) const;
+ /* 8031396C */ void loadMtxConcatView_NCPU(int, u16) const;
+ /* 80313A14 */ void loadMtxConcatView_PNCPU(int, u16) const;
+ /* 80313AC8 */ void loadMtxConcatView_PNGP_LOD(int, u16) const;
+
+ static u8 sMtxLoadPipeline[48];
+ static u8 sMtxLoadLODPipeline[48];
+ static u8 sMtxPtrTbl[8];
+};
+
+class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
+public:
+ /* 80314520 */ virtual ~J3DShapeMtxYBBoardConcatView();
+ /* 8031458C */ virtual void getType() const;
+ /* 803143E4 */ virtual void load() const;
+};
+
+class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView {
+public:
+ /* 803145A4 */ virtual ~J3DShapeMtxBBoardConcatView();
+ /* 80314610 */ virtual void getType() const;
+ /* 803142D4 */ virtual void load() const;
+};
+
+class J3DShapeMtxMulti : public J3DShapeMtx {
+public:
+ /* 803146B0 */ virtual ~J3DShapeMtxMulti();
+ /* 8031470C */ virtual void getType() const;
+ /* 80314718 */ virtual void getUseMtxNum() const;
+ /* 80314720 */ virtual void getUseMtxIndex(u16) const;
+ /* 80313E4C */ virtual void load() const;
+ /* 80313EEC */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
+
+private:
+ /* 0x6 */ u16 mUseMtxNum;
+ /* 0x8 */ u16* mUseMtxIndex;
+};
+
+class J3DShapeMtxMultiConcatView : public J3DShapeMtx {
+public:
+ /* 8031461C */ virtual ~J3DShapeMtxMultiConcatView();
+ /* 80314688 */ virtual void getType() const;
+ /* 80314694 */ virtual void getUseMtxNum() const;
+ /* 8031469C */ virtual void getUseMtxIndex(u16) const;
+ /* 80313FA4 */ virtual void load() const;
+ /* 803146AC */ virtual void loadNrmMtx(int, u16) const;
+ /* 8031419C */ virtual void loadNrmMtx(int, u16, f32 (*)[4]) const;
+
+private:
+ /* 0x6 */ u16 mUseMtxNum;
+ /* 0x8 */ u16* mUseMtxIndex;
+};
+
#endif /* J3DSHAPEMTX_H */
diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h
index 298a50870a..b5b91f4136 100644
--- a/include/JSystem/J3DGraphBase/J3DSys.h
+++ b/include/JSystem/J3DGraphBase/J3DSys.h
@@ -1,6 +1,7 @@
#ifndef J3DSYS_H
#define J3DSYS_H
+#include "dolphin/gx/GXTexture.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
@@ -21,19 +22,23 @@ class J3DDrawBuffer;
class J3DTexture;
struct J3DSys {
- /* 0x00 */ Mtx mMtx;
- /* 0x30 */ J3DMtxCalc* mMtxCalc;
- /* 0x34 */ u32 mFlags;
- /* 0x38 */ J3DModel* mModel;
- /* 0x3C */ J3DMatPacket* mMatPacket;
- /* 0x40 */ J3DShapePacket* mShapePacket;
- /* 0x44 */ J3DShape* mShape;
- /* 0x48 */ J3DDrawBuffer* mDrawBuffer[2];
- /* 0x50 */ u32 mDrawMode;
- /* 0x54 */ u32 mMaterialMode;
- /* 0x58 */ J3DTexture* mTexture;
-
- u8 field_0x5c[0x11C - 0x5C];
+ /* 0x000 */ Mtx mMtx;
+ /* 0x030 */ J3DMtxCalc* mCurrentMtxCalc;
+ /* 0x034 */ u32 mFlags;
+ /* 0x038 */ J3DModel* mModel;
+ /* 0x03C */ J3DMatPacket* mMatPacket;
+ /* 0x040 */ J3DShapePacket* mShapePacket;
+ /* 0x044 */ J3DShape* mShape;
+ /* 0x048 */ J3DDrawBuffer* mDrawBuffer[2];
+ /* 0x050 */ u32 mDrawMode;
+ /* 0x054 */ u32 mMaterialMode;
+ /* 0x058 */ J3DTexture* mTexture;
+ /* 0x05C */ u8 field_0x5c[0x10C - 0x5C];
+ /* 0x10C */ void* mVtxPos;
+ /* 0x110 */ void* mVtxNrm;
+ /* 0x114 */ _GXColor* mVtxCol;
+ /* 0x118 */ Vec* mNBTScale;
+
/* 8030FDE8 */ J3DSys();
/* 8030FEC0 */ void loadPosMtxIndx(int, u16) const;
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
@@ -57,9 +62,23 @@ struct J3DSys {
void setDrawModeXlu() { mDrawMode = XLU; }
+ void setVtxPos(void* pVtxPos) { mVtxPos = pVtxPos; }
+
+ void setVtxNrm(void* pVtxNrm) { mVtxNrm = pVtxNrm; }
+
+ void setVtxCol(_GXColor* pVtxCol) { mVtxCol = pVtxCol; }
+
+ void setModel(J3DModel* pModel) { mModel = pModel; }
+
+ void setTexture(J3DTexture* pTex) { mTexture = pTex; }
+
+ void onFlag(u32 flag) { mFlags |= flag; }
+
+ void offFlag(u32 flag) { mFlags &= ~flag; }
+
static Mtx mCurrentMtx;
- static f32 mCurrentS[3];
- static f32 mParentS[3];
+ static Vec mCurrentS;
+ static Vec mParentS;
static u16 sTexCoordScaleTable[34];
};
diff --git a/include/JSystem/J3DGraphBase/J3DTevs.h b/include/JSystem/J3DGraphBase/J3DTevs.h
index 8da6b41764..32f5e1277a 100644
--- a/include/JSystem/J3DGraphBase/J3DTevs.h
+++ b/include/JSystem/J3DGraphBase/J3DTevs.h
@@ -3,4 +3,57 @@
#include "dolphin/types.h"
+struct J3DTevStageInfo {};
+
+struct J3DTevStage {
+ /* 8000E230 */ J3DTevStage();
+ /* 8000E298 */ void setTevStageInfo(J3DTevStageInfo const&);
+ /* 8003AACC */ J3DTevStage(J3DTevStageInfo const&);
+
+ /* 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 {
+ /* 0x0 */ u8 mIndStage;
+ /* 0x1 */ u8 mIndFormat;
+ /* 0x2 */ u8 mBiasSel;
+ /* 0x3 */ u8 mMtxSel;
+ /* 0x4 */ u8 mWrapS;
+ /* 0x5 */ u8 mWrapT;
+ /* 0x6 */ u8 mPrev;
+ /* 0x7 */ u8 mLod;
+ /* 0x8 */ u8 mAlphaSel;
+};
+
+struct J3DIndTevStage {
+ /* 8000E14C */ J3DIndTevStage();
+
+ /* 0x0 */ u32 mInfo;
+};
+
+struct J3DTevOrderInfo {
+ /* 0x0 */ u8 field_0x0;
+ /* 0x1 */ u8 mTexMap;
+ /* 0x2 */ u8 field_0x2;
+};
+
+struct J3DTevOrder : public J3DTevOrderInfo {
+ /* 8000E140 */ J3DTevOrder();
+};
+
+struct J3DTevSwapModeTable {
+ /* 8000E134 */ J3DTevSwapModeTable();
+
+ /* 0x0 */ u8 field_0x0;
+}; // Size: 0x1
+
+struct J3DTevSwapModeInfo {};
+
#endif /* J3DTEVS_H */
diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h
index 743cfb48dd..52d11fca65 100644
--- a/include/JSystem/J3DGraphBase/J3DTexture.h
+++ b/include/JSystem/J3DGraphBase/J3DTexture.h
@@ -1,6 +1,72 @@
#ifndef J3DTEXTURE_H
#define J3DTEXTURE_H
+#include "JSystem/JUtility/JUTTexture.h"
+#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
+class J3DTexture {
+private:
+ /* 0x0 */ u16 mNum;
+ /* 0x4 */ ResTIMG** mpRes;
+
+public:
+ /* 8031204C */ void loadGX(u16, _GXTexMapID) const;
+ /* 803121A4 */ void entryNum(u16);
+ /* 8031221C */ void addResTIMG(u16, ResTIMG const*);
+ /* 803366A4 */ virtual ~J3DTexture();
+};
+
+struct J3DTextureSRTInfo {
+ /* 0x00 */ f32 field_0x0;
+ /* 0x04 */ f32 field_0x4;
+ /* 0x08 */ s16 field_0x8;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ f32 field_0x10;
+}; // Size: 0x14
+
+struct J3DTexMtxInfo {
+ /* 80325718 */ void operator=(J3DTexMtxInfo const&);
+
+ /* 0x00 */ u8 field_0x0;
+ /* 0x01 */ u8 field_0x1;
+ /* 0x04 */ f32 field_0x04;
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ f32 field_0x0c;
+ /* 0x10 */ J3DTextureSRTInfo field_0x10;
+ /* 0x24 */ Mtx mEffectMtx;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5c;
+ /* 0x60 */ f32 field_0x60;
+}; // Size: 0x64
+
+class J3DTexMtx {
+public:
+ /* 803238C4 */ void load(u32) const;
+ /* 80323900 */ void calc(f32 const (*)[4]);
+ /* 80323920 */ void calcTexMtx(f32 const (*)[4]);
+ /* 80323C0C */ void calcPostTexMtx(f32 const (*)[4]);
+ /* 80324358 */ void loadTexMtx(u32) const;
+ /* 803243BC */ void loadPostTexMtx(u32) const;
+
+ J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; }
+
+private:
+ /* 0x00 */ J3DTexMtxInfo mTexMtxInfo;
+ /* 0x64 */ Mtx mMtx;
+}; // Size: 0x94
+
+struct J3DTexCoordInfo {
+ /* 0x0 */ u8 mTexGenType;
+ /* 0x1 */ u8 mTexGenSrc;
+ /* 0x2 */ u8 mTexGenMtx;
+};
+
+struct J3DTexCoord : public J3DTexCoordInfo {
+ /* 8000E464 */ J3DTexCoord();
+
+ /* 0x4 */ u16 mTexMtxReg;
+}; // Size: 0x6
+
#endif /* J3DTEXTURE_H */
diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h
index 5ec5353ba5..1bdc7ebb88 100644
--- a/include/JSystem/J3DGraphBase/J3DTransform.h
+++ b/include/JSystem/J3DGraphBase/J3DTransform.h
@@ -1,6 +1,20 @@
#ifndef J3DTRANSFORM_H
#define J3DTRANSFORM_H
+#include "dolphin/mtx/mtxvec.h"
#include "dolphin/types.h"
+struct J3DTransformInfo {
+ /* 0x00 */ Vec mScale;
+ /* 0x0C */ SVec mRotation;
+ /* 0x14 */ Vec mTranslate;
+}; // Size: 0x20
+
+extern J3DTransformInfo const j3dDefaultTransformInfo;
+extern Vec const j3dDefaultScale;
+extern Mtx const j3dDefaultMtx;
+
+void J3DGetTranslateRotateMtx(J3DTransformInfo const&, Mtx);
+void J3DGetTranslateRotateMtx(s16, s16, s16, f32, f32, f32, Mtx);
+
#endif /* J3DTRANSFORM_H */
diff --git a/include/JSystem/J3DGraphBase/J3DVertex.h b/include/JSystem/J3DGraphBase/J3DVertex.h
index 3960e5e76a..9543468037 100644
--- a/include/JSystem/J3DGraphBase/J3DVertex.h
+++ b/include/JSystem/J3DGraphBase/J3DVertex.h
@@ -1,6 +1,94 @@
#ifndef J3DVERTEX_H
#define J3DVERTEX_H
+#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
+class J3DModel;
+struct J3DAnmVtxColor;
+
+struct J3DVtxColorCalc {
+ /* 8032E180 */ void calc(J3DModel*);
+
+ /* 0x0 */ void* vtable; // inlined vtable?
+ /* 0x4 */ u32 mFlags;
+ /* 0x8 */ J3DAnmVtxColor* mpVtxColor;
+};
+
+class J3DVertexData {
+public:
+ J3DVertexData();
+
+ void* getVtxPosArray() const { return mVtxPosArray; }
+
+ void* getVtxNrmArray() const { return mVtxNrmArray; }
+
+ _GXColor* getVtxColorArray(u8 idx) const { return mVtxColorArray[idx]; }
+
+ u32 getNrmNum() const { return mNrmNum; }
+
+ u32 getVtxNum() const { return mVtxNum; }
+
+private:
+ /* 0x00 */ u32 mVtxNum;
+ /* 0x04 */ u32 mNrmNum;
+ /* 0x08 */ u32 mColNum;
+ /* 0x0C */ u32 field_0xc;
+ /* 0x10 */ u32 field_0x10;
+ /* 0x14 */ void* mVtxAttrFmtList;
+ /* 0x18 */ void* mVtxPosArray;
+ /* 0x1C */ void* mVtxNrmArray;
+ /* 0x20 */ void* mVtxNBTArray;
+ /* 0x24 */ _GXColor* mVtxColorArray[2];
+ /* 0x2C */ void* mVtxTexCoordArray[8];
+ /* 0x4C */ u8 mVtxPosFrac;
+ /* 0x50 */ _GXCompType mVtxPosType;
+ /* 0x54 */ u8 mVtxNrmFrac;
+ /* 0x58 */ _GXCompType mVtxNrmType;
+};
+
+class J3DVertexBuffer {
+public:
+ /* 80310F78 */ void setVertexData(J3DVertexData*);
+ /* 80310FD8 */ void init();
+ /* 80311030 */ ~J3DVertexBuffer();
+ /* 8031106C */ void setArray() const;
+ /* 80311090 */ s32 copyLocalVtxPosArray(u32);
+ /* 803111B0 */ s32 copyLocalVtxNrmArray(u32);
+ /* 803112D0 */ s32 copyLocalVtxArray(u32);
+ /* 80311478 */ s32 allocTransformedVtxPosArray();
+ /* 8031152C */ s32 allocTransformedVtxNrmArray();
+
+ void setCurrentVtxPos(void* pVtxPos) { mCurrentVtxPos = pVtxPos; }
+
+ void setCurrentVtxNrm(void* pVtxNrm) { mCurrentVtxNrm = pVtxNrm; }
+
+ void setCurrentVtxCol(_GXColor* pVtxCol) { mCurrentVtxCol = pVtxCol; }
+
+ void frameInit() {
+ setCurrentVtxPos(mVtxPosArray[0]);
+ setCurrentVtxNrm(mVtxNrmArray[0]);
+ setCurrentVtxCol(mVtxColArray[0]);
+ }
+
+private:
+ /* 0x00 */ J3DVertexData* mVtxData;
+ /* 0x04 */ void* mVtxPosArray[2];
+ /* 0x0C */ void* mVtxNrmArray[2];
+ /* 0x14 */ _GXColor* mVtxColArray[2];
+ /* 0x1C */ void* mTransformedVtxPosArray[2];
+ /* 0x24 */ void* mTransformedVtxNrmArray[2];
+ /* 0x2C */ void* mCurrentVtxPos;
+ /* 0x30 */ void* mCurrentVtxNrm;
+ /* 0x34 */ _GXColor* mCurrentVtxCol;
+}; // Size: 0x38
+
+struct VertexNormal {
+ u8 data[0xC];
+};
+
+struct VertexPosition {
+ u8 data[0xC];
+};
+
#endif /* J3DVERTEX_H */