From 9e232b61fbac3d4a7564237426b4f0f696bc231f Mon Sep 17 00:00:00 2001 From: Carco_21 <144170194+carter-ktb21@users.noreply.github.com> Date: Tue, 25 Nov 2025 11:34:19 -0500 Subject: [PATCH] Small matches/improvements (#2844) * j2dmatblock debug work * J2DMaterialFactory matching * J2DPictureEx matching * tiny work * fixed regressions * PR cleanup * build error fix --- configure.py | 4 +- include/JSystem/J2DGraph/J2DTevs.h | 66 +++++------ include/JSystem/JUtility/JUTTexture.h | 2 +- src/JSystem/J2DGraph/J2DMatBlock.cpp | 104 +++++++++--------- src/JSystem/J2DGraph/J2DMaterialFactory.cpp | 24 ++-- src/JSystem/J2DGraph/J2DPictureEx.cpp | 21 +++- src/JSystem/J2DGraph/J2DWindowEx.cpp | 6 +- .../J3DGraphAnimator/J3DSkinDeform.cpp | 7 +- .../JStudio/JStudio_JStage/object-light.cpp | 4 +- src/d/d_npc_lib.cpp | 3 +- 10 files changed, 134 insertions(+), 107 deletions(-) diff --git a/configure.py b/configure.py index 28e72eacf67..15aaf20d966 100755 --- a/configure.py +++ b/configure.py @@ -1141,7 +1141,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DTevs.cpp"), Object(Equivalent, "JSystem/J2DGraph/J2DMaterial.cpp"), # weak func order Object(NonMatching, "JSystem/J2DGraph/J2DMatBlock.cpp"), - Object(NonMatching, "JSystem/J2DGraph/J2DMaterialFactory.cpp"), + Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DMaterialFactory.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DPrint.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DPane.cpp"), Object(NonMatching, "JSystem/J2DGraph/J2DScreen.cpp"), @@ -1149,7 +1149,7 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DPicture.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DTextBox.cpp"), Object(NonMatching, "JSystem/J2DGraph/J2DWindowEx.cpp"), - Object(NonMatching, "JSystem/J2DGraph/J2DPictureEx.cpp"), + Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DPictureEx.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DTextBoxEx.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DAnmLoader.cpp"), Object(MatchingFor(ALL_GCN), "JSystem/J2DGraph/J2DAnimation.cpp"), diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index 5eb407379d8..0bf0b8ed8eb 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -53,6 +53,7 @@ extern J2DTexMtxInfo const j2dDefaultTexMtxInfo; class J2DTexMtx { public: J2DTexMtx() { mInfo = j2dDefaultTexMtxInfo; } + ~J2DTexMtx() {} J2DTexMtx(const J2DTexMtxInfo& info) { mInfo = info; } /* 802E9C90 */ void load(u32); /* 802E9CC4 */ void calc(); @@ -287,9 +288,9 @@ public: } void setTexCoordInfo(const J2DTexCoordInfo& info) { mTexCoordInfo = info; } void setTexGenMtx(u8 texGenMtx) { mTexCoordInfo.mTexGenMtx = texGenMtx; } - s32 getTexGenType() { return mTexCoordInfo.mTexGenType; } - s32 getTexGenSrc() { return mTexCoordInfo.mTexGenSrc; } - s32 getTexGenMtx() { return mTexCoordInfo.mTexGenMtx; } + u8 getTexGenType() const { return mTexCoordInfo.mTexGenType; } + u8 getTexGenSrc() const { return mTexCoordInfo.mTexGenSrc; } + u8 getTexGenMtx() const { return mTexCoordInfo.mTexGenMtx; } private: /* 0x0 */ J2DTexCoordInfo mTexCoordInfo; @@ -330,9 +331,9 @@ public: } void setTevOrderInfo(const J2DTevOrderInfo& info) {mTevOrderInfo = info; } - GXChannelID getColor() const { return (GXChannelID)mTevOrderInfo.mColor; } - GXTexMapID getTexMap() const { return (GXTexMapID)mTevOrderInfo.mTexMap; } - GXTexCoordID getTexCoord() const { return (GXTexCoordID)mTevOrderInfo.mTexCoord; } + u8 getColor() const { return mTevOrderInfo.mColor; } + u8 getTexMap() const { return mTevOrderInfo.mTexMap; } + u8 getTexCoord() const { return mTevOrderInfo.mTexCoord; } /* 0x0 */ J2DTevOrderInfo mTevOrderInfo; }; @@ -461,36 +462,36 @@ public: field_0x5 = field_0x5 & ~0xc0 | reg << 6; } - u8 getColorA() { return (field_0x2 & 0xf0) >> 4; } - u8 getColorB() { return field_0x2 & 0x0f; } - u8 getColorC() { return (field_0x3 & 0xf0) >> 4; } - u8 getColorD() { return field_0x3 & 0x0f; } - u8 getAlphaA() { return (field_0x6 & 0xe0) >> 5; } - u8 getAlphaB() { return (field_0x6 & 0x1c) >> 2; } - u8 getAlphaC() { return (field_0x6 & 0x03) << 1 | (field_0x7 & 0x80) >> 7; } - u8 getAlphaD() { return (field_0x7 & 0x70) >> 4; } - u8 getCOp() { + u8 getColorA() const { return (field_0x2 & 0xf0) >> 4; } + u8 getColorB() const { return field_0x2 & 0x0f; } + u8 getColorC() const { return (field_0x3 & 0xf0) >> 4; } + u8 getColorD() const { return field_0x3 & 0x0f; } + u8 getAlphaA() const { return (field_0x6 & 0xe0) >> 5; } + u8 getAlphaB() const { return (field_0x6 & 0x1c) >> 2; } + u8 getAlphaC() const { return (field_0x6 & 0x03) << 1 | (field_0x7 & 0x80) >> 7; } + u8 getAlphaD() const { return (field_0x7 & 0x70) >> 4; } + u8 getCOp() const { if (getCBias() != 3) { return (field_0x1 & 4) >> 2; } return ((field_0x1 & 4) >> 2) + 8 + ((field_0x1 & 0x30) >> 3); } - u8 getCBias() { return field_0x1 & 0x03; } - u8 getCScale() { return (field_0x1 & 0x30) >> 4; } - u8 getCClamp() { return (field_0x1 & 0x08) >> 3; } - u8 getCReg() { return (field_0x1 & 0xc0) >> 6; } - u8 getAOp() { + u8 getCBias() const { return field_0x1 & 0x03; } + u8 getCScale() const { return (field_0x1 & 0x30) >> 4; } + u8 getCClamp() const { return (field_0x1 & 0x08) >> 3; } + u8 getCReg() const { return (field_0x1 & 0xc0) >> 6; } + u8 getAOp() const { if (getABias() != 3) { return (field_0x5 & 4) >> 2; } return ((field_0x5 & 4) >> 2) + 8 + ((field_0x5 & 0x30) >> 3); } - u8 getABias() { return field_0x5 & 0x03; } - u8 getAScale() { return (field_0x5 & 0x30) >> 4; } - u8 getAClamp() { return (field_0x5 & 0x08) >> 3; } - u8 getAReg() { return (field_0x5 & 0xc0) >> 6; } - u8 getRasSel() { return field_0x7 & 3; } - u8 getTexSel() { return (field_0x7 & 0x0c) >> 2; } + u8 getABias() const { return field_0x5 & 0x03; } + u8 getAScale() const { return (field_0x5 & 0x30) >> 4; } + u8 getAClamp() const { return (field_0x5 & 0x08) >> 3; } + u8 getAReg() const { return (field_0x5 & 0xc0) >> 6; } + u8 getRasSel() const { return field_0x7 & 3; } + u8 getTexSel() const { return (field_0x7 & 0x0c) >> 2; } void operator=(J2DTevStage const& other) { field_0x1 = other.field_0x1; @@ -533,7 +534,8 @@ extern const u8 data_804561AC; /** * @ingroup jsystem-j2d * - */ +*/ + class J2DTevSwapModeTable { public: /* 802F1934 */ J2DTevSwapModeTable() { field_0x0 = data_804561AC; } @@ -544,10 +546,10 @@ public: void setTevSwapModeTableInfo(const J2DTevSwapModeTableInfo& info) { field_0x0 = J2DCalcTevSwapTable(info.field_0x0, info.field_0x1, info.field_0x2, info.field_0x3); } - u8 getR() { return field_0x0 >> 6 & 3; } - u8 getG() { return field_0x0 >> 4 & 3; } - u8 getB() { return field_0x0 >> 2 & 3; } - u8 getA() { return field_0x0 & 3; } + u8 getR() const { return field_0x0 >> 6 & 3; } + u8 getG() const { return field_0x0 >> 4 & 3; } + u8 getB() const { return field_0x0 >> 2 & 3; } + u8 getA() const { return field_0x0 & 3; } private: /* 0x0 */ u8 field_0x0; @@ -584,7 +586,7 @@ public: mColorChan = J2DCalcColorChanID(info.field_0x1); } - u16 getMatSrc() const { return mColorChan & 1; } + u8 getMatSrc() const { return mColorChan & 1; } private: /* 0x0 */ u16 mColorChan; diff --git a/include/JSystem/JUtility/JUTTexture.h b/include/JSystem/JUtility/JUTTexture.h index c42bc09b1f8..bef9e604c3a 100644 --- a/include/JSystem/JUtility/JUTTexture.h +++ b/include/JSystem/JUtility/JUTTexture.h @@ -77,7 +77,7 @@ public: u8 getCaptureFlag() const { return mFlags & 1; } u8 getEmbPaletteDelFlag() const { return mFlags & 2; } void setEmbPaletteDelFlag(bool flag) { mFlags = (mFlags & 1) | (flag << 1);} - u8 getTlutName() const { return mTlutName; } + int getTlutName() const { return mTlutName; } bool operator==(const JUTTexture& other) { return mTexInfo == other.mTexInfo && field_0x2c == other.field_0x2c diff --git a/src/JSystem/J2DGraph/J2DMatBlock.cpp b/src/JSystem/J2DGraph/J2DMatBlock.cpp index 7bde04491d0..723e5b9dd71 100644 --- a/src/JSystem/J2DGraph/J2DMatBlock.cpp +++ b/src/JSystem/J2DGraph/J2DMatBlock.cpp @@ -33,7 +33,8 @@ void J2DColorBlock::setGX() { GXSetNumChans(mColorChanNum); const GXChannelID mapping[4] = {GX_COLOR0, GX_ALPHA0, GX_COLOR1, GX_ALPHA1}; for (int i = 0; i < mColorChanNum << 1; i++) { - GXSetChanCtrl(mapping[i], GX_DISABLE, GX_SRC_REG, (GXColorSrc)mColorChan[i].getMatSrc(), GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + GXColorSrc mat_src = (GXColorSrc)mColorChan[i].getMatSrc(); + GXSetChanCtrl(mapping[i], GX_DISABLE, GX_SRC_REG, mat_src, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); } GXSetCullMode((GXCullMode)mCullMode); } @@ -55,6 +56,7 @@ void J2DTexGenBlock::setGX() { for (int i = 0; i < mTexGenNum; i++) { GXSetTexCoordGen((GXTexCoordID)i, (GXTexGenType)mTexGenCoord[i].getTexGenType(), (GXTexGenSrc)mTexGenCoord[i].getTexGenSrc(), mTexGenCoord[i].getTexGenMtx()); } + for (u8 i = 0; i < 8; i++) { if (mTexMtx[i]) { mTexMtx[i]->load(i); @@ -65,14 +67,14 @@ void J2DTexGenBlock::setGX() { /* 802EB620-802EB6A4 2E5F60 0084+00 1/0 1/1 0/0 .text __dt__14J2DTexGenBlockFv */ J2DTexGenBlock::~J2DTexGenBlock() { for (int i = 0; i < 8; i++) { - if (mTexMtx[i] != NULL) { - delete mTexMtx[i]; - } + delete mTexMtx[i]; } } /* 802EB6A4-802EB7E0 2E5FE4 013C+00 0/0 3/3 0/0 .text setTexMtx__14J2DTexGenBlockFUlR9J2DTexMtx */ void J2DTexGenBlock::setTexMtx(u32 param_0, J2DTexMtx& param_1) { + J3D_PANIC(103, param_0 < 8, "Error : range over."); + if (!mTexMtx[param_0]) { mTexMtx[param_0] = new J2DTexMtx(param_1.getTexMtxInfo()); if (!mTexMtx[param_0]) { @@ -86,8 +88,11 @@ void J2DTexGenBlock::setTexMtx(u32 param_0, J2DTexMtx& param_1) { /* 802EB7E0-802EB87C 2E6120 009C+00 0/0 1/1 0/0 .text getTexMtx__14J2DTexGenBlockFUlR9J2DTexMtx */ void J2DTexGenBlock::getTexMtx(u32 param_0, J2DTexMtx& param_1) { + J3D_PANIC(123, param_0 < 8, "Error : range over."); + if (mTexMtx[param_0]) { - param_1.setTexMtxInfo(mTexMtx[param_0]->getTexMtxInfo()); + J2DTexMtxInfo& texMtxInfo = mTexMtx[param_0]->getTexMtxInfo(); + param_1.setTexMtxInfo(texMtxInfo); } } @@ -143,9 +148,9 @@ void J2DTevBlock1::initialize() { mFont = NULL; } -/* 802EBC0C-802EBCC0 2E654C 00B4+00 1/0 0/0 0/0 .text prepareTexture__12J2DTevBlock1FUc - */ +/* 802EBC0C-802EBCC0 2E654C 00B4+00 1/0 0/0 0/0 .text prepareTexture__12J2DTevBlock1FUc */ bool J2DTevBlock1::prepareTexture(u8 param_0) { + bool rv; if (param_0 == 0) { return true; } @@ -159,11 +164,16 @@ bool J2DTevBlock1::prepareTexture(u8 param_0) { mUndeleteFlag = (mUndeleteFlag & 0x80) | 1; } - return param_0 <= 1; + if (param_0 > 1) { + rv = false; + } else { + rv = true; + } + + return rv; } -/* 802EBCC0-802EBDE4 2E6600 0124+00 1/0 0/0 0/0 .text - * insertTexture__12J2DTevBlock1FUlPC7ResTIMGP10JUTPalette */ +/* 802EBCC0-802EBDE4 2E6600 0124+00 1/0 0/0 0/0 .text insertTexture__12J2DTevBlock1FUlPC7ResTIMGP10JUTPalette */ bool J2DTevBlock1::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette* p_tlut) { if (param_0 != 0 || p_timg == NULL) { return false; @@ -195,8 +205,7 @@ bool J2DTevBlock1::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette* return true; } -/* 802EBDE4-802EBE8C 2E6724 00A8+00 1/0 0/0 0/0 .text - * insertTexture__12J2DTevBlock1FUlP10JUTTexture */ +/* 802EBDE4-802EBE8C 2E6724 00A8+00 1/0 0/0 0/0 .text insertTexture__12J2DTevBlock1FUlP10JUTTexture */ bool J2DTevBlock1::insertTexture(u32 param_0, JUTTexture* p_tex) { if (mTexture[0] != NULL && mTexture[0]->getTexInfo() != NULL) { return false; @@ -217,7 +226,7 @@ bool J2DTevBlock1::insertTexture(u32 param_0, JUTTexture* p_tex) { return true; } -/* 802EBE8C-802EC01C 2E67CC 0190+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock1FUlPC7ResTIMG */ +/* 802EBE8C-802EC01C 2E67CC 0190+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock1FUlPC7ResTIMG */ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) { if (param_0 != 0) { return false; @@ -263,8 +272,7 @@ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) { return true; } -/* 802EC01C-802EC0A8 2E695C 008C+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock1FUlP10JUTTexture - */ +/* 802EC01C-802EC0A8 2E695C 008C+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock1FUlP10JUTTexture */ bool J2DTevBlock1::setTexture(u32 param_0, JUTTexture* p_tex) { if (param_0 != 0) { return false; @@ -299,8 +307,7 @@ bool J2DTevBlock1::removeTexture(u32 param_0) { return true; } -/* 802EC124-802EC1D8 2E6A64 00B4+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock1FP7ResFONT - */ +/* 802EC124-802EC1D8 2E6A64 00B4+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock1FP7ResFONT */ bool J2DTevBlock1::setFont(ResFONT* p_font) { if (p_font == NULL) { return false; @@ -320,8 +327,7 @@ bool J2DTevBlock1::setFont(ResFONT* p_font) { return true; } -/* 802EC1D8-802EC258 2E6B18 0080+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock1FP7JUTFont - */ +/* 802EC1D8-802EC258 2E6B18 0080+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock1FP7JUTFont */ bool J2DTevBlock1::setFont(JUTFont* p_font) { if (p_font == NULL) { return false; @@ -336,7 +342,7 @@ bool J2DTevBlock1::setFont(JUTFont* p_font) { return true; } -/* 802EC258-802EC318 2E6B98 00C0+00 1/0 0/0 0/0 .text setPalette__12J2DTevBlock1FUlPC7ResTLUT */ +/* 802EC258-802EC318 2E6B98 00C0+00 1/0 0/0 0/0 .text setPalette__12J2DTevBlock1FUlPC7ResTLUT */ bool J2DTevBlock1::setPalette(u32 param_0, ResTLUT const* p_tlut) { if (param_0 != 0) { return false; @@ -364,8 +370,7 @@ bool J2DTevBlock1::setPalette(u32 param_0, ResTLUT const* p_tlut) { return true; } -/* 802EC318-802EC328 2E6C58 0010+00 1/0 0/0 0/0 .text shiftDeleteFlag__12J2DTevBlock1FUcb - */ +/* 802EC318-802EC328 2E6C58 0010+00 1/0 0/0 0/0 .text shiftDeleteFlag__12J2DTevBlock1FUcb */ void J2DTevBlock1::shiftDeleteFlag(u8, bool) { mUndeleteFlag &= 0x80; } @@ -373,7 +378,7 @@ void J2DTevBlock1::shiftDeleteFlag(u8, bool) { /* 802EC328-802EC570 2E6C68 0248+00 1/0 0/0 0/0 .text setGX__12J2DTevBlock1Fv */ void J2DTevBlock1::setGX() { loadTexture(GX_TEXMAP0, 0); - GXSetTevOrder(GX_TEVSTAGE0, mTevOrder[0].getTexCoord(), mTevOrder[0].getTexMap(), mTevOrder[0].getColor()); + GXSetTevOrder(GX_TEVSTAGE0, (GXTexCoordID)mTevOrder[0].getTexCoord(), (GXTexMapID)mTevOrder[0].getTexMap(), (GXChannelID)mTevOrder[0].getColor()); for (int i = 0; i < 4; i++) { GXSetTevColorS10(i != 3 ? GXTevRegID(i + 1) : GX_TEVPREV, mTevColor[i]); @@ -409,8 +414,7 @@ void J2DTevBlock1::setGX() { mIndTevStage->load(0); } -/* 802EC570-802EC5B8 2E6EB0 0048+00 1/0 0/0 0/0 .text loadTexture__12J2DTevBlock1F11_GXTexMapIDUl - */ +/* 802EC570-802EC5B8 2E6EB0 0048+00 1/0 0/0 0/0 .text loadTexture__12J2DTevBlock1F11_GXTexMapIDUl */ void J2DTevBlock1::loadTexture(GXTexMapID texmapID, u32 texIndex) { if (texIndex == 0 && mTexture[texIndex] != NULL && mTexture[texIndex]->getTexInfo() != NULL) { mTexture[texIndex]->load(texmapID); @@ -494,8 +498,7 @@ bool J2DTevBlock2::prepareTexture(u8 param_0) { return true; } -/* 802ECAE8-802ECDE8 2E7428 0300+00 1/0 0/0 0/0 .text - * insertTexture__12J2DTevBlock2FUlPC7ResTIMGP10JUTPalette */ +/* 802ECAE8-802ECDE8 2E7428 0300+00 1/0 0/0 0/0 .text insertTexture__12J2DTevBlock2FUlPC7ResTIMGP10JUTPalette */ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette* p_tlut) { if (param_0 >= 2 || p_timg == NULL) { return false; @@ -583,8 +586,7 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette* return true; } -/* 802ECDE8-802ECF48 2E7728 0160+00 1/0 0/0 0/0 .text - * insertTexture__12J2DTevBlock2FUlP10JUTTexture */ +/* 802ECDE8-802ECF48 2E7728 0160+00 1/0 0/0 0/0 .text insertTexture__12J2DTevBlock2FUlP10JUTTexture */ bool J2DTevBlock2::insertTexture(u32 param_0, JUTTexture* p_tex) { if (param_0 >= 2 || p_tex == NULL) { return false; @@ -627,7 +629,7 @@ bool J2DTevBlock2::insertTexture(u32 param_0, JUTTexture* p_tex) { return true; } -/* 802ECF48-802ED16C 2E7888 0224+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock2FUlPC7ResTIMG */ +/* 802ECF48-802ED16C 2E7888 0224+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock2FUlPC7ResTIMG */ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) { if (param_0 >= 2) { return false; @@ -635,10 +637,11 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) { u8 tlutid = 0; if (p_timg != NULL && p_timg->indexTexture) { - if (mTexture[param_0 == 0] != NULL) { - const ResTIMG* timg = mTexture[param_0 == 0]->getTexInfo(); + u8 idx = param_0 == 0 ? 1 : 0; + if (mTexture[idx] != NULL) { + const ResTIMG* timg = mTexture[idx]->getTexInfo(); if (timg != NULL && timg->indexTexture) { - int tlutname = mTexture[param_0 == 0]->getTlutName(); + int tlutname = mTexture[idx]->getTlutName(); u8 tlut_no = tlutname - (tlutname >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0); if (tlut_no == 0) { @@ -688,8 +691,7 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) { return true; } -/* 802ED16C-802ED21C 2E7AAC 00B0+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock2FUlP10JUTTexture - */ +/* 802ED16C-802ED21C 2E7AAC 00B0+00 1/0 0/0 0/0 .text setTexture__12J2DTevBlock2FUlP10JUTTexture */ bool J2DTevBlock2::setTexture(u32 param_0, JUTTexture* p_tex) { if (param_0 >= 2) { return false; @@ -731,8 +733,7 @@ bool J2DTevBlock2::removeTexture(u32 param_0) { return true; } -/* 802ED2F0-802ED3A4 2E7C30 00B4+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock2FP7ResFONT - */ +/* 802ED2F0-802ED3A4 2E7C30 00B4+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock2FP7ResFONT */ bool J2DTevBlock2::setFont(ResFONT* p_font) { if (p_font == NULL) { return false; @@ -752,8 +753,7 @@ bool J2DTevBlock2::setFont(ResFONT* p_font) { return true; } -/* 802ED3A4-802ED424 2E7CE4 0080+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock2FP7JUTFont - */ +/* 802ED3A4-802ED424 2E7CE4 0080+00 1/0 0/0 0/0 .text setFont__12J2DTevBlock2FP7JUTFont */ bool J2DTevBlock2::setFont(JUTFont* p_font) { if (p_font == NULL) { return false; @@ -768,7 +768,7 @@ bool J2DTevBlock2::setFont(JUTFont* p_font) { return true; } -/* 802ED424-802ED4FC 2E7D64 00D8+00 1/0 0/0 0/0 .text setPalette__12J2DTevBlock2FUlPC7ResTLUT */ +/* 802ED424-802ED4FC 2E7D64 00D8+00 1/0 0/0 0/0 .text setPalette__12J2DTevBlock2FUlPC7ResTLUT */ bool J2DTevBlock2::setPalette(u32 param_0, ResTLUT const* p_tlut) { if (param_0 >= 2) { return false; @@ -796,8 +796,7 @@ bool J2DTevBlock2::setPalette(u32 param_0, ResTLUT const* p_tlut) { return true; } -/* 802ED4FC-802ED584 2E7E3C 0088+00 1/0 0/0 0/0 .text shiftDeleteFlag__12J2DTevBlock2FUcb - */ +/* 802ED4FC-802ED584 2E7E3C 0088+00 1/0 0/0 0/0 .text shiftDeleteFlag__12J2DTevBlock2FUcb */ void J2DTevBlock2::shiftDeleteFlag(u8 param_0, bool param_1) { u8 tmpFlags = mUndeleteFlag & 0x80; mUndeleteFlag = mUndeleteFlag & 0x7F; @@ -808,7 +807,7 @@ void J2DTevBlock2::shiftDeleteFlag(u8 param_0, bool param_1) { mUndeleteFlag = (mUndeleteFlag & ((1 << param_0) - 1)) | ((mUndeleteFlag & ~((1 << (param_0 + 1)) - 1)) >> 1); } - mUndeleteFlag |= tmpFlags; + mUndeleteFlag = (mUndeleteFlag | tmpFlags) & 0xFF; } /* 802ED584-802ED874 2E7EC4 02F0+00 1/0 0/0 0/0 .text setGX__12J2DTevBlock2Fv */ @@ -816,12 +815,15 @@ void J2DTevBlock2::setGX() { for (int i = 0; i < 2; i++) { loadTexture(GXTexMapID(i), i); } + for (int i = 0; i < mTevStageNum; i++) { - GXSetTevOrder(GXTevStageID(i), mTevOrder[i].getTexCoord(), mTevOrder[i].getTexMap(), mTevOrder[i].getColor()); + GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor()); } + for (int i = 0; i < 4; i++) { GXSetTevColorS10(i != 3 ? GXTevRegID(i + 1) : GX_TEVPREV, mTevColor[i]); } + GXSetNumTevStages(mTevStageNum); for (int i = 0; i < mTevStageNum; i++) { GXSetTevColorIn(GXTevStageID(i), GXTevColorArg(mTevStage[i].getColorA()), @@ -841,25 +843,28 @@ void J2DTevBlock2::setGX() { 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); } + for (int i = 0; i < 4; i++) { GXSetTevKColor(GXTevKColorID(i), mTevKColor[i]); } + for (int i = 0; i < mTevStageNum; i++) { GXSetTevSwapMode(GXTevStageID(i), GXTevSwapSel(mTevStage[i].getRasSel()), GXTevSwapSel(mTevStage[i].getTexSel())); } + for (int i = 0; i < 4; i++) { GXSetTevSwapModeTable(GXTevSwapSel(i), GXTevColorChan(mTevSwapModeTable[i].getR()), GXTevColorChan(mTevSwapModeTable[i].getG()), GXTevColorChan(mTevSwapModeTable[i].getB()), GXTevColorChan(mTevSwapModeTable[i].getA())); } + for (u8 i = 0; i < mTevStageNum; i++) { mIndTevStage[i].load(i); } } -/* 802ED874-802ED8BC 2E81B4 0048+00 1/0 0/0 0/0 .text loadTexture__12J2DTevBlock2F11_GXTexMapIDUl - */ +/* 802ED874-802ED8BC 2E81B4 0048+00 1/0 0/0 0/0 .text loadTexture__12J2DTevBlock2F11_GXTexMapIDUl */ void J2DTevBlock2::loadTexture(GXTexMapID texmapID, u32 texIndex) { if (texIndex < 2 && mTexture[texIndex] != NULL && mTexture[texIndex]->getTexInfo() != NULL) { mTexture[texIndex]->load(texmapID); @@ -1284,7 +1289,7 @@ void J2DTevBlock4::setGX() { loadTexture(GXTexMapID(i), i); } for (int i = 0; i < mTevStageNum; i++) { - GXSetTevOrder(GXTevStageID(i), mTevOrder[i].getTexCoord(), mTevOrder[i].getTexMap(), mTevOrder[i].getColor()); + GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor()); } for (int i = 0; i < 4; i++) { GXSetTevColorS10(i != 3 ? GXTevRegID(i + 1) : GX_TEVPREV, mTevColor[i]); @@ -1747,7 +1752,7 @@ void J2DTevBlock8::setGX() { loadTexture(GXTexMapID(i), i); } for (int i = 0; i < mTevStageNum; i++) { - GXSetTevOrder(GXTevStageID(i), mTevOrder[i].getTexCoord(), mTevOrder[i].getTexMap(), mTevOrder[i].getColor()); + GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor()); } for (int i = 0; i < 4; i++) { GXSetTevColorS10(i != 3 ? GXTevRegID(i + 1) : GX_TEVPREV, mTevColor[i]); @@ -1823,7 +1828,6 @@ J2DTevBlock16::~J2DTevBlock16() { /* 802F03EC-802F0660 2EAD2C 0274+00 1/0 0/0 0/0 .text initialize__13J2DTevBlock16Fv */ // NONMATCHING - inlines void J2DTevBlock16::initialize() { - for (int i = 0; i < 8; i++) { mTexNo[i] = 0xffff; } @@ -2211,7 +2215,7 @@ void J2DTevBlock16::setGX() { loadTexture(GXTexMapID(i), i); } for (int i = 0; i < mTevStageNum; i++) { - GXSetTevOrder(GXTevStageID(i), mTevOrder[i].getTexCoord(), mTevOrder[i].getTexMap(), mTevOrder[i].getColor()); + GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor()); } for (int i = 0; i < 4; i++) { GXSetTevColorS10(i != 3 ? GXTevRegID(i + 1) : GX_TEVPREV, mTevColor[i]); diff --git a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp index c10f4312475..2e2e8360410 100644 --- a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -290,24 +290,32 @@ J2DTevOrder J2DMaterialFactory::newTevOrder(int param_0, int param_1) const { return J2DTevOrder(); } -/* 802F3A1C-802F3AB4 2EE35C 0098+00 1/1 0/0 0/0 .text newTevColor__18J2DMaterialFactoryCFii */ -// NONMATCHING - J2DGXColorS10 init issues +/* 802F3A1C-802F3AB4 2EE35C 0098+00 1/1 0/0 0/0 .text newTevColor__18J2DMaterialFactoryCFii */ J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { + // FAKEMATCH + #if DEBUG || VERSION == VERSION_WII_USA_R0 || VERSION == VERSION_WII_USA_R2 GXColorS10 color = {0, 0, 0, 0}; - J2DGXColorS10 rv = J2DGXColorS10(color); + J2DGXColorS10 rv = color; + #else + GXColorS10 color = {0, 0, 0, 0}; + J2DGXColorS10 rv; + rv.r = color.r; + rv.g = color.g; + rv.b = color.b; + rv.a = color.a; + #endif J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + if (iVar2->field_0x92[param_1] != 0xffff) { return field_0x38[iVar2->field_0x92[param_1]]; } + return rv; } -/* ############################################################################################## */ - -/* 802F3AB4-802F3B54 2EE3F4 00A0+00 1/1 0/0 0/0 .text newTevKColor__18J2DMaterialFactoryCFii */ +/* 802F3AB4-802F3B54 2EE3F4 00A0+00 1/1 0/0 0/0 .text newTevKColor__18J2DMaterialFactoryCFii */ JUtility::TColor J2DMaterialFactory::newTevKColor(int param_0, int param_1) const { - GXColor x = {0xFF, 0xFF, 0xFF, 0xFF}; - JUtility::TColor local_20 = GXColor(x); + JUtility::TColor local_20 = (GXColor){0xFF, 0xFF, 0xFF, 0xFF}; J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; if (iVar2->field_0x4a[param_1] != 0xffff) { return field_0x3c[iVar2->field_0x4a[param_1]]; diff --git a/src/JSystem/J2DGraph/J2DPictureEx.cpp b/src/JSystem/J2DGraph/J2DPictureEx.cpp index 23c3edb37d9..9d2d52a9fbf 100644 --- a/src/JSystem/J2DGraph/J2DPictureEx.cpp +++ b/src/JSystem/J2DGraph/J2DPictureEx.cpp @@ -1054,8 +1054,8 @@ bool J2DPictureEx::setBlackWhite(JUtility::TColor param_0, JUtility::TColor para /* 80306664-80306824 300FA4 01C0+00 4/4 0/0 0/0 .text * getBlackWhite__12J2DPictureExCFPQ28JUtility6TColorPQ28JUtility6TColor */ -// NONMATCHING regswap bool J2DPictureEx::getBlackWhite(JUtility::TColor* black, JUtility::TColor* white) const { + // FAKEMATCH if (mMaterial == NULL) { return false; } @@ -1077,8 +1077,14 @@ bool J2DPictureEx::getBlackWhite(JUtility::TColor* black, JUtility::TColor* whit *white = 0xffffffff; if (bVar1) { + #if DEBUG || VERSION == VERSION_WII_USA_R0 || VERSION == VERSION_WII_USA_R2 J2DGXColorS10 tevColor0 = *mMaterial->getTevBlock()->getTevColor(0); J2DGXColorS10 tevColor1 = *mMaterial->getTevBlock()->getTevColor(1); + #else + J2DGXColorS10 tevColor0, tevColor1; + tevColor0 = *mMaterial->getTevBlock()->getTevColor(0); + tevColor1 = *mMaterial->getTevBlock()->getTevColor(1); + #endif *black = (u8)tevColor0.r << 24 | (u8)tevColor0.g << 16 | (u8)tevColor0.b << 8 | (u8)tevColor0.a; *white = (u8)tevColor1.r << 24 | (u8)tevColor1.g << 16 | (u8)tevColor1.b << 8 | (u8)tevColor1.a; } @@ -1207,7 +1213,6 @@ void J2DPictureEx::setAnimation(J2DAnmVisibilityFull* anm) { /* 80306B7C-80306C70 3014BC 00F4+00 1/0 0/0 0/0 .text * setAnimation__12J2DPictureExFP14J2DAnmVtxColor */ -// NONMATCHING regswap void J2DPictureEx::setAnimation(J2DAnmVtxColor* anm) { field_0x198 = anm; field_0x19c = 0; @@ -1215,12 +1220,18 @@ void J2DPictureEx::setAnimation(J2DAnmVtxColor* anm) { if (anm != NULL) { u16 anm_table_num = anm->getAnmTableNum(0); for (u8 i = 0; i < 4; i++) { - if (field_0x158[i] != 0xffff) { + if (field_0x158[i] != 0xFFFF) { for (u16 j = 0; j < anm_table_num; j++) { + #if DEBUG J3DAnmVtxColorIndexData* data = anm->getAnmVtxColorIndexData(0, j); - u16* index = anm->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData; + u16* index2 = anm->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData; + #else + J3DAnmVtxColorIndexData* data = anm->getAnmVtxColorIndexData(0, j); + u16* index = anm->getVtxColorIndexPointer(0); + u16* index2 = index + (uintptr_t)data->mpData; + #endif for (u16 k = 0; k < data->mNum; k++) { - if (index[k] == field_0x158[i]) { + if (index2[k] == field_0x158[i]) { field_0x198 = anm; field_0x19c |= 1 << i; goto next; diff --git a/src/JSystem/J2DGraph/J2DWindowEx.cpp b/src/JSystem/J2DGraph/J2DWindowEx.cpp index d052b84ba59..42b103047e6 100644 --- a/src/JSystem/J2DGraph/J2DWindowEx.cpp +++ b/src/JSystem/J2DGraph/J2DWindowEx.cpp @@ -666,8 +666,7 @@ bool J2DWindowEx::setBlackWhite(JUtility::TColor black, JUtility::TColor white) setTevOrder(bVar1); setTevStage(bVar1); if (bVar1) { - J2DGXColorS10 color0; - J2DGXColorS10 color1; + J2DGXColorS10 color0, color1; color0.r = black.r; color0.g = black.g; color0.b = black.b; @@ -685,8 +684,7 @@ bool J2DWindowEx::setBlackWhite(JUtility::TColor black, JUtility::TColor white) return true; } -/* 80302A4C-80302BE8 2FD38C 019C+00 4/4 0/0 0/0 .text - * getBlackWhite__11J2DWindowExCFPQ28JUtility6TColorPQ28JUtility6TColor */ +/* 80302A4C-80302BE8 2FD38C 019C+00 4/4 0/0 0/0 .text getBlackWhite__11J2DWindowExCFPQ28JUtility6TColorPQ28JUtility6TColor */ bool J2DWindowEx::getBlackWhite(JUtility::TColor* param_0, JUtility::TColor* param_1) const { if (mFrameMaterial[0] == NULL) { return false; diff --git a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index e1f06d3baab..4575a914a0b 100644 --- a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -401,7 +401,12 @@ void J3DSkinDeform::changeFastSkinDL(J3DModelData* pModelData) { for (int local_4c = 0; local_4c < uVar9; local_4c++) { u8* dst = &local_44[local_34 * local_4c]; memcpy(puVar10, dst + 1, local_34 - 1); - puVar10 = ((local_34 + puVar10) - 1); + // FAKEMATCH + #if DEBUG || VERSION == VERSION_WII_USA_R0 || VERSION == VERSION_WII_USA_R2 + puVar10 += local_34 - 1; + #else + puVar10 = (local_34 + puVar10) - 1; + #endif } local_44 += local_34 * uVar9; } diff --git a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp index e1f81738904..13779d74e16 100644 --- a/src/JSystem/JStudio/JStudio_JStage/object-light.cpp +++ b/src/JSystem/JStudio/JStudio_JStage/object-light.cpp @@ -61,9 +61,9 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_begin() { adaptor_object_begin_(); JStage::TLight* pLightObj = get_pJSG_(); const JStudio::TObject* pObject = adaptor_getObject(); - JUT_ASSERT(60, pObject != NULL); + JUT_ASSERT(60, pObject!=NULL); const JStudio::TControl* pControl = pObject->getControl(); - JUT_ASSERT(62, pControl != NULL); + JUT_ASSERT(62, pControl!=NULL); GXColor lightColor = pLightObj->JSGGetColor(); adaptor_setVariableValue_GXColor(sauVariableValue_4_COLOR_RGBA, lightColor); JStudio::TControl::TTransform_position_direction lightObjTransform; diff --git a/src/d/d_npc_lib.cpp b/src/d/d_npc_lib.cpp index 07d66387262..72230aed2de 100644 --- a/src/d/d_npc_lib.cpp +++ b/src/d/d_npc_lib.cpp @@ -35,8 +35,7 @@ void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csX /* 80251534-80251B60 24BE74 062C+00 0/0 0/0 2/2 .text * action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi */ // NONMATCHING - regswap, equivalent -void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3, - int param_4) { +void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3, int param_4) { cXyz sp90; Mtx spA0;