mirror of
https://github.com/zeldaret/tp
synced 2026-06-02 02:00:30 -04:00
d_menu_letter equivalent (#2407)
This commit is contained in:
+65
-45
@@ -19,6 +19,22 @@
|
||||
class dDlst_blo_c : public dDlst_base_c {
|
||||
public:
|
||||
/* 80053B64 */ virtual void draw();
|
||||
bool create(JKRArchive* param_1, char* param_2) {
|
||||
return mScreen.setPriority(param_2,0x20000,param_1) != 0;
|
||||
}
|
||||
|
||||
J2DPane* getPane(u64 i_tag) {
|
||||
return mScreen.search(i_tag);
|
||||
}
|
||||
|
||||
J2DPicture* getPicture(u64 i_tag) {
|
||||
J2DPane* pane = getPane(i_tag);
|
||||
JUT_ASSERT(1553, pane != 0);
|
||||
if (pane->getTypeID() != 0x12) {
|
||||
return NULL;
|
||||
}
|
||||
return (J2DPicture*)pane;
|
||||
}
|
||||
|
||||
/* 0x004 */ int field_0x4;
|
||||
/* 0x008 */ J2DScreen mScreen;
|
||||
@@ -99,7 +115,7 @@ public:
|
||||
int getCI() { return mCI; }
|
||||
GXTexObj* getTexObj() { return &mTexObj; }
|
||||
GXTlutObj* getTlutObj() { return &mTlutObj; }
|
||||
GXColor getColor() { return mColor; }
|
||||
GXColor* getColor() { return &mColor; }
|
||||
f32 getS() { return mS; }
|
||||
f32 getT() { return mT; }
|
||||
f32 getSw() { return mSw; }
|
||||
@@ -190,14 +206,16 @@ void dDlst_window_c::setScissor(f32 xOrig, f32 yOrig, f32 width, f32 height) {
|
||||
|
||||
/* 80051AF0-80051CF0 04C430 0200+00 1/0 0/0 0/0 .text draw__13dDlst_2DTri_cFv */
|
||||
void dDlst_2DTri_c::draw() {
|
||||
f32 f4;
|
||||
f32 f5;
|
||||
f32 f2 = cM_scos(field_0xc);
|
||||
f32 f3 = cM_ssin(field_0xc);
|
||||
s16 x[3];
|
||||
s16 y[3];
|
||||
int r8 = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
f32 f4 = field_0x10 * cM_ssin(r8);
|
||||
f32 f5 = field_0x14 * cM_scos(r8);
|
||||
f4 = field_0x10 * cM_ssin(r8);
|
||||
f5 = field_0x14 * cM_scos(r8);
|
||||
x[i] = field_0x4 + s16(f4 * f2 + f5 * f3);
|
||||
y[i] = field_0x6 + s16(f5 * f2 - f4 * f3);
|
||||
r8 -= 0x5555;
|
||||
@@ -213,7 +231,7 @@ void dDlst_2DTri_c::draw() {
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
|
||||
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3);
|
||||
GXPosition3s16(x[0], y[0], 0);
|
||||
@@ -236,7 +254,7 @@ void dDlst_2DQuad_c::draw() {
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
|
||||
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3s16((s32)mPosX, (s32)mPosY, 0);
|
||||
@@ -261,7 +279,7 @@ void dDlst_2DPoint_c::draw() {
|
||||
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXSetPointSize(field_0xc, GX_TO_ZERO);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
GXBegin(GX_POINTS, GX_VTXFMT0, 1);
|
||||
GXPosition3s16(field_0x4, field_0x6, 0);
|
||||
@@ -306,7 +324,7 @@ void dDlst_2DT_c::draw() {
|
||||
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXSetDither(GX_TRUE);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetChanMatColor(GX_COLOR0A0, l_color);
|
||||
GXSetClipMode(GX_CLIP_DISABLE);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
@@ -358,7 +376,7 @@ void dDlst_2DT2_c::draw() {
|
||||
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXSetDither(GX_TRUE);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetClipMode(GX_CLIP_DISABLE);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
f32 f31 = field_0x24 + field_0x2c;
|
||||
@@ -430,10 +448,13 @@ void dDlst_2DT2_c::draw() {
|
||||
f27 = 1.0f;
|
||||
}
|
||||
f32 f24;
|
||||
f32 stack_38;
|
||||
if (mScaleY == 0.0f) {
|
||||
f24 = 1.0f;
|
||||
stack_38 = 1.0f;
|
||||
} else {
|
||||
f24 = 0.5f - (1.0f / mScaleY) * 0.5f;
|
||||
stack_38 = (1.0f / mScaleY) * 0.5f + 0.5f;
|
||||
}
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
|
||||
GXPosition2f32(field_0x24, field_0x28);
|
||||
@@ -700,6 +721,7 @@ void dDlst_2DM_c::draw() {
|
||||
s16 r25 = r27 + s16(field_0x1e * f4);
|
||||
s16 r24 = r26 + s16(field_0x20 * f3);
|
||||
GXTexObj tex[2];
|
||||
void** stack_1c = &field_0x18;
|
||||
GXInitTexObj(&tex[0], field_0x18, field_0x1e, field_0x20, GXTexFmt(field_0x1c), GX_CLAMP, GX_CLAMP, 0);
|
||||
GXInitTexObjLOD(&tex[0], GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
|
||||
GXTexWrapMode wrap = field_0xc ? GX_REPEAT : GX_CLAMP;
|
||||
@@ -762,6 +784,7 @@ void dDlst_2Dm_c::draw() {
|
||||
int r26 = field_0x7e * f30;
|
||||
s16 r25 = r27 + s16(f31 * GXGetTexObjWidth(&field_0x1c));
|
||||
s16 r24 = r26 + s16(f30 * GXGetTexObjHeight(&field_0x1c));
|
||||
GXTexObj* stack_18 = &field_0x1c;
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 8);
|
||||
@@ -796,7 +819,7 @@ void dDlst_2Dm_c::draw() {
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
|
||||
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
|
||||
GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetCurrentMtx(0);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3s16((s32)field_0x4, (s32)field_0x6, 0);
|
||||
@@ -831,7 +854,7 @@ void dDlst_2DMt_c::draw() {
|
||||
GXLoadTexObj(r27->getTexObj(), GXTexMapID(r28));
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GXAttr(GX_VA_TEX0 + r28), GX_CLR_RGBA, GX_RGBA6, 0);
|
||||
GXSetVtxDesc(GXAttr(GX_VA_TEX0 + r28), GX_DIRECT);
|
||||
GXSetTevColor(GXTevRegID(GX_TEVREG0 + r28), r27->mColor);
|
||||
GXSetTevColor(GXTevRegID(GX_TEVREG0 + r28), *r27->getColor());
|
||||
GXSetTexCoordGen(GXTexCoordID(r28), GX_TG_MTX2x4, GXTexGenSrc(GX_TG_TEX0 + r28), GX_IDENTITY);
|
||||
GXSetTevOrder(GXTevStageID(r28), GXTexCoordID(r28), GXTexMapID(r28), GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GXTevStageID(r28), GX_CC_ZERO, GXTevColorArg(GX_CC_C0 + r28*2), GX_CC_TEXC, r28 ? GX_CC_CPREV : GX_CC_ZERO);
|
||||
@@ -852,51 +875,42 @@ void dDlst_2DMt_c::draw() {
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3s16(field_0xc, field_0xe, 0);
|
||||
dDlst_2DMt_tex_c* tmp = field_0x8;
|
||||
r27 = field_0x8;
|
||||
for (int i = 0; i < field_0x4; i++) {
|
||||
if (tmp->check()) {
|
||||
GXTexCoord2f32(tmp->getS(), tmp->getT());
|
||||
if (r27->check()) {
|
||||
GXTexCoord2f32(r27->getS(), r27->getT());
|
||||
}
|
||||
tmp++;
|
||||
r27++;
|
||||
}
|
||||
GXPosition3s16(field_0x10, field_0xe, 0);
|
||||
tmp = field_0x8;
|
||||
r27 = field_0x8;
|
||||
for (int i = 0; i < field_0x4; i++) {
|
||||
if (tmp->check()) {
|
||||
GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT());
|
||||
if (r27->check()) {
|
||||
GXTexCoord2f32(r27->getS() + r27->getSw(), r27->getT());
|
||||
}
|
||||
tmp++;
|
||||
r27++;
|
||||
}
|
||||
GXPosition3s16(field_0x10, field_0x12, 0);
|
||||
tmp = field_0x8;
|
||||
r27 = field_0x8;
|
||||
for (int i = 0; i < field_0x4; i++) {
|
||||
if (tmp->check()) {
|
||||
GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT() + tmp->getTw());
|
||||
if (r27->check()) {
|
||||
GXTexCoord2f32(r27->getS() + r27->getSw(), r27->getT() + r27->getTw());
|
||||
}
|
||||
tmp++;
|
||||
r27++;
|
||||
}
|
||||
GXPosition3s16(field_0xc, field_0x12, 0);
|
||||
tmp = field_0x8;
|
||||
r27 = field_0x8;
|
||||
for (int i = 0; i < field_0x4; i++) {
|
||||
if (tmp->check()) {
|
||||
GXTexCoord2f32(tmp->getS(), tmp->getT() + tmp->getTw());
|
||||
if (r27->check()) {
|
||||
GXTexCoord2f32(r27->getS(), r27->getT() + r27->getTw());
|
||||
}
|
||||
tmp++;
|
||||
r27++;
|
||||
}
|
||||
GXEnd();
|
||||
dComIfGp_getCurrentGrafPort()->setup2D();
|
||||
}
|
||||
}
|
||||
|
||||
/* 800539DC-80053A00 04E31C 0024+00 0/0 1/0 0/0 .text getTexture__10J2DPictureCFUc */
|
||||
// Should be inline
|
||||
JUTTexture* J2DPicture::getTexture(u8 param_0) const {
|
||||
if (param_0 < 2) {
|
||||
return mTexture[param_0];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80053A00-80053A9C 04E340 009C+00 0/0 1/1 0/0 .text __ct__10dDlst_2D_cFP7ResTIMGssssUc
|
||||
*/
|
||||
dDlst_2D_c::dDlst_2D_c(ResTIMG* i_timg, s16 i_posX, s16 i_posY, s16 i_sizeX, s16 i_sizeY,
|
||||
@@ -932,9 +946,9 @@ f32 cM_rnd_c::get() {
|
||||
seed0 = seed0 * 171 % 30269;
|
||||
seed1 = seed1 * 172 % 30307;
|
||||
seed2 = seed2 * 170 % 30323;
|
||||
f32 rm = fmodf((seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f), 1.0);
|
||||
f32 newSeed = (seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f);
|
||||
|
||||
return fabsf(rm);
|
||||
return fabsf(fmodf(newSeed, 1.0));
|
||||
}
|
||||
|
||||
/* 80053DE0-80053E18 04E720 0038+00 1/1 0/0 0/0 .text getF__8cM_rnd_cFf */
|
||||
@@ -971,7 +985,7 @@ void dDlst_effectLine_c::draw() {
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
|
||||
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
|
||||
GXSetCullMode(GX_CULL_NONE);
|
||||
GXLoadPosMtxImm(j3dSys.mViewMtx, GX_PNMTX0);
|
||||
GXLoadPosMtxImm(j3dSys.getViewMtx(), GX_PNMTX0);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
GXSetCurrentMtx(0);
|
||||
int r31 = getRndValue(field_0x20, field_0x22);
|
||||
@@ -989,7 +1003,8 @@ void dDlst_effectLine_c::draw() {
|
||||
local_74.z = field_0x10.z;
|
||||
cMtx_multVec(dComIfGd_getInvViewMtx(), &local_68, &local_68);
|
||||
cMtx_multVec(dComIfGd_getInvViewMtx(), &local_74, &local_74);
|
||||
GXSetLineWidth(getRndValue(field_0x24, field_0x26), GX_TO_ZERO);
|
||||
tmp = getRndValue(field_0x24, field_0x26);
|
||||
GXSetLineWidth(tmp, GX_TO_ZERO);
|
||||
GXBegin(GX_LINES, GX_VTXFMT0, 2);
|
||||
GXPosition3f32(local_68.x, local_68.y, local_68.z);
|
||||
GXPosition3f32(local_74.x, local_74.y, local_74.z);
|
||||
@@ -1026,6 +1041,7 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
|
||||
|
||||
dDlst_shadowTri_c* dst = getTri() + mCount;
|
||||
|
||||
cBgD_Vtx_t* vtx = i_vtx;
|
||||
cXyz b(*i_plane->GetNP());
|
||||
f32 temp_f3 = (1.0f - fabsf(b.y));
|
||||
temp_f3 *= temp_f3;
|
||||
@@ -1034,9 +1050,9 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
|
||||
b.z *= temp_f3;
|
||||
b *= 2.0f;
|
||||
|
||||
VECAdd(&i_vtx[param_1], &b, &dst->mPos[0]);
|
||||
VECAdd(&i_vtx[param_2], &b, &dst->mPos[1]);
|
||||
VECAdd(&i_vtx[param_3], &b, &dst->mPos[2]);
|
||||
PSVECAdd(&vtx[param_1], &b, &dst->mPos[0]);
|
||||
PSVECAdd(&vtx[param_2], &b, &dst->mPos[1]);
|
||||
PSVECAdd(&vtx[param_3], &b, &dst->mPos[2]);
|
||||
mCount++;
|
||||
return 1;
|
||||
}
|
||||
@@ -1062,7 +1078,8 @@ static J3DDrawBuffer* J3DDrawBuffer__create(u32 size) {
|
||||
J3DDrawBuffer* buffer = new J3DDrawBuffer();
|
||||
|
||||
if (buffer) {
|
||||
if (buffer->allocBuffer(size) == kJ3DError_Success) {
|
||||
J3DError error = buffer->allocBuffer(size);
|
||||
if (error == kJ3DError_Success) {
|
||||
return buffer;
|
||||
}
|
||||
delete buffer;
|
||||
@@ -1079,15 +1096,18 @@ void dDlst_shadowReal_c::reset() {
|
||||
/* 80054500-800545D4 04EE40 00D4+00 1/1 0/0 0/0 .text imageDraw__18dDlst_shadowReal_cFPA4_f */
|
||||
void dDlst_shadowReal_c::imageDraw(Mtx param_0) {
|
||||
GXSetProjection(mRenderProjMtx, GX_ORTHOGRAPHIC);
|
||||
JUT_ASSERT(1916, mModelNum);
|
||||
J3DModelData* model_data;
|
||||
J3DModel** models = mpModels;
|
||||
J3DShapePacket* shape_pkt;
|
||||
|
||||
for (u8 i = 0; i < mModelNum; i++) {
|
||||
J3DModelData* model_data = (*models)->getModelData();
|
||||
model_data = (*models)->getModelData();
|
||||
model_data->getShapeNodePointer(0)->loadPreDrawSetting();
|
||||
|
||||
for (u16 j = 0; j < model_data->getShapeNum(); j++) {
|
||||
if (!model_data->getShapeNodePointer(j)->checkFlag(1)) {
|
||||
J3DShapePacket* shape_pkt = (*models)->getShapePacket(j);
|
||||
shape_pkt = (*models)->getShapePacket(j);
|
||||
shape_pkt->setBaseMtxPtr(&mViewMtx);
|
||||
shape_pkt->drawFast();
|
||||
shape_pkt->setBaseMtxPtr((Mtx*)param_0);
|
||||
|
||||
Reference in New Issue
Block a user