mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-03 02:28:37 -04:00
d_drawlist OK, J2DPicture inline cleanup
This commit is contained in:
+41
-49
@@ -22,27 +22,10 @@
|
||||
#include "global.h"
|
||||
|
||||
#include "weak_bss_3569.h" // IWYU pragma: keep
|
||||
|
||||
class ShdwDrawPoly_c : public cBgS_ShdwDraw {
|
||||
public:
|
||||
virtual ~ShdwDrawPoly_c() {}
|
||||
|
||||
void setCenter(cXyz* center) { mCenter = center; }
|
||||
cXyz* getCenter() { return mCenter; }
|
||||
void setLightVec(cXyz* lightVec) { mLightVec = lightVec; }
|
||||
cXyz* getLightVec() { return mLightVec; }
|
||||
void setPoly(dDlst_shadowPoly_c* poly) { mPoly = poly; }
|
||||
dDlst_shadowPoly_c* getPoly() { return mPoly; }
|
||||
|
||||
/* 0x34 */ cXyz* mCenter;
|
||||
/* 0x38 */ cXyz* mLightVec;
|
||||
/* 0x3C */ dDlst_shadowPoly_c* mPoly;
|
||||
}; // Size: 0x40
|
||||
#include "weak_data_2100_2080.h" // IWYU pragma: keep
|
||||
|
||||
GXTexObj dDlst_shadowControl_c::mSimpleTexObj;
|
||||
|
||||
#include "weak_data_1811.h" // IWYU pragma: keep
|
||||
|
||||
/* 800804A4-800804C0 .text setViewPort__14dDlst_window_cFffffff */
|
||||
void dDlst_window_c::setViewPort(f32 x, f32 y, f32 w, f32 h, f32 n, f32 f) {
|
||||
mViewport.mXOrig = x;
|
||||
@@ -683,7 +666,6 @@ dDlst_2D_c::dDlst_2D_c(ResTIMG* timg, s16 x, s16 y, u8 alpha) {
|
||||
|
||||
/* 800821B0-80082264 .text draw__10dDlst_2D_cFv */
|
||||
void dDlst_2D_c::draw() {
|
||||
/* Nonmatching */
|
||||
mPicture.setAlpha(mAlpha);
|
||||
mPicture.draw(mX, mY, false, false, false);
|
||||
}
|
||||
@@ -1283,6 +1265,25 @@ void dDlst_shadowPoly_c::draw() {
|
||||
GXEnd();
|
||||
}
|
||||
|
||||
static void dummy() {
|
||||
// Fakematch to fix the vtable order and weak destructor order of dDlst_shadowReal_c and dDlst_shadowTri_c.
|
||||
struct {
|
||||
dDlst_shadowReal_c temp[1];
|
||||
}* temp;
|
||||
delete temp;
|
||||
}
|
||||
|
||||
/* 80083668-800836E0 .text J3DDrawBuffer__create__FUl */
|
||||
static J3DDrawBuffer * J3DDrawBuffer__create(u32 size) {
|
||||
J3DDrawBuffer * buffer = new J3DDrawBuffer();
|
||||
if (buffer != NULL) {
|
||||
if (buffer->allocBuffer(size) == 0)
|
||||
return buffer;
|
||||
delete buffer;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 800836E0-800837F0 .text init__18dDlst_shadowReal_cFv */
|
||||
void dDlst_shadowReal_c::init() {
|
||||
u32 texDataSize = GXGetTexBufferSize(0x80, 0x80, GX_TF_I4, GX_FALSE, 0);
|
||||
@@ -1344,12 +1345,11 @@ void dDlst_shadowReal_c::imageDraw(Mtx drawMtx) {
|
||||
|
||||
/* 8008398C-80083B8C .text draw__18dDlst_shadowReal_cFv */
|
||||
void dDlst_shadowReal_c::draw() {
|
||||
/* Nonmatching */
|
||||
if (mState != 1)
|
||||
return;
|
||||
|
||||
static GXColor l_color = { 0x00, 0x00, 0x00, 0x40 };
|
||||
l_color.a = mAlpha;
|
||||
l_color.a = (mAlpha >> 2) & ~3;
|
||||
|
||||
GXSetTevColor(GX_TEVREG0, l_color);
|
||||
GXCallDisplayList(l_shadowVolMat, 0x40);
|
||||
@@ -1436,9 +1436,11 @@ BOOL realPolygonCheck(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, dD
|
||||
ShdwDrawPoly_c shdwDrawPoly;
|
||||
cXyz local_8c;
|
||||
cXyz local_98;
|
||||
f32 var1 = param_1 + param_2 - cLib_maxLimit(param_1 * param_1 * 0.002f, 120.0f);
|
||||
f32 tmp1 = param_1 * param_1 * 0.002f;
|
||||
f32 tmp2 = cLib_maxLimit(tmp1, 120.0f);
|
||||
f32 var1 = param_1 + param_2 - tmp2;
|
||||
local_8c.y = param_0->y - var1;
|
||||
local_98.y = param_0->y + param_1 * 0.15f;
|
||||
local_98.y = param_0->y + param_1 * 0.4f;
|
||||
local_98.x = param_0->x + param_3->x * var1;
|
||||
if (local_98.x < param_0->x) {
|
||||
local_8c.x = local_98.x;
|
||||
@@ -1458,7 +1460,7 @@ BOOL realPolygonCheck(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, dD
|
||||
}
|
||||
local_8c.z -= param_1;
|
||||
local_98.z += param_1;
|
||||
mDoLib_clipper::changeFar(mDoLib_clipper::getFovyRate() * 10000.0f);
|
||||
mDoLib_clipper::changeFar(mDoLib_clipper::getFovyRate() * 3000.0f);
|
||||
s32 clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &local_98, &local_8c);
|
||||
mDoLib_clipper::resetFar();
|
||||
if (clip) {
|
||||
@@ -1487,10 +1489,10 @@ u8 setShadowRealMtx(Mtx r26, Mtx r27, Mtx r28, cXyz* r6, cXyz* r29, f32 f30, f32
|
||||
int r31 = 200.0f * f1;
|
||||
cXyz local_64 = *r6 - *r29;
|
||||
local_64.y += f31;
|
||||
f32 tmp = 3000.0f * (50.0f - f31);
|
||||
if (tmp < 0.8f) {
|
||||
local_64.x = 0.8f;
|
||||
local_64.z = 0.8f;
|
||||
f32 tmp = 0.02f * (50.0f - f31);
|
||||
if (tmp < 0.0f) {
|
||||
local_64.x = 0.0f;
|
||||
local_64.z = 0.0f;
|
||||
} else if (tmp < 1.0f) {
|
||||
local_64.x *= tmp;
|
||||
local_64.z *= tmp;
|
||||
@@ -1534,7 +1536,7 @@ u32 dDlst_shadowReal_c::set(u32 key, s8 param_2, J3DModel* model, cXyz* param_4,
|
||||
}
|
||||
mAlpha = setShadowRealMtx(
|
||||
mViewMtx, mRenderProjMtx, mReceiverProjMtx, &lightPos, param_4, param_5, param_6, &mShadowRealPoly,
|
||||
param_2 == 0 ? 0.0f : param_6 * 0.00025f
|
||||
param_2 == 0 ? 0.0f : param_6 * 0.0007f
|
||||
);
|
||||
if (mAlpha == 0) {
|
||||
return 0;
|
||||
@@ -1673,12 +1675,12 @@ void dDlst_shadowSimple_c::set(cXyz* pos, f32 y, f32 param_3, cXyz* floorNrm, s1
|
||||
mDoMtx_stack_c::get()[0][2] = 0.0f;
|
||||
mDoMtx_stack_c::get()[0][3] = pos->x;
|
||||
|
||||
mDoMtx_stack_c::get()[1][0] = -xs * yy;
|
||||
mDoMtx_stack_c::get()[1][0] = -floorNrm->x * yy;
|
||||
mDoMtx_stack_c::get()[1][1] = floorNrm->y;
|
||||
mDoMtx_stack_c::get()[1][2] = zz;
|
||||
mDoMtx_stack_c::get()[1][3] = y;
|
||||
|
||||
mDoMtx_stack_c::get()[2][0] = xs * zz;
|
||||
mDoMtx_stack_c::get()[2][0] = floorNrm->x * zz;
|
||||
mDoMtx_stack_c::get()[2][1] = floorNrm->z;
|
||||
mDoMtx_stack_c::get()[2][2] = yy;
|
||||
mDoMtx_stack_c::get()[2][3] = pos->z;
|
||||
@@ -1737,8 +1739,7 @@ void dDlst_shadowControl_c::draw(Mtx drawMtx) {
|
||||
GXSetNumIndStages(0);
|
||||
dKy_GxFog_set();
|
||||
GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE);
|
||||
GXColor alpha = { 0x00, 0x00, 0x00, 0x20 };
|
||||
GXSetChanMatColor(GX_ALPHA0, alpha);
|
||||
GXSetChanMatColor(GX_ALPHA0, (GXColor){ 0x00, 0x00, 0x00, 0x20 });
|
||||
GXSetArray(GX_VA_POS, l_shadowVolPos, sizeof(*l_shadowVolPos));
|
||||
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
|
||||
GXSetNumTevStages(1);
|
||||
@@ -1851,8 +1852,8 @@ void dDlst_mirrorPacket::draw() {
|
||||
GXSetNumIndStages(0);
|
||||
dKy_GxFog_set();
|
||||
|
||||
static GXColor l_color = { 0xFF, 0xFF, 0xFF, 0xE0 };
|
||||
l_color.a = mAlpha;
|
||||
static GXColor l_color = { 0xFF, 0xFF, 0xFF, 0x40 };
|
||||
l_color.a = (mAlpha >> 2) & ~3;
|
||||
GXSetTevColor(GX_TEVREG0, l_color);
|
||||
|
||||
l_color.a = mDoGph_gInf_c::getBackColor().a;
|
||||
@@ -2060,17 +2061,6 @@ dDlst_list_c::dDlst_list_c() {
|
||||
mpSpotModel = NULL;
|
||||
}
|
||||
|
||||
/* 80083668-800836E0 .text J3DDrawBuffer__create__FUl */
|
||||
static J3DDrawBuffer * J3DDrawBuffer__create(u32 size) {
|
||||
J3DDrawBuffer * buffer = new J3DDrawBuffer();
|
||||
if (buffer != NULL) {
|
||||
if (buffer->allocBuffer(size) == 0)
|
||||
return buffer;
|
||||
delete buffer;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80085F6C-800861F4 .text init__12dDlst_list_cFv */
|
||||
bool dDlst_list_c::init() {
|
||||
mpOpaListSky = J3DDrawBuffer__create(0x20);
|
||||
@@ -2178,9 +2168,9 @@ void dDlst_list_c::reset() {
|
||||
void dDlst_list_c::entryZSortXluDrawList(J3DDrawBuffer* pBuffer, J3DPacket* pPacket, cXyz& pos) {
|
||||
f32 z = -J3DCalcZValue(j3dSys.getViewMtx(), pos);
|
||||
u16 idx;
|
||||
if (40.05859f < z) {
|
||||
if (40.058594f < z) {
|
||||
if (9960.941f > z) {
|
||||
idx = z / 39.05859f;
|
||||
idx = z / 39.058594f;
|
||||
} else {
|
||||
idx = 0xFF;
|
||||
}
|
||||
@@ -2208,8 +2198,10 @@ void dDlst_list_c::draw(dDlst_base_c** pList, dDlst_base_c** pEnd) {
|
||||
(*pList)->draw();
|
||||
}
|
||||
|
||||
GXColor dDlst_list_c::mWipeColor = { 0, 0, 0, 0 };
|
||||
ResTIMG* dDlst_list_c::mToonImage;
|
||||
ResTIMG* dDlst_list_c::mToonExImage;
|
||||
|
||||
GXColor dDlst_list_c::mWipeColor = { 0, 0, 0, 0 };
|
||||
bool dDlst_list_c::mWipe;
|
||||
f32 dDlst_list_c::mWipeRate = 0.0f;
|
||||
f32 dDlst_list_c::mWipeSpeed = 0.0f;
|
||||
|
||||
Reference in New Issue
Block a user