diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index 41826c3029..552874b552 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -23,6 +23,10 @@ #include "m_Do/m_Do_lib.h" #include +#if TARGET_PC +#include "dusk/frame_interpolation.h" +#endif + static int dTimer_createStart2D(s32 param_0, u16 param_1); int dTimer_c::_create() { @@ -1336,29 +1340,44 @@ void dDlst_TimerScrnDraw_c::draw() { f32 temp = (f32)g_drawHIO.mMiniGame.mGetInTextAlphaFrames + ((f32)g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f); +#if TARGET_PC + const u32 pending_ui_ticks = dusk::frame_interp::get_presentation_ui_advance_ticks(); +#else + const u32 pending_ui_ticks = 1u; +#endif + for (int i = 0; i < 51; i++) { - if (m_getin_info[i].bck_frame > 0.0f && m_getin_info[i].bck_frame < temp) { - f32 var_f29 = 1.0f; + for (u32 tick = 0; tick < pending_ui_ticks; tick++) { + if (!(m_getin_info[i].bck_frame > 0.0f && m_getin_info[i].bck_frame < temp)) { + break; + } if (m_getin_info[i].bck_frame < 60.0f) { m_getin_info[i].bck_frame += g_drawHIO.mMiniGame.mGetInTextAnimSpeed; if (m_getin_info[i].bck_frame > 60.0f) { m_getin_info[i].bck_frame = 60.0f; } - - playBckAnimation(m_getin_info[i].bck_frame); - } else if (m_getin_info[i].bck_frame < g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f) - { + } else if (m_getin_info[i].bck_frame < g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f) { m_getin_info[i].bck_frame++; - playBckAnimation(60.0f); } else if (m_getin_info[i].bck_frame < temp) { m_getin_info[i].bck_frame++; - playBckAnimation(60.0f); + } + } + if (m_getin_info[i].bck_frame > 0.0f && m_getin_info[i].bck_frame < temp) { + f32 var_f29 = 1.0f; + if (m_getin_info[i].bck_frame >= g_drawHIO.mMiniGame.mGetInTextWaitFrames + 60.0f && + m_getin_info[i].bck_frame < temp) { var_f29 = acc(g_drawHIO.mMiniGame.mGetInTextAlphaFrames, temp - m_getin_info[i].bck_frame, 0); } + if (m_getin_info[i].bck_frame < 60.0f) { + playBckAnimation(m_getin_info[i].bck_frame); + } else { + playBckAnimation(60.0f); + } + mpGetInParent->setAlphaRate(var_f29); if (g_drawHIO.mMiniGame.mGetInTextLocation == 1) { @@ -1388,8 +1407,7 @@ void dDlst_TimerScrnDraw_c::draw() { m_getin_info[i].pikari_frame = 18.0f - g_drawHIO.mMiniGame.mGetInPikariAnimSpeed; } - } else if (m_getin_info[i].bck_frame > g_drawHIO.mMiniGame.mStartPikariAppearFrames) - { + } else if (m_getin_info[i].bck_frame > g_drawHIO.mMiniGame.mStartPikariAppearFrames) { m_getin_info[i].pikari_frame = 18.0f - g_drawHIO.mMiniGame.mStartPikariAnimSpeed; } diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index f3672fdc8c..92c8707782 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -2034,12 +2034,11 @@ int mDoGph_Painter() { #endif #ifdef TARGET_PC - for (u32 i = 0; i < pending_ui_ticks; ++i) { + for (u32 i = 0; i < pending_ui_ticks; ++i) #endif + { dComIfGp_particle_calcMenu(); -#ifdef TARGET_PC } -#endif JFWDisplay::getManager()->setFader(mDoGph_gInf_c::getFader()); mDoGph_gInf_c::setClearColor(mDoGph_gInf_c::getBackColor()); @@ -2599,13 +2598,12 @@ int mDoGph_Painter() { #endif GXSetClipMode(GX_CLIP_ENABLE); -#ifdef TARGET_PC - for (u32 i = 0; i < pending_ui_ticks; ++i) { +#if TARGET_PC + for (u32 i = 0; i < pending_ui_ticks; ++i) #endif + { dDlst_list_c::calcWipe(); -#ifdef TARGET_PC } -#endif j3dSys.reinitGX(); ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),