J3DTevStage::setTevStageInfo

This commit is contained in:
Jcw87
2023-10-14 17:06:05 -07:00
parent 0ca314c746
commit 99b8f09268
2 changed files with 57 additions and 17 deletions
+57 -12
View File
@@ -41,15 +41,62 @@ struct J3DTevStage {
setTevSwapModeInfo(j3dDefaultTevSwapMode);
}
J3DTevStage& operator=(const J3DTevStage& other) {
this->field_0x1 = other.field_0x1;
this->field_0x2 = other.field_0x2;
this->field_0x3 = other.field_0x3;
this->field_0x5 = other.field_0x5;
this->field_0x6 = other.field_0x6;
this->mTevColorOp = other.mTevColorOp;
this->mTevColorAB = other.mTevColorAB;
this->mTevColorCD = other.mTevColorCD;
this->mTevAlphaOp = other.mTevAlphaOp;
this->mTevAlphaAB = other.mTevAlphaAB;
this->mTevSwapModeInfo = other.mTevSwapModeInfo;
return *this;
}
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) {
mTevColorOp = mTevColorOp & ~(0x03 << 4) | param_3 << 4;
mTevColorOp = mTevColorOp & ~0x03 | param_2;
} else {
mTevColorOp = mTevColorOp & ~(0x03 << 4) | (param_1 >> 1 & 3) << 4;
mTevColorOp = mTevColorOp & ~0x03 | 3;
}
mTevColorOp = mTevColorOp & ~(0x01 << 3) | param_4 << 3;
mTevColorOp = mTevColorOp & ~(0x03 << 6) | param_5 << 6;
}
void setTevColorAB(u8 a, u8 b) { mTevColorAB = a << 4 | b; }
void setTevColorCD(u8 c, u8 d) { mTevColorCD = c << 4 | d; }
void setAlphaA(u8 a) { mTevAlphaAB = mTevAlphaAB & ~(0x07 << 5) | a << 5; }
void setAlphaB(u8 b) { mTevAlphaAB = mTevAlphaAB & ~(0x07 << 2) | b << 2; }
void setAlphaC(u8 c) {
mTevAlphaAB = mTevAlphaAB & ~0x03 | c >> 1;
mTevSwapModeInfo = mTevSwapModeInfo & ~(0x01 << 7) | c << 7;
}
void setAlphaD(u8 d) { mTevSwapModeInfo = mTevSwapModeInfo & ~(0x07 << 4) | d << 4; }
void setAlphaABCD(u8 a, u8 b, u8 c, u8 d) {
setAlphaA(a);
setAlphaB(b);
setAlphaC(c);
setAlphaD(d);
}
void setTevAlphaOp(u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) {
mTevAlphaOp = mTevAlphaOp & ~(0x01 << 2) | param_1 << 2;
if (param_1 <= 1) {
mTevAlphaOp = mTevAlphaOp & ~0x03 | param_2;
mTevAlphaOp = mTevAlphaOp & ~(0x03 << 4) | param_3 << 4;
} else {
mTevAlphaOp = mTevAlphaOp & ~(0x03 << 4) | (param_1 >> 1 & 3) << 4;
mTevAlphaOp = mTevAlphaOp & ~0x03 | 3;
}
mTevAlphaOp = mTevAlphaOp & ~(0x01 << 3) | param_4 << 3;
mTevAlphaOp = mTevAlphaOp & ~(0x03 << 6) | param_5 << 6;
}
void setTevStageInfo(const J3DTevStageInfo& info) {
setTevColorOp(info.field_0x5, info.field_0x6, info.field_0x7, info.field_0x8, info.field_0x9);
setTevColorAB(info.field_0x1, info.field_0x2);
setTevColorCD(info.field_0x3, info.field_0x4);
setAlphaABCD(info.field_0xa, info.field_0xb, info.field_0xc, info.field_0xd);
setTevAlphaOp(info.field_0xe, info.field_0xf, info.field_0x10, info.field_0x11, info.field_0x12);
}
void setTexSel(u8 param_0) { mTevSwapModeInfo = mTevSwapModeInfo & ~0x0C | param_0 << 2; }
void setRasSel(u8 param_0) { mTevSwapModeInfo = mTevSwapModeInfo & ~0x03 | param_0; }
void setTevSwapModeInfo(const J3DTevSwapModeInfo& info) {
@@ -57,20 +104,18 @@ struct J3DTevStage {
setRasSel(info.field_0x0);
}
void setTevStageInfo(const J3DTevStageInfo&);
void load(u32) const {
J3DGDWriteBPCmd(*(u32*)&field_0x0);
J3DGDWriteBPCmd(*(u32*)&field_0x4);
}
/* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1;
/* 0x1 */ u8 field_0x2;
/* 0x3 */ u8 field_0x3;
/* 0x1 */ u8 mTevColorOp;
/* 0x1 */ u8 mTevColorAB;
/* 0x3 */ u8 mTevColorCD;
/* 0x4 */ u8 field_0x4;
/* 0x5 */ u8 field_0x5;
/* 0x6 */ u8 field_0x6;
/* 0x5 */ u8 mTevAlphaOp;
/* 0x6 */ u8 mTevAlphaAB;
/* 0x7 */ u8 mTevSwapModeInfo;
};
-5
View File
@@ -705,11 +705,6 @@ mDoExt_backupMatBlock_c::mDoExt_backupMatBlock_c() {
/* Nonmatching */
}
/* 80010F44-8001110C .text setTevStageInfo__11J3DTevStageFRC15J3DTevStageInfo */
void J3DTevStage::setTevStageInfo(const J3DTevStageInfo&) {
/* Nonmatching */
}
/* 80011294-80011300 .text create__23mDoExt_backupMaterial_cFUs */
bool mDoExt_backupMaterial_c::create(u16 param_0) {
mBackupMatBlock = new mDoExt_backupMatBlock_c[param_0];