From 2a65dfdb6ee01627ce79129c758bb793306438ea Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 13 Jul 2024 15:58:17 -0700 Subject: [PATCH] d_ovlp_fade4 work --- include/JSystem/JFramework/JFWDisplay.h | 4 +- include/JSystem/JUtility/JUTFader.h | 15 +- include/JSystem/JUtility/JUTXfb.h | 7 +- include/d/d_ovlp_fade4.h | 46 ++--- src/JSystem/JFramework/JFWDisplay.cpp | 11 +- src/JSystem/JUtility/JUTFader.cpp | 64 +++---- src/d/d_ovlp_fade4.cpp | 235 ++++++++++++------------ src/d/d_s_play.cpp | 10 +- src/m_Do/m_Do_graphic.cpp | 12 +- 9 files changed, 200 insertions(+), 204 deletions(-) diff --git a/include/JSystem/JFramework/JFWDisplay.h b/include/JSystem/JFramework/JFWDisplay.h index bf4a609a1..377496310 100644 --- a/include/JSystem/JFramework/JFWDisplay.h +++ b/include/JSystem/JFramework/JFWDisplay.h @@ -36,8 +36,8 @@ public: class JFWDisplay { public: enum EDrawDone { - /* 0x0 */ UNK_METHOD_0 = 0, - /* 0x1 */ UNK_METHOD_1 = 1 + /* 0x0 */ Sync = 0, + /* 0x1 */ Async = 1, }; void ctor_subroutine(const _GXRenderModeObj*, bool enableAlpha); diff --git a/include/JSystem/JUtility/JUTFader.h b/include/JSystem/JUtility/JUTFader.h index 67398c761..b2e992f31 100644 --- a/include/JSystem/JUtility/JUTFader.h +++ b/include/JSystem/JUtility/JUTFader.h @@ -7,13 +7,14 @@ class JUTFader { public: enum EStatus { - UNKSTATUS_M1 = -1, - UNKSTATUS_0 = 0, + WaitOut, + WaitIn, + FadeIn, + FadeOut, }; JUTFader(int, int, int, int, JUtility::TColor); void control(); - void setStatus(JUTFader::EStatus, int); virtual ~JUTFader() {}; virtual bool startFadeIn(int); @@ -24,12 +25,12 @@ public: void setColor(JUtility::TColor& color) { mColor.set(color); } /* 0x04 */ s32 mStatus; - /* 0x08 */ u16 field_0x8; - /* 0x0A */ u16 field_0xa; + /* 0x08 */ u16 mFadeTime; + /* 0x0A */ u16 mTimer; /* 0x0C */ JUtility::TColor mColor; /* 0x10 */ JGeometry::TBox2 mBox; - /* 0x20 */ int mEStatus; - /* 0x24 */ u32 field_0x24; + /* 0x20 */ int mDelayTimer; + /* 0x24 */ u32 mDelayStatus; }; #endif /* JUTFADER_H */ diff --git a/include/JSystem/JUtility/JUTXfb.h b/include/JSystem/JUtility/JUTXfb.h index 37c9e71b6..4ca1f567d 100644 --- a/include/JSystem/JUtility/JUTXfb.h +++ b/include/JSystem/JUtility/JUTXfb.h @@ -9,10 +9,9 @@ class JKRHeap; class JUTXfb { public: enum EXfbNumber { // TODO: placeholder - UNK_0 = 0, - UNK_1 = 1, - UNK_2 = 2, - UNK_3 = 3, + Single = 1, + Double = 2, + Triple = 3, }; void clearIndex(); diff --git a/include/d/d_ovlp_fade4.h b/include/d/d_ovlp_fade4.h index 950564c73..ca482e887 100644 --- a/include/d/d_ovlp_fade4.h +++ b/include/d/d_ovlp_fade4.h @@ -54,16 +54,16 @@ public: void init(_GXColor); void draw(); - /* 0x004 */ f32 field_0x4; - /* 0x008 */ u8 field_0x8; - /* 0x00C */ dDlst_snapShot2_c field_0xc; - /* 0x018 */ dDlst_2Dt_Sp_c field_0x18; - /* 0x064 */ dDlst_snapShot2_c field_0x64; - /* 0x070 */ dDlst_2Dt_Sp_c field_0x70; - /* 0x0BC */ dDlst_snapShot2_c field_0xbc; - /* 0x0C8 */ dDlst_2Dt_Sp_c field_0xc8; - /* 0x114 */ u16 field_0x114; - /* 0x116 */ u16 field_0x116; + /* 0x004 */ f32 timer; + /* 0x008 */ bool first; + /* 0x00C */ dDlst_snapShot2_c snap_dlst; + /* 0x018 */ dDlst_2Dt_Sp_c redraw_dlst; + /* 0x064 */ dDlst_snapShot2_c save_dlst; + /* 0x070 */ dDlst_2Dt_Sp_c blur0_dlst; + /* 0x0BC */ dDlst_snapShot2_c blur0Snap_dlst; + /* 0x0C8 */ dDlst_2Dt_Sp_c composite_dlst; + /* 0x114 */ u16 curWidth; + /* 0x116 */ u16 curHeight; }; class dOvlpFd4_c : public overlap_task_class { @@ -84,22 +84,22 @@ public: /* 0x0CC */ ExecuteFunc mExecuteFunc; /* 0x0D8 */ DrawFunc mDrawFunc; - /* 0x0E4 */ dDlst_snapShot2_c field_0xe4; - /* 0x0F0 */ dDlst_snapShot2_c field_0xf0; - /* 0x0FC */ dDlst_2Dt_Sp_c field_0xfc; - /* 0x148 */ dDlst_2Dt_Sp_c field_0x148; - /* 0x194 */ dDlst_2DtEff1_c tEff1_dlst; - /* 0x2AC */ u8 field_0x2ac; - /* 0x2AD */ u8 field_0x2ad; - /* 0x2AE */ s8 field_0x2ae; - /* 0x2B0 */ s16 field_0x2b0; - /* 0x2B4 */ f32 field_0x2b4; + /* 0x0E4 */ dDlst_snapShot2_c fadeOutBlur0_dlst; + /* 0x0F0 */ dDlst_snapShot2_c fadeOutSnap_dlst; + /* 0x0FC */ dDlst_2Dt_Sp_c fadeOutComposite_dlst; + /* 0x148 */ dDlst_2Dt_Sp_c fadeOutBlur1_dlst; + /* 0x194 */ dDlst_2DtEff1_c fadeIn_dlst; + /* 0x2AC */ u8 first; + /* 0x2AD */ u8 fadeOutStatus; + /* 0x2AE */ s8 totalTime; + /* 0x2B0 */ s16 timer; + /* 0x2B4 */ f32 delayPercent; /* 0x2B8 */ u8 field_0x2b8[0x2BC - 0x2B8]; /* 0x2BC */ f32 field_0x2bc; - /* 0x2C0 */ u8 field_0x2c0; - /* 0x2C1 */ s8 field_0x2c1; + /* 0x2C0 */ u8 sizeStep; + /* 0x2C1 */ s8 startTime; /* 0x2C2 */ u8 field_0x2c2[0x2C8 - 0x2C2]; - /* 0x2C8 */ f32 field_0x2c8; + /* 0x2C8 */ f32 timerStep; /* 0x2CC */ u8 field_0x2cc; }; diff --git a/src/JSystem/JFramework/JFWDisplay.cpp b/src/JSystem/JFramework/JFWDisplay.cpp index f00ca4c9e..e6cee0f0d 100644 --- a/src/JSystem/JFramework/JFWDisplay.cpp +++ b/src/JSystem/JFramework/JFWDisplay.cpp @@ -54,7 +54,7 @@ void JFWDisplay::ctor_subroutine(const _GXRenderModeObj* mode, bool enableAlpha) field_0x38 = 0; field_0x3C = 0; field_0x3E = 0; - mDrawDoneMethod = UNK_METHOD_0; + mDrawDoneMethod = Sync; clearEfb_init(); JUTProcBar::create(); JUTProcBar::clear(); @@ -141,15 +141,14 @@ void JFWDisplay::exchangeXfb_double() { if(0 <= xfbMng->getDrawingXfbIndex()) { prepareCopyDisp(); GXCopyDisp(xfbMng->getDrawingXfb(), (GXBool)1); - if(mDrawDoneMethod == 0) { + if (mDrawDoneMethod == Sync) { GXDrawDone(); JUTVideo::dummyNoDrawWait(); - } - else { + } else { JUTVideo::drawDoneStart(); } - if(mDrawDoneMethod == 0) { + if (mDrawDoneMethod == Sync) { callDirectDraw(); } } @@ -237,7 +236,7 @@ void JFWDisplay::endGX() { ortho.setPort(); JUTProcBar::getManager()->draw(); - if (mDrawDoneMethod != UNK_METHOD_0 || JUTXfb::getManager()->getBufferNum() == 1) { + if (mDrawDoneMethod != Sync || JUTXfb::getManager()->getBufferNum() == 1) { JUTAssertion::flushMessage_dbPrint(); } GXFlush(); diff --git a/src/JSystem/JUtility/JUTFader.cpp b/src/JSystem/JUtility/JUTFader.cpp index ff3d4b261..eb5186bed 100644 --- a/src/JSystem/JUtility/JUTFader.cpp +++ b/src/JSystem/JUtility/JUTFader.cpp @@ -10,41 +10,35 @@ /* 802C8544-802C85F0 .text __ct__8JUTFaderFiiiiQ28JUtility6TColor */ JUTFader::JUTFader(int x, int y, int width, int height, JUtility::TColor pColor) : mColor(pColor), mBox(x, y, x + width, y + height) { mStatus = 0; - field_0x8 = 0; - field_0xa = 0; - field_0x24 = 0; - mEStatus = UNKSTATUS_M1; + mFadeTime = 0; + mTimer = 0; + mDelayStatus = 0; + mDelayTimer = -1; } /* 802C85F0-802C86F0 .text control__8JUTFaderFv */ void JUTFader::control() { - if (0 <= mEStatus && mEStatus-- == 0) { - mStatus = field_0x24; + if (0 <= mDelayTimer && mDelayTimer-- == 0) { + mStatus = mDelayStatus; } - if (mStatus == 1) { + if (mStatus == WaitIn) { return; } switch (mStatus) { - case 0: + case WaitOut: mColor.a = 0xFF; break; - case 2: - mColor.a = 0xFF - ((++field_0xa * 0xFF) / field_0x8); - - if (field_0xa >= field_0x8) { - mStatus = 1; - } - + case FadeIn: + mColor.a = 0xFF - ((++mTimer * 0xFF) / mFadeTime); + if (mTimer >= mFadeTime) + mStatus = WaitIn; break; - case 3: - mColor.a = ((++field_0xa * 0xFF) / field_0x8); - - if (field_0xa >= field_0x8) { - mStatus = 0; - } - + case FadeOut: + mColor.a = ((++mTimer * 0xFF) / mFadeTime); + if (mTimer >= mFadeTime) + mStatus = WaitOut; break; } draw(); @@ -56,32 +50,32 @@ void JUTFader::draw() { return; } - J2DOrthoGraph orthograph; - orthograph.setColor(mColor); - orthograph.fillBox(mBox); + J2DOrthoGraph graf; + graf.setColor(mColor); + graf.fillBox(mBox); } /* 802C8780-802C87B0 .text startFadeIn__8JUTFaderFi */ -bool JUTFader::startFadeIn(int param_0) { - bool statusCheck = mStatus == 0; +bool JUTFader::startFadeIn(int fadeTime) { + bool statusCheck = mStatus == WaitOut; if (statusCheck) { - mStatus = 2; - field_0xa = 0; - field_0x8 = param_0; + mStatus = FadeIn; + mTimer = 0; + mFadeTime = fadeTime; } return statusCheck; } /* 802C87B0-802C87E4 .text startFadeOut__8JUTFaderFi */ -bool JUTFader::startFadeOut(int param_0) { - bool statusCheck = mStatus == 1; +bool JUTFader::startFadeOut(int fadeTime) { + bool statusCheck = mStatus == WaitIn; if (statusCheck) { - mStatus = 3; - field_0xa = 0; - field_0x8 = param_0; + mStatus = FadeOut; + mTimer = 0; + mFadeTime = fadeTime; } return statusCheck; diff --git a/src/d/d_ovlp_fade4.cpp b/src/d/d_ovlp_fade4.cpp index ece645e72..daed71516 100644 --- a/src/d/d_ovlp_fade4.cpp +++ b/src/d/d_ovlp_fade4.cpp @@ -13,62 +13,62 @@ /* 80224390-80224484 .text init__15dDlst_2DtEff1_cF8_GXColor */ void dDlst_2DtEff1_c::init(GXColor color) { /* Nonmatching */ - field_0xc.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); - field_0x18.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); - field_0x64.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); - field_0x70.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); - field_0xbc.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); - field_0xc8.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, color); + snap_dlst.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); + redraw_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); + save_dlst.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); + blur0_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); + blur0Snap_dlst.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); + composite_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, color); } /* 80224484-802246CC .text draw__15dDlst_2DtEff1_cFv */ void dDlst_2DtEff1_c::draw() { - field_0x114 = 320 + (s16)(field_0x4 * 8.0f) * -16; - field_0x116 = 240 + (s16)(field_0x4 * 8.0f) * -12; - if (field_0x8) { - field_0xc.draw(); - field_0x18.draw(); - field_0x64.draw(); - field_0x70.draw(); - field_0xbc.draw(); - field_0xc8.draw(); - field_0x8 = false; + curWidth = 320 + (s16)(timer * 8.0f) * -16; + curHeight = 240 + (s16)(timer * 8.0f) * -12; + if (first) { + snap_dlst.draw(); + redraw_dlst.draw(); + save_dlst.draw(); + blur0_dlst.draw(); + blur0Snap_dlst.draw(); + composite_dlst.draw(); + first = false; } else { if (dComIfGp_getWindowNum() == 0) { s32 w = 320; s32 h = 240; - field_0x70.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); - field_0xc8.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); + blur0_dlst.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); + composite_dlst.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); while (true) { s32 dstW = w - 16; s32 dstH = h - 12; - if (dstW < field_0x114 || dstH < field_0x116) + if (dstW < curWidth || dstH < curHeight) break; - field_0x70.setImageWidth(w / 2); - field_0x70.setImageHeight(h / 2); - field_0x70.setWidth(dstW); - field_0x70.setHeight(dstH); - field_0x70.draw(); + blur0_dlst.setImageWidth(w / 2); + blur0_dlst.setImageHeight(h / 2); + blur0_dlst.setWidth(dstW); + blur0_dlst.setHeight(dstH); + blur0_dlst.draw(); - field_0xbc.setWd(dstW); - field_0xbc.setHt(dstH); - field_0xbc.draw(); + blur0Snap_dlst.setWd(dstW); + blur0Snap_dlst.setHt(dstH); + blur0Snap_dlst.draw(); w = dstW; h = dstH; - field_0x70.setImagePtr(mDoGph_gInf_c::getFrameBufferTex()); - field_0xc8.setImagePtr(mDoGph_gInf_c::getFrameBufferTex()); + blur0_dlst.setImagePtr(mDoGph_gInf_c::getFrameBufferTex()); + composite_dlst.setImagePtr(mDoGph_gInf_c::getFrameBufferTex()); } - field_0xc8.setImageWidth(w / 2); - field_0xc8.setImageHeight(h / 2); - field_0xc8.setPos(0.0f, 0.0f); - field_0xc8.draw(); + composite_dlst.setImageWidth(w / 2); + composite_dlst.setImageHeight(h / 2); + composite_dlst.setPos(0.0f, 0.0f); + composite_dlst.draw(); } } } @@ -170,11 +170,10 @@ void dDlst_2Dt_Sp_c::draw() { /* 80224CC4-80224DBC .text init__14dDlst_2Dt_Sp_cFP7ResTIMGffff8_GXColor */ void dDlst_2Dt_Sp_c::init(ResTIMG* timg, f32 x, f32 y, f32 w, f32 h, GXColor color) { - /* Nonmatching */ setImageWidth(timg->width); setImageHeight(timg->height); mTimg = timg; - setImagePtr((u8*)timg + timg->imageOffset); + setImagePtr((u8*)mTimg + mTimg->imageOffset); dDlst_setResTimgObj(mTimg, &mTexObj, mImagePtr, mImageWidth, mImageHeight); setPos(x, y); setWidth(w); @@ -185,100 +184,102 @@ void dDlst_2Dt_Sp_c::init(ResTIMG* timg, f32 x, f32 y, f32 w, f32 h, GXColor col /* 80224DBC-80224F98 .text __ct__10dOvlpFd4_cFv */ dOvlpFd4_c::dOvlpFd4_c() { - field_0x2ac = 1; + first = true; setExecute(&dOvlpFd4_c::execFirstSnap); setDraw(&dOvlpFd4_c::drawFadeOut); if (base.mProcName == PROC_OVERLAP4) { - field_0xfc.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_saftyWhiteColor); + fadeOutComposite_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_saftyWhiteColor); } else { - field_0xfc.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, (GXColor){ 0x00, 0x00, 0x00, 0x00 }); + fadeOutComposite_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, (GXColor){ 0x00, 0x00, 0x00, 0x00 }); } - field_0x148.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); - field_0xe4.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); - field_0xf0.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); - tEff1_dlst.init(g_saftyWhiteColor); + fadeOutBlur1_dlst.init(mDoGph_gInf_c::getFrameBufferTimg(), 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); + fadeOutBlur0_dlst.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); + fadeOutSnap_dlst.init(mDoGph_gInf_c::getFrameBufferTex(), 640, 480); + fadeIn_dlst.init(g_saftyWhiteColor); dComIfGp_2dShowOff(); - field_0x2b0 = 2; - field_0x2ae = 39; - field_0x2b4 = 0.0f; - field_0x2ad = 0; + timer = 2; + totalTime = 39; + delayPercent = 0.0f; + fadeOutStatus = 0; } /* 80224F98-80225060 .text drawFadeOut__10dOvlpFd4_cFv */ void dOvlpFd4_c::drawFadeOut() { - if (field_0x2ac) { - dComIfGd_set2DXlu(&field_0xf0); - field_0x2ac = 0; - } else if (field_0x2ad == 1) { - dComIfGd_set2DXlu(&field_0x148); - dComIfGd_set2DXlu(&field_0xe4); + if (first) { + dComIfGd_set2DXlu(&fadeOutSnap_dlst); + first = false; + } else if (fadeOutStatus == 1) { + dComIfGd_set2DXlu(&fadeOutBlur1_dlst); + dComIfGd_set2DXlu(&fadeOutBlur0_dlst); } - dComIfGd_set2DXlu(&field_0xfc); + dComIfGd_set2DXlu(&fadeOutComposite_dlst); } /* 80225060-8022509C .text drawFadeIn__10dOvlpFd4_cFv */ void dOvlpFd4_c::drawFadeIn() { - dComIfGd_set2DXlu(&tEff1_dlst); + dComIfGd_set2DXlu(&fadeIn_dlst); } /* 8022509C-802251FC .text execFirstSnap__10dOvlpFd4_cFv */ void dOvlpFd4_c::execFirstSnap() { - /* Nonmatching */ - if (!field_0x2ac && cLib_calcTimer(&field_0x2b0) == 0) { + if (!first && cLib_calcTimer(&timer) == 0) { setExecute(&dOvlpFd4_c::execFadeOut); fopOvlpM_Done(this); dComIfGp_setWindowNum(0); - field_0x2ad = true; - if (field_0x2ae > 79) { - field_0x2bc = (f32)(field_0x2ae - 79) / 79.0f; - field_0x2c0 = 8; + fadeOutStatus = 1; + + if (totalTime > 79) { + // this path is never used + field_0x2bc = (f32)(totalTime - 79) / 79.0f; + sizeStep = 8; } else { + f32 x = (624.0f / totalTime); field_0x2bc = 0.0f; - field_0x2c0 = (s32)((624.0f / field_0x2ae) * 0.0625f) * 16; + sizeStep = (s32)(x / 16) * 16; } - field_0x2b0 = field_0x2ae; - field_0x2c1 = field_0x2ae - (field_0x2ae * field_0x2b4); + timer = totalTime; + startTime = totalTime - (s32)(totalTime * delayPercent); } } /* 802251FC-802253C4 .text execFadeOut__10dOvlpFd4_cFv */ void dOvlpFd4_c::execFadeOut() { dComIfGp_setWindowNum(0); - if (cLib_calcTimer(&field_0x2b0) == 0 && (field_0xe4.mWidth <= field_0x2c0 || field_0xe4.mHeight <= field_0x2c0) && fopOvlpM_IsOutReq(this)) { + if (cLib_calcTimer(&timer) == 0 && (fadeOutBlur0_dlst.mWidth <= sizeStep || fadeOutBlur0_dlst.mHeight <= sizeStep) && fopOvlpM_IsOutReq(this)) { fopOvlpM_SceneIsStart(); setExecute(&dOvlpFd4_c::execNextSnap); - field_0x2ad = 0; - field_0x2b0 = 200; + fadeOutStatus = 0; + timer = 200; dComIfGp_2dShowOff(); } else { - u16 wd = field_0xe4.getWd(); - u16 ht = field_0xe4.getHt(); - field_0x148.setImageWidth(wd / 2); - field_0x148.setImageHeight(ht / 2); + u16 wd = fadeOutBlur0_dlst.getWd(); + u16 ht = fadeOutBlur0_dlst.getHt(); + fadeOutBlur1_dlst.setImageWidth(wd / 2); + fadeOutBlur1_dlst.setImageHeight(ht / 2); - if (wd > field_0x2c0 && ht > field_0x2c0) { - wd -= field_0x2c0; - ht -= field_0x2c0; + if (wd > sizeStep && ht > sizeStep) { + wd -= sizeStep; + ht -= sizeStep; } f32 percent; - if (field_0x2b0 > field_0x2c1) { + if (timer > startTime) { percent = 0.0f; - } else if (wd > field_0x2c0 || ht > field_0x2c0) { - percent = 1.0f - ((f32)field_0x2b0 / field_0x2c1); + } else if (wd > sizeStep || ht > sizeStep) { + percent = 1.0f - ((f32)timer / startTime); percent *= percent; } else { percent = 1.0f; } - field_0xfc.setPer(percent); - field_0x148.setWidth(wd); - field_0x148.setHeight(ht); - field_0xe4.setWd(wd); - field_0xe4.setHt(ht); - field_0xfc.setImageWidth(wd / 2); - field_0xfc.setImageHeight(ht / 2); + fadeOutComposite_dlst.setPer(percent); + fadeOutBlur1_dlst.setWidth(wd); + fadeOutBlur1_dlst.setHeight(ht); + fadeOutBlur0_dlst.setWd(wd); + fadeOutBlur0_dlst.setHt(ht); + fadeOutComposite_dlst.setImageWidth(wd / 2); + fadeOutComposite_dlst.setImageHeight(ht / 2); } } @@ -286,37 +287,39 @@ void dOvlpFd4_c::execFadeOut() { void dOvlpFd4_c::execNextSnap() { setExecute(execFadeIn); setDraw(drawFadeIn); - tEff1_dlst.field_0x8 = true; + fadeIn_dlst.first = true; dComIfGp_setWindowNum(1); - tEff1_dlst.field_0xc.setWd(640); - tEff1_dlst.field_0xc.setHt(480); - tEff1_dlst.field_0x18.setImageWidth(320); - tEff1_dlst.field_0x18.setImageHeight(240); - tEff1_dlst.field_0x18.setWidth(320); - tEff1_dlst.field_0x18.setHeight(240); + fadeIn_dlst.snap_dlst.setWd(640); + fadeIn_dlst.snap_dlst.setHt(480); + fadeIn_dlst.redraw_dlst.setImageWidth(320); + fadeIn_dlst.redraw_dlst.setImageHeight(240); + fadeIn_dlst.redraw_dlst.setWidth(320); + fadeIn_dlst.redraw_dlst.setHeight(240); - tEff1_dlst.field_0x64.init(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj()), 320, 240); - tEff1_dlst.field_0x70.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); - tEff1_dlst.field_0x70.setImageWidth(160); - tEff1_dlst.field_0x70.setImageHeight(120); - tEff1_dlst.field_0x70.setWidth(16.0f); - tEff1_dlst.field_0x70.setHeight(16.0f); - tEff1_dlst.field_0xbc.setWd(16); - tEff1_dlst.field_0xbc.setHt(16); - tEff1_dlst.field_0xc8.setPer(1.0f); - tEff1_dlst.field_0xc8.setImageWidth(8); - tEff1_dlst.field_0xc8.setImageHeight(8); - tEff1_dlst.field_0xc8.setWidth(640.0f); - tEff1_dlst.field_0xc8.setHeight(480.0f); - field_0x2b0 = field_0x2ae; - tEff1_dlst.field_0x4 = 1.0f; - field_0x2c8 = -1.0f / field_0x2b0; + // saves blurred frame to getZbufferTexObj after the game is finished rendering... + fadeIn_dlst.save_dlst.init(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj()), 320, 240); + + fadeIn_dlst.blur0_dlst.setImagePtr(GXGetTexObjData(mDoGph_gInf_c::getZbufferTexObj())); + fadeIn_dlst.blur0_dlst.setImageWidth(160); + fadeIn_dlst.blur0_dlst.setImageHeight(120); + fadeIn_dlst.blur0_dlst.setWidth(16.0f); + fadeIn_dlst.blur0_dlst.setHeight(16.0f); + fadeIn_dlst.blur0Snap_dlst.setWd(16); + fadeIn_dlst.blur0Snap_dlst.setHt(16); + fadeIn_dlst.composite_dlst.setPer(1.0f); + fadeIn_dlst.composite_dlst.setImageWidth(8); + fadeIn_dlst.composite_dlst.setImageHeight(8); + fadeIn_dlst.composite_dlst.setWidth(640.0f); + fadeIn_dlst.composite_dlst.setHeight(480.0f); + timer = totalTime; + fadeIn_dlst.timer = 1.0f; + timerStep = -1.0f / timer; } /* 80225528-802255F4 .text execFadeIn__10dOvlpFd4_cFv */ void dOvlpFd4_c::execFadeIn() { - if (cLib_calcTimer(&field_0x2b0) == 0 && tEff1_dlst.field_0x4 <= 0.0f) { + if (cLib_calcTimer(&timer) == 0 && fadeIn_dlst.timer <= 0.0f) { if (!field_0x2cc) { fopOvlpM_SceneIsStart(); field_0x2cc = true; @@ -328,15 +331,15 @@ void dOvlpFd4_c::execFadeIn() { } else { dComIfGp_setWindowNum(0); fopOvlpM_SceneIsStop(); - tEff1_dlst.field_0xc8.setPer(tEff1_dlst.field_0x4 * tEff1_dlst.field_0x4); - tEff1_dlst.field_0x4 += field_0x2c8; - if (tEff1_dlst.field_0x4 < 0.0f) - tEff1_dlst.field_0x4 = 0.0f; + fadeIn_dlst.composite_dlst.setPer(fadeIn_dlst.timer * fadeIn_dlst.timer); + fadeIn_dlst.timer += timerStep; + if (fadeIn_dlst.timer < 0.0f) + fadeIn_dlst.timer = 0.0f; } } /* 802255F4-80225658 .text dOvlpFd4_Draw__FP10dOvlpFd4_c */ -static BOOL dOvlpFd4_Draw(dOvlpFd4_c* i_this) { +BOOL dOvlpFd4_Draw(dOvlpFd4_c* i_this) { dOvlpFd4_c::DrawFunc func = i_this->mDrawFunc; if (func != NULL) { (i_this->*i_this->mDrawFunc)(); @@ -345,23 +348,23 @@ static BOOL dOvlpFd4_Draw(dOvlpFd4_c* i_this) { } /* 80225658-80225684 .text dOvlpFd4_Execute__FP10dOvlpFd4_c */ -static BOOL dOvlpFd4_Execute(dOvlpFd4_c* i_this) { +BOOL dOvlpFd4_Execute(dOvlpFd4_c* i_this) { (i_this->*i_this->mExecuteFunc)(); return TRUE; } /* 80225684-8022568C .text dOvlpFd4_IsDelete__FP10dOvlpFd4_c */ -static BOOL dOvlpFd4_IsDelete(dOvlpFd4_c*) { +BOOL dOvlpFd4_IsDelete(dOvlpFd4_c*) { return TRUE; } /* 8022568C-80225694 .text dOvlpFd4_Delete__FP10dOvlpFd4_c */ -static BOOL dOvlpFd4_Delete(dOvlpFd4_c*) { +BOOL dOvlpFd4_Delete(dOvlpFd4_c*) { return TRUE; } /* 80225694-802256C0 .text dOvlpFd4_Create__FPv */ -static s32 dOvlpFd4_Create(void* i_this) { +s32 dOvlpFd4_Create(void* i_this) { new (i_this) dOvlpFd4_c(); return cPhs_COMPLEATE_e; } diff --git a/src/d/d_s_play.cpp b/src/d/d_s_play.cpp index e941cffc7..17684ccc2 100644 --- a/src/d/d_s_play.cpp +++ b/src/d/d_s_play.cpp @@ -316,17 +316,17 @@ static int dScnPly_Draw(dScnPly_ply_c* i_this) { fopScnM_ChangeReq(i_this, PROC_PLAY_SCENE, l_wipeType[dComIfGp_getNextStageWipe()], 5); int hour = dKy_getdaytime_hour(); - BOOL useWhiteColor = FALSE; + BOOL isNight = FALSE; if (dKy_checkEventNightStop()) { - useWhiteColor = TRUE; + isNight = TRUE; } else { - useWhiteColor = (hour >= 6 && hour < 18) ? FALSE : TRUE; + isNight = (hour >= 6 && hour < 18) ? FALSE : TRUE; } if (dComIfGp_getNextStageWipe() == 1 || dComIfGp_getNextStageWipe() == 2 || dComIfGp_getNextStageWipe() == 7 || - ((dComIfGp_getNextStageWipe() == 8 || dComIfGp_getNextStageWipe() == 10) && useWhiteColor) || - ((dComIfGp_getNextStageWipe() == 9 || dComIfGp_getNextStageWipe() == 11) && !useWhiteColor)) + ((dComIfGp_getNextStageWipe() == 8 || dComIfGp_getNextStageWipe() == 10) && isNight) || + ((dComIfGp_getNextStageWipe() == 9 || dComIfGp_getNextStageWipe() == 11) && !isNight)) { mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_saftyWhiteColor); // Fakematch? } else { diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 7e5678678..a7c1d1182 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -71,8 +71,8 @@ GXColor mDoGph_gInf_c::mFadeColor = {}; /* 80007BBC-80007DDC .text create__13mDoGph_gInf_cFv */ void mDoGph_gInf_c::create() { - JFWDisplay::createManager(JKRHeap::getCurrentHeap(), JUTXfb::UNK_2, true); - JFWDisplay::getManager()->setDrawDoneMethod(JFWDisplay::UNK_METHOD_1); + JFWDisplay::createManager(JKRHeap::getCurrentHeap(), JUTXfb::Double, true); + JFWDisplay::getManager()->setDrawDoneMethod(JFWDisplay::Async); JUTFader* faderPtr = new JUTFader(0, 0, JUTVideo::getManager()->getRenderMode()->fb_width, JUTVideo::getManager()->getRenderMode()->efb_height, JUtility::TColor(0, 0, 0, 0)); JUT_ASSERT(0x1a0, faderPtr != NULL); setFader(faderPtr); @@ -82,19 +82,19 @@ void mDoGph_gInf_c::create() { JUTDbPrint::getManager()->setVisible(false); createHeap(); - u32 framebufferSize = GXGetTexBufferSize(0x140, 0xf0, GX_TF_RGBA8, GX_FALSE, GX_FALSE) + 0x20; + u32 framebufferSize = GXGetTexBufferSize(320, 240, GX_TF_RGBA8, GX_FALSE, GX_FALSE) + 0x20; mFrameBufferTimg = (ResTIMG*) JKRAllocFromHeap(NULL, framebufferSize, 0x20); mFrameBufferTex = (void*)(&mFrameBufferTimg[1]); cLib_memSet(mFrameBufferTimg, 0, framebufferSize); mFrameBufferTimg->format = GX_TF_RGBA8; mFrameBufferTimg->alphaEnabled = false; - mFrameBufferTimg->width = 0x140; - mFrameBufferTimg->height = 0xf0; + mFrameBufferTimg->width = 320; + mFrameBufferTimg->height = 240; mFrameBufferTimg->minFilter = GX_LINEAR; mFrameBufferTimg->magFilter = GX_LINEAR; mFrameBufferTimg->imageOffset = sizeof(ResTIMG); - u32 zbufferSize = GXGetTexBufferSize(0x140, 0xf0, GX_TF_IA8, GX_FALSE, GX_FALSE); + u32 zbufferSize = GXGetTexBufferSize(320, 240, GX_TF_IA8, GX_FALSE, GX_FALSE); mZbufferTex = JKRAllocFromHeap(NULL, zbufferSize, 0x20); cLib_memSet(mZbufferTex, 0, zbufferSize);