From cd9bb31b023de6a9e7982e5f175f9b5d1745ab10 Mon Sep 17 00:00:00 2001 From: Irastris Date: Tue, 14 Apr 2026 17:17:29 -0400 Subject: [PATCH] Frame interp: Howl 2 Electric Boogaloo --- include/d/d_msg_scrn_howl.h | 4 ++++ src/d/d_msg_scrn_howl.cpp | 28 +++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/include/d/d_msg_scrn_howl.h b/include/d/d_msg_scrn_howl.h index bf28682d42..5db5db0232 100644 --- a/include/d/d_msg_scrn_howl.h +++ b/include/d/d_msg_scrn_howl.h @@ -110,6 +110,10 @@ struct dMsgScrnHowl_c : public dMsgScrnBase_c { /* 0x27A0 */ f32 field_0x27a0; /* 0x27A4 */ f32 field_0x27a4; /* 0x27A8 */ f32 field_0x27a8; + +#if TARGET_PC + u8 showCursor; +#endif }; #endif /* MSG_SCRN_D_MSG_SCRN_HOWL_H */ diff --git a/src/d/d_msg_scrn_howl.cpp b/src/d/d_msg_scrn_howl.cpp index 19150520cf..03729377a5 100644 --- a/src/d/d_msg_scrn_howl.cpp +++ b/src/d/d_msg_scrn_howl.cpp @@ -311,6 +311,17 @@ void dMsgScrnHowl_c::exec() { mpButtonIcon[1]->setAlphaRate(field_0x1994 * alphaRate); mpButtonText[0]->setAlphaRate(field_0x1998 * alphaRate); mpButtonText[1]->setAlphaRate(field_0x1998 * alphaRate); + +#if TARGET_PC + showCursor = true; + if (field_0x2798 == 0) { + if (mPlotTime != field_0x212c) { + field_0x212c = mPlotTime; + } else { + showCursor = false; + } + } +#endif } void dMsgScrnHowl_c::drawSelf() { @@ -494,20 +505,23 @@ void dMsgScrnHowl_c::drawWave() { grafContext->setScissor(); #endif +#if !TARGET_PC bool bVar5 = true; if (field_0x2798 == 0) { if (mPlotTime != field_0x212c) { field_0x212c = mPlotTime; } else { -#if TARGET_PC - if (!dusk::getSettings().game.enableFrameInterpolation) -#endif - { - bVar5 = false; - } + bVar5 = false; } } - if (bVar5) { +#endif + +#if TARGET_PC + if (showCursor) +#else + if (bVar5) +#endif + { for (int iVar10 = 0; iVar10 < field_0x2128 - 1; iVar10++) { f32 local_54 = local_e0; f32 local_c8 = field_0x180[sVar14];