mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-24 15:43:13 -04:00
Misc. J3D improvements (#2570)
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -96,7 +96,7 @@ public:
|
||||
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
|
||||
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
/* 80314E28 */ u32 countBumpMtxNum() const;
|
||||
/* 80314E28 */ u16 countBumpMtxNum() const;
|
||||
/* 80314EEC */ void loadVtxArray() const;
|
||||
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
|
||||
/* 80314F98 */ void makeVtxArrayCmd();
|
||||
@@ -188,8 +188,8 @@ public:
|
||||
|
||||
/* 80314798 */ virtual ~J3DShapeMtx() {}
|
||||
/* 803147E0 */ virtual u32 getType() const { return 'SMTX'; }
|
||||
/* 80273E08 */ virtual u32 getUseMtxNum() const { return 1; }
|
||||
/* 8031459C */ virtual u32 getUseMtxIndex(u16) const { return mUseMtxIndex; }
|
||||
/* 80273E08 */ virtual u16 getUseMtxNum() const { return 1; }
|
||||
/* 8031459C */ virtual u16 getUseMtxIndex(u16) const { return mUseMtxIndex; }
|
||||
/* 80313B94 */ virtual void load() const;
|
||||
/* 80313BF0 */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
|
||||
|
||||
@@ -13,9 +13,15 @@ class J3DTexGenBlock;
|
||||
*/
|
||||
class J3DTexMtxObj {
|
||||
public:
|
||||
Mtx& getMtx(u16 idx) { return mpTexMtx[idx]; }
|
||||
Mtx44& getEffectMtx(u16 idx) { return mpEffectMtx[idx]; }
|
||||
u16 getNumTexMtx() { return mTexMtxNum; }
|
||||
Mtx& getMtx(u16 idx) {
|
||||
J3D_ASSERT(0x113, idx <= mTexMtxNum, "Error : range over");
|
||||
return mpTexMtx[idx];
|
||||
}
|
||||
Mtx44& getEffectMtx(u16 idx) {
|
||||
J3D_ASSERT(0x125, idx <= mTexMtxNum, "Error : range over");
|
||||
return mpEffectMtx[idx];
|
||||
}
|
||||
u16 getNumTexMtx() const { return mTexMtxNum; }
|
||||
void setMtx(u16 idx, Mtx const* mtx) { MTXCopy(*mtx, mpTexMtx[idx]); }
|
||||
|
||||
/* 0x00 */ Mtx* mpTexMtx;
|
||||
@@ -114,8 +120,8 @@ public:
|
||||
|
||||
/* 803146B0 */ virtual ~J3DShapeMtxMulti() {}
|
||||
/* 803147E0 */ virtual u32 getType() const { return 'SMML'; }
|
||||
/* 80273E08 */ virtual u32 getUseMtxNum() const { return mUseMtxNum; }
|
||||
/* 8031459C */ virtual u32 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; }
|
||||
/* 80273E08 */ virtual u16 getUseMtxNum() const { return mUseMtxNum; }
|
||||
/* 8031459C */ virtual u16 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; }
|
||||
/* 80313E4C */ virtual void load() const;
|
||||
/* 80313EEC */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
|
||||
|
||||
@@ -138,8 +144,8 @@ public:
|
||||
|
||||
/* 8031461C */ virtual ~J3DShapeMtxMultiConcatView() {}
|
||||
/* 803147E0 */ virtual u32 getType() const { return 'SMMC'; }
|
||||
/* 80273E08 */ virtual u32 getUseMtxNum() const { return mUseMtxNum; }
|
||||
/* 8031459C */ virtual u32 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; }
|
||||
/* 80273E08 */ virtual u16 getUseMtxNum() const { return mUseMtxNum; }
|
||||
/* 8031459C */ virtual u16 getUseMtxIndex(u16 no) const { return mUseMtxIndexTable[no]; }
|
||||
/* 80313FA4 */ virtual void load() const;
|
||||
/* 803146AC */ virtual void loadNrmMtx(int, u16) const {}
|
||||
/* 8031419C */ virtual void loadNrmMtx(int, u16, f32 (*)[4]) const;
|
||||
|
||||
@@ -69,6 +69,7 @@ struct J3DTevStage {
|
||||
setTevStageInfo(j3dDefaultTevStageInfo);
|
||||
setTevSwapModeInfo(j3dDefaultTevSwapMode);
|
||||
}
|
||||
|
||||
void setTevColorOp(u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) {
|
||||
mTevColorOp = mTevColorOp & ~(0x01 << 2) | param_1 << 2;
|
||||
if (param_1 <= 1) {
|
||||
@@ -128,10 +129,16 @@ struct J3DTevStage {
|
||||
setTexSel(param_0.mTexSel);
|
||||
setRasSel(param_0.mRasSel);
|
||||
}
|
||||
|
||||
void setStageNo(u32 param_0) {
|
||||
field_0x0 = 0xC0 + param_0 * 2;
|
||||
field_0x4 = 0xC1 + param_0 * 2;
|
||||
}
|
||||
|
||||
void setRasSel(u8 ras_sel) { mTevSwapModeInfo = (mTevSwapModeInfo & ~3) | ras_sel; }
|
||||
void setTexSel(u8 tex_sel) { mTevSwapModeInfo = (mTevSwapModeInfo & ~0xc) | (tex_sel << 2); }
|
||||
|
||||
void load(u32 param_1) {
|
||||
void load(u32 param_1) const {
|
||||
J3DGDWriteBPCmd(*(u32*)&field_0x0);
|
||||
J3DGDWriteBPCmd(*(u32*)&field_0x4);
|
||||
}
|
||||
@@ -203,7 +210,7 @@ struct J3DIndTevStage {
|
||||
void setLod(u8 lod) { mInfo = (mInfo & ~0x80000) | (lod << 19); }
|
||||
void setAlphaSel(u8 alphaSel) { mInfo = (mInfo & ~0x180) | (alphaSel << 7); }
|
||||
|
||||
void load(u32 param_1) {
|
||||
void load(u32 param_1) const {
|
||||
J3DGDWriteBPCmd(mInfo | (param_1 + 0x10) * 0x1000000);
|
||||
}
|
||||
|
||||
@@ -251,14 +258,20 @@ struct J3DTevSwapModeTable {
|
||||
J3DTevSwapModeTable(J3DTevSwapModeTableInfo const& info) {
|
||||
mIdx = calcTevSwapTableID(info.field_0x0, info.field_0x1, info.field_0x2, info.field_0x3);
|
||||
}
|
||||
|
||||
J3DTevSwapModeTable& operator=(const J3DTevSwapModeTable& rhs) {
|
||||
mIdx = rhs.mIdx;
|
||||
return *this;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
u8 getR() { return j3dTevSwapTableTable[mIdx * 4]; }
|
||||
u8 getG() { return j3dTevSwapTableTable[mIdx * 4 + 1]; }
|
||||
u8 getB() { return j3dTevSwapTableTable[mIdx * 4 + 2]; }
|
||||
u8 getA() { return j3dTevSwapTableTable[mIdx * 4 + 3]; }
|
||||
u8 getR() const { return *(&j3dTevSwapTableTable[mIdx * 4] + 0); }
|
||||
u8 getG() const { return *(&j3dTevSwapTableTable[mIdx * 4] + 1); }
|
||||
u8 getB() const { return *(&j3dTevSwapTableTable[mIdx * 4] + 2); }
|
||||
u8 getA() const { return *(&j3dTevSwapTableTable[mIdx * 4] + 3); }
|
||||
|
||||
/* 0x0 */ u8 mIdx;
|
||||
}; // Size: 0x1
|
||||
|
||||
Reference in New Issue
Block a user