J2DGraph debug (#3028)

* J2DGraph debug

* J2DGraph debug
This commit is contained in:
Jcw87
2026-01-11 19:00:04 -08:00
committed by GitHub
parent a104420d6c
commit 32b5c96b8f
27 changed files with 1200 additions and 931 deletions
+54 -47
View File
@@ -76,11 +76,13 @@ void J2DTexGenBlock::setTexMtx(u32 param_0, J2DTexMtx& param_1) {
void J2DTexGenBlock::getTexMtx(u32 param_0, J2DTexMtx& param_1) {
J3D_PANIC(123, param_0 < 8, "Error : range over.");
if (mTexMtx[param_0]) {
J2DTexMtxInfo& texMtxInfo = mTexMtx[param_0]->getTexMtxInfo();
param_1.setTexMtxInfo(texMtxInfo);
if (!mTexMtx[param_0]) {
return;
}
J2DTexMtxInfo& texMtxInfo = mTexMtx[param_0]->getTexMtxInfo();
param_1.setTexMtxInfo(texMtxInfo);
}
JUTTexture* J2DTevBlock::getTexture(u32) {
@@ -349,6 +351,7 @@ void J2DTevBlock1::shiftDeleteFlag(u8, bool) {
void J2DTevBlock1::setGX() {
loadTexture(GX_TEXMAP0, 0);
(void)bool(mFont);
GXSetTevOrder(GX_TEVSTAGE0, (GXTexCoordID)mTevOrder[0].getTexCoord(), (GXTexMapID)mTevOrder[0].getTexMap(), (GXChannelID)mTevOrder[0].getColor());
for (int i = 0; i < 4; i++) {
@@ -366,10 +369,10 @@ void J2DTevBlock1::setGX() {
GXTevAlphaArg(mTevStage[0].getAlphaD()));
GXSetTevColorOp(GX_TEVSTAGE0, GXTevOp(mTevStage[0].getCOp()),
GXTevBias(mTevStage[0].getCBias()), GXTevScale(mTevStage[0].getCScale()),
mTevStage[0].getCClamp(), GXTevRegID(mTevStage[0].getCReg()));
GXBool(mTevStage[0].getCClamp()), GXTevRegID(mTevStage[0].getCReg()));
GXSetTevAlphaOp(GX_TEVSTAGE0, (GXTevOp)mTevStage[0].getAOp(),
GXTevBias(mTevStage[0].getABias()), GXTevScale(mTevStage[0].getAScale()),
mTevStage[0].getAClamp(), GXTevRegID(mTevStage[0].getAReg()));
GXBool(mTevStage[0].getAClamp()), GXTevRegID(mTevStage[0].getAReg()));
GXSetTevKColorSel(GX_TEVSTAGE0, mTevKColorSel[0] != 0xff ? GXTevKColorSel(mTevKColorSel[0]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GX_TEVSTAGE0, mTevKAlphaSel[0] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[0]) : GX_TEV_KASEL_1);
for (int i = 0; i < 4; i++) {
@@ -483,28 +486,27 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
return false;
}
JUTTexture* tex;
u8 tlutid = 0;
if (p_timg->indexTexture && p_tlut == NULL) {
tex = mTexture[0];
if (tex != NULL && tex->getTexInfo() != NULL && tex->getTexInfo()->indexTexture) {
int tlutname = tex->getTlutName();
if (p_timg->indexTexture && p_tlut == NULL && mTexture[0] != NULL) {
const ResTIMG* timg = mTexture[0]->getTexInfo();
if (timg != NULL && timg->indexTexture) {
int tlutname = mTexture[0]->getTlutName();
if (tlutname == GX_TLUT0 || tlutname == GX_BIGTLUT0) {
tlutid = 1;
}
}
}
tex = mTexture[texNo];
if (tex == NULL) {
JUTTexture* newtex = new JUTTexture(p_timg, tlutid);
JUTTexture* tex;
if (mTexture[texNo] == NULL) {
tex = new JUTTexture(p_timg, tlutid);
if (newtex == NULL) {
if (tex == NULL) {
return false;
}
if (p_tlut != NULL) {
newtex->storeTIMG(p_timg, p_tlut);
tex->storeTIMG(p_timg, p_tlut);
}
if (param_0 == 0) {
@@ -512,10 +514,11 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
mPalette[1] = mPalette[0];
mTexNo[1] = mTexNo[0];
}
mTexture[param_0] = newtex;
mTexture[param_0] = tex;
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= (1 << param_0);
} else {
tex = mTexture[texNo];
if (p_tlut == NULL) {
tex->storeTIMG(p_timg, tlutid);
} else {
@@ -604,9 +607,8 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
const ResTIMG* timg = mTexture[idx]->getTexInfo();
if (timg != NULL && timg->indexTexture) {
int tlutname = mTexture[idx]->getTlutName();
u8 tlut_no = tlutname - (tlutname >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0);
if (tlut_no == 0) {
if (u8(tlutname - (tlutname >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0)) == 0) {
tlutid = 1;
}
}
@@ -763,7 +765,7 @@ void J2DTevBlock2::shiftDeleteFlag(u8 param_0, bool param_1) {
mUndeleteFlag = (mUndeleteFlag & ((1 << param_0) - 1)) | ((mUndeleteFlag & ~((1 << (param_0 + 1)) - 1)) >> 1);
}
mUndeleteFlag = (mUndeleteFlag | tmpFlags) & 0xFF;
mUndeleteFlag = u8(mUndeleteFlag | tmpFlags);
}
void J2DTevBlock2::setGX() {
@@ -771,6 +773,8 @@ void J2DTevBlock2::setGX() {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -791,10 +795,10 @@ void J2DTevBlock2::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -943,8 +947,9 @@ bool J2DTevBlock4::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -960,7 +965,7 @@ bool J2DTevBlock4::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1037,10 +1042,9 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 4; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -1213,13 +1217,14 @@ void J2DTevBlock4::shiftDeleteFlag(u8 param_0, bool param_1) {
mUndeleteFlag = (mUndeleteFlag & ((1 << param_0) - 1)) | ((mUndeleteFlag & ~((1 << (param_0 + 1)) - 1)) >> 1);
}
mUndeleteFlag |= tmpFlags;
mUndeleteFlag = u8(mUndeleteFlag | tmpFlags);
}
void J2DTevBlock4::setGX() {
for (int i = 0; i < 4; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -1238,10 +1243,10 @@ void J2DTevBlock4::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -1387,8 +1392,9 @@ bool J2DTevBlock8::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1404,7 +1410,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1459,7 +1465,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, JUTTexture* p_tex) {
delete mTexture[7];
}
mUndeleteFlag &= 0x7F;
mUndeleteFlag &= ~0x80;
}
for (u8 i = 7; i > param_0; i--) {
@@ -1481,10 +1487,9 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 8; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -1659,6 +1664,7 @@ void J2DTevBlock8::setGX() {
for (int i = 0; i < 8; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -1677,10 +1683,10 @@ void J2DTevBlock8::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -1826,8 +1832,9 @@ bool J2DTevBlock16::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1843,7 +1850,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1898,7 +1905,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, JUTTexture* p_tex) {
delete mTexture[7];
}
mUndeleteFlag &= 0x7F;
mUndeleteFlag &= ~0x80;
}
for (u8 i = 7; i > param_0; i--) {
@@ -1920,10 +1927,9 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 8; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -2098,6 +2104,7 @@ void J2DTevBlock16::setGX() {
for (int i = 0; i < 8; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -2116,10 +2123,10 @@ void J2DTevBlock16::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -2149,13 +2156,13 @@ void J2DTevBlock16::loadTexture(GXTexMapID texmapID, u32 texIndex) {
void J2DIndBlockFull::initialize() {
mIndTexStageNum = 0;
for (int i = 0; i < 4; i++) {
mIndTexOrder[i] = j2dDefaultIndTexOrderNull;
mIndTexOrder[i].setIndTexOrderInfo(j2dDefaultIndTexOrderNull);
}
for (int i = 0; i < 3; i++) {
mIndTexMtx[i] = j2dDefaultIndTexMtxInfo;
mIndTexMtx[i].setIndTexMtxInfo(j2dDefaultIndTexMtxInfo);
}
for (int i = 0; i < 4; i++) {
mTexCoordScale[i] = j2dDefaultIndTexCoordScaleInfo;
mTexCoordScale[i].setIndTexCoordScaleInfo(j2dDefaultIndTexCoordScaleInfo);
}
}
@@ -2181,5 +2188,5 @@ void J2DPEBlock::initialize() {
void J2DPEBlock::setGX() {
GXSetAlphaCompare(GXCompare(mAlphaComp.getComp0()), mAlphaComp.getRef0(), GXAlphaOp(mAlphaComp.getOp()), GXCompare(mAlphaComp.getComp1()), mAlphaComp.getRef1());
GXSetBlendMode(GXBlendMode(mBlend.getType()), GXBlendFactor(mBlend.getSrcFactor()), GXBlendFactor(mBlend.getDstFactor()), GXLogicOp(mBlend.getOp()));
GXSetDither(mDither);
GXSetDither(GXBool(mDither));
}