From 5f6ef2a21427fc32c7b12818bec3587f99e77701 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 13 Jul 2024 16:57:20 -0700 Subject: [PATCH] c_rnd --- include/SSystem/SComponent/c_rnd.h | 8 ++------ src/d/d_drawlist.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/include/SSystem/SComponent/c_rnd.h b/include/SSystem/SComponent/c_rnd.h index 01a735142..dba7a0d99 100644 --- a/include/SSystem/SComponent/c_rnd.h +++ b/include/SSystem/SComponent/c_rnd.h @@ -8,12 +8,8 @@ struct cM_rnd_c { /* 0x4 */ int m4; /* 0x8 */ int m8; - void init(int a, int b, int c) { - m0 = a; - m4 = b; - m8 = c; - } - int get(); + void init(int a, int b, int c); + f32 get(); f32 getF(f32); f32 getFX(f32); f32 getValue(f32 min, f32 max); diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index c102c4d73..f5bb5b9ec 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -690,6 +690,31 @@ void dDlst_2D_c::draw() { mPicture.draw(mX, mY, false, false, false); } +void cM_rnd_c::init(int a, int b, int c) { + m0 = a; + m4 = b; + m8 = c; +} + +f32 cM_rnd_c::get() { + m0 = (m0 * 171) % 30269; + m4 = (m4 * 172) % 30307; + m8 = (m8 * 170) % 30323; + return fabsf(fmod((m0 / 30269.0f) + (m4 / 30307.0f) + (m8 / 30323.0f), 1.0f)); +} + +f32 cM_rnd_c::getF(f32 m) { + return get() * m; +} + +f32 cM_rnd_c::getFX(f32 m) { + return m * (get() - 0.5f) * 2.0f; +} + +f32 cM_rnd_c::getValue(f32 min, f32 range) { + return min + getF(range); +} + /* 80082424-80082794 .text draw__18dDlst_effectLine_cFv */ void dDlst_effectLine_c::draw() { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); @@ -1518,7 +1543,7 @@ int psdRealCallBack(cBgS_ShdwDraw* shdw, cBgD_Vtx_t* pVtx, int v0, int v1, int v const cXyz* normal = tri->GetNP(); if (shdwDrawPoly->getLightVec()->inprod(*normal) < -0.2f) { cXyz* center = shdwDrawPoly->getCenter(); - if (normal->x * center->x + normal->y * center->y + normal->z * center->z + tri->GetD() > -90.f) { + if (normal->x * center->x + normal->y * center->y + normal->z * center->z + tri->GetD() > -50.f) { const cXyz* min = shdwDrawPoly->GetBndP()->GetMinP(); const cXyz* max = shdwDrawPoly->GetBndP()->GetMaxP(); cBgD_Vtx_t* vert1 = pVtx + v0;