Merge pull request #521 from Jcw87/misc

Misc
This commit is contained in:
Jasper St. Pierre
2023-10-15 00:16:01 -07:00
committed by GitHub
8 changed files with 103 additions and 64 deletions
+5 -5
View File
@@ -215,7 +215,7 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex();
virtual void indexToPtr() { return indexToPtr_private(mTexNoOffset); }
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TVPT'; }
virtual s32 countDLSize();
virtual void setTevStageNum(const u8* pNum) { mTevStageNum = *pNum; }
@@ -281,7 +281,7 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { return indexToPtr_private(mTexNoOffset); }
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TVB4'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 i, const u16* pNo) { mTexNo[i] = *pNo; }
@@ -356,7 +356,7 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { return indexToPtr_private(mTexNoOffset); }
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TVB2'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 i, const u16* pNo) { mTexNo[i] = *pNo; }
@@ -431,7 +431,7 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex();
virtual void indexToPtr() { return indexToPtr_private(mTexNoOffset); }
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TV16'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 i, const u16* pNo) { mTexNo[i] = *pNo; }
@@ -509,7 +509,7 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { return indexToPtr_private(mTexNoOffset); }
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TVB1'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 i, const u16* pNo) { mTexNo[i] = *pNo; }
+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;
};
+24 -25
View File
@@ -10,8 +10,7 @@
/* 802CD050-802CD0FC .text __ct__14J2DGrafContextFffff */
J2DGrafContext::J2DGrafContext(f32 x, f32 y, f32 width, f32 height)
: mBounds(x, y, x + width, y + height), mScissorBounds(x, y, x + width, y + height) {
JUtility::TColor color(-1);
setColor(color);
setColor(JUtility::TColor());
setLineWidth(6);
}
@@ -40,7 +39,7 @@ void J2DGrafContext::setup2D() {
GXSetNumTexGens(0);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetCullMode(GX_CULL_NONE);
GXLoadPosMtxImm(mPosMtx, 0);
GXLoadPosMtxImm(mPosMtx, GX_PNMTX0);
Mtx mtx;
MTXIdentity(mtx);
GXLoadTexMtxImm(mtx, GX_IDENTITY, GX_MTX3x4);
@@ -48,12 +47,12 @@ void J2DGrafContext::setup2D() {
GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetCurrentMtx(0);
GXSetCurrentMtx(GX_PNMTX0);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 0xf);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBX8, 0xf);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_U16, 0xf);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_U16, 0xf);
GXSetLineWidth(mLineWidth, GX_TO_ZERO);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
@@ -137,40 +136,40 @@ void J2DGrafContext::setLineWidth(u8 lineWidth) {
void J2DGrafContext::fillBox(const JGeometry::TBox2<f32>& box) {
GXSetBlendMode((GXBlendMode)mBoxPart.mType, (GXBlendFactor)mBoxPart.mSrcFactor,
(GXBlendFactor)mBoxPart.mDstFactor, GX_LO_SET);
GXLoadPosMtxImm(mPosMtx, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXLoadPosMtxImm(mPosMtx, GX_PNMTX0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(box.i.x, box.i.y, 0);
GXPosition3f32(box.i.x, box.i.y, 0.0f);
GXColor1u32(mColorTL);
GXPosition3f32(box.f.x, box.i.y, 0);
GXPosition3f32(box.f.x, box.i.y, 0.0f);
GXColor1u32(mColorTR);
GXPosition3f32(box.f.x, box.f.y, 0);
GXPosition3f32(box.f.x, box.f.y, 0.0f);
GXColor1u32(mColorBL);
GXPosition3f32(box.i.x, box.f.y, 0);
GXPosition3f32(box.i.x, box.f.y, 0.0f);
GXColor1u32(mColorBR);
GXEnd();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
}
/* 802CD858-802CD990 .text drawFrame__14J2DGrafContextFRCQ29JGeometry8TBox2<f> */
void J2DGrafContext::drawFrame(const JGeometry::TBox2<f32>& box) {
GXSetBlendMode((GXBlendMode)mBoxPart.mType, (GXBlendFactor)mBoxPart.mSrcFactor,
(GXBlendFactor)mBoxPart.mDstFactor, GX_LO_SET);
GXLoadPosMtxImm(mPosMtx, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXLoadPosMtxImm(mPosMtx, GX_PNMTX0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5);
GXPosition3f32(box.i.x, box.i.y, 0);
GXPosition3f32(box.i.x, box.i.y, 0.0f);
GXColor1u32(mColorTL);
GXPosition3f32(box.f.x, box.i.y, 0);
GXPosition3f32(box.f.x, box.i.y, 0.0f);
GXColor1u32(mColorTR);
GXPosition3f32(box.f.x, box.f.y, 0);
GXPosition3f32(box.f.x, box.f.y, 0.0f);
GXColor1u32(mColorBL);
GXPosition3f32(box.i.x, box.f.y, 0);
GXPosition3f32(box.i.x, box.f.y, 0.0f);
GXColor1u32(mColorBR);
GXPosition3f32(box.i.x, box.i.y, 0);
GXPosition3f32(box.i.x, box.i.y, 0.0f);
GXColor1u32(mColorTL);
GXEnd();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
}
/* 802CD990-802CDA6C .text line__14J2DGrafContextFQ29JGeometry8TVec2<f>Q29JGeometry8TVec2<f>
@@ -178,15 +177,15 @@ void J2DGrafContext::drawFrame(const JGeometry::TBox2<f32>& box) {
void J2DGrafContext::line(JGeometry::TVec2<f32> start, JGeometry::TVec2<f32> end) {
GXSetBlendMode((GXBlendMode)mLinePart.mType, (GXBlendFactor)mLinePart.mSrcFactor,
(GXBlendFactor)mLinePart.mDstFactor, GX_LO_SET);
GXLoadPosMtxImm(mPosMtx, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXLoadPosMtxImm(mPosMtx, GX_PNMTX0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXBegin(GX_LINES, GX_VTXFMT0, 2);
GXPosition3f32(start.x, start.y, 0);
GXColor1u32(mColorTL);
GXPosition3f32(end.x, end.y, 0);
GXColor1u32(mColorBR);
GXEnd();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
}
/* 802CDA6C-802CDADC .text lineTo__14J2DGrafContextFQ29JGeometry8TVec2<f> */
+3 -3
View File
@@ -8,14 +8,14 @@
#include "dolphin/types.h"
/* 802CDB78-802CDBD8 .text __ct__13J2DOrthoGraphFv */
J2DOrthoGraph::J2DOrthoGraph() : J2DGrafContext(0, 0, 0, 0) {
J2DOrthoGraph::J2DOrthoGraph() : J2DGrafContext(0.0f, 0.0f, 0.0f, 0.0f) {
this->setLookat();
}
/* 802CDBD8-802CDCB4 .text __ct__13J2DOrthoGraphFffffff */
J2DOrthoGraph::J2DOrthoGraph(f32 x, f32 y, f32 width, f32 height, f32 far, f32 near)
: J2DGrafContext(x, y, width, height) {
mOrtho = JGeometry::TBox2<f32>(0, 0, width, height);
mOrtho = JGeometry::TBox2<f32>(0.0f, 0.0f, width, height);
mNear = far;
mFar = near;
this->setLookat();
@@ -38,7 +38,7 @@ void J2DOrthoGraph::setOrtho(const JGeometry::TBox2<f32>& bounds, f32 far, f32 n
/* 802CDD48-802CDD84 .text setLookat__13J2DOrthoGraphFv */
void J2DOrthoGraph::setLookat() {
MTXIdentity(mPosMtx);
GXLoadPosMtxImm(mPosMtx, 0);
GXLoadPosMtxImm(mPosMtx, GX_PNMTX0);
}
/* 802CDD84-802CDE10 .text
+4 -4
View File
@@ -17,7 +17,7 @@ J2DPane::J2DPane() : mPaneTree(this) {
mVisible = true;
mTag = 0;
mBounds.set(0.f, 0.f, 0.f, 0.f);
mBounds.set(0.0f, 0.0f, 0.0f, 0.0f);
initiate();
}
@@ -49,7 +49,7 @@ void J2DPane::initiate() {
mBasePosition.y = 0.0f;
mRotationAxis = ROTATE_Z;
mRotation = 0.0f;
mCullMode = 0;
mCullMode = GX_CULL_NONE;
mAlpha = 0xFF;
mInheritAlpha = TRUE;
mDrawAlpha = 0xFF;
@@ -146,7 +146,7 @@ bool J2DPane::insertChild(J2DPane* pPrev, J2DPane* pChild) {
}
/* 802D0078-802D054C .text draw__7J2DPaneFffPC14J2DGrafContextb */
void J2DPane::draw(float x, float y, const J2DGrafContext* pCtx, bool clip) {
void J2DPane::draw(f32 x, f32 y, const J2DGrafContext* pCtx, bool clip) {
J2DGrafContext ctx = *pCtx;
if (pCtx->getGrafType() != 1)
@@ -203,7 +203,7 @@ void J2DPane::draw(float x, float y, const J2DGrafContext* pCtx, bool clip) {
}
/* 802D054C-802D05C8 .text move__7J2DPaneFff */
void J2DPane::move(float x, float y) {
void J2DPane::move(f32 x, f32 y) {
JGeometry::TBox2<f32> bounds;
f32 width = mBounds.getWidth(), height = mBounds.getHeight();
bounds.set(x, y, x + width, y + height);
+2 -2
View File
@@ -3,12 +3,12 @@
// Translation Unit: J3DMatBlock.cpp
//
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DStruct.h"
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dolphin/gd/GDBase.h"
#include "dolphin/os/OS.h"
#include "dolphin/types.h"
+8 -8
View File
@@ -117,7 +117,7 @@ JKRADCommand* JKRDvdAramRipper::callCommand_Async(JKRADCommand* command) {
compression = JKRCheckCompressed(bufPtr);
uncompressedSize = JKRDecompExpandSize(bufPtr);
if (command->field_0x18 && command->field_0x18 > uncompressedSize) {
if (command->field_0x18 && uncompressedSize > command->field_0x18) {
uncompressedSize = command->field_0x18;
}
}
@@ -131,13 +131,13 @@ JKRADCommand* JKRDvdAramRipper::callCommand_Async(JKRADCommand* command) {
command->mBlock =
JKRAram::getAramHeap()->alloc(uncompressedSize, JKRAramHeap::HEAD);
if (command->mBlock) {
command->mAddress = command->mBlock->mAddress;
command->mAddress = command->mBlock->getAddress();
}
dvdFile->mBlock = command->mBlock;
}
if (command->mBlock) {
command->mAddress = command->mBlock->mAddress;
command->mAddress = command->mBlock->getAddress();
}
if (command->mAddress == 0) {
@@ -150,7 +150,7 @@ JKRADCommand* JKRDvdAramRipper::callCommand_Async(JKRADCommand* command) {
}
if (command->mBlock) {
command->mAddress = command->mBlock->mAddress;
command->mAddress = command->mBlock->getAddress();
}
if (command->mAddress == 0) {
@@ -316,10 +316,10 @@ static int decompSZS_subroutine(u8* src, u32 dest) {
if (refCurrent == refEnd) {
refCurrent = refBuf;
}
readCount++;
src++;
readCount++;
} else {
u32 dist = ((src[0] & 0x0f) << 8) | src[1];
u32 dist = src[1] | (src[0] & 0x0f) << 8;
s32 numBytes = src[0] >> 4;
src += 2;
u8* copySource = refCurrent - dist - 1;
@@ -327,8 +327,8 @@ static int decompSZS_subroutine(u8* src, u32 dest) {
copySource += refEnd - refBuf;
}
if (numBytes == 0) {
numBytes = *src + 0x12;
src += 1;
numBytes = *(src++);
numBytes += 0x12;
} else {
numBytes += 2;
}
-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];