Frame interp: Refactor JUTFader

Now works regardless of interpolation being on/off
This commit is contained in:
Irastris
2026-04-12 13:56:00 -04:00
parent 1f77e2e5e8
commit d481a23c49
4 changed files with 19 additions and 16 deletions
@@ -16,6 +16,7 @@ public:
};
JUTFader(int, int, int, int, JUtility::TColor);
void advance();
void control();
void setStatus(JUTFader::EStatus, int);
+10 -13
View File
@@ -224,20 +224,17 @@ void JFWDisplay::endGX() {
if (mFader != NULL) {
ortho.setPort();
#ifdef TARGET_PC
if (dusk::getSettings().game.enableFrameInterpolation) {
u32 advance_count = 1;
if (s_faderSimSteps >= 0) {
advance_count = static_cast<u32>(s_faderSimSteps);
s_faderSimSteps = -1;
}
for (u32 i = 0; i < advance_count; i++) {
mFader->control();
}
if (mFader->getStatus() != 1) {
mFader->draw();
}
u32 advance_count = 1;
if (dusk::getSettings().game.enableFrameInterpolation && s_faderSimSteps >= 0) {
advance_count = static_cast<u32>(s_faderSimSteps);
s_faderSimSteps = -1;
} else {
mFader->control();
s_faderSimSteps = -1;
}
for (u32 i = 0; i < advance_count; i++) {
mFader->advance();
}
if (mFader->getStatus() != 1) {
mFader->draw();
}
#else
+5 -2
View File
@@ -17,7 +17,7 @@ JUTFader::JUTFader(int x, int y, int width, int height, JUtility::TColor pColor)
mEStatus = UNKSTATUS_M1;
}
void JUTFader::control() {
void JUTFader::advance() {
if (0 <= mEStatus && mEStatus-- == 0) {
mStatus = field_0x24;
}
@@ -59,9 +59,12 @@ void JUTFader::control() {
break;
}
}
void JUTFader::control() {
advance();
#ifndef TARGET_PC
// Frame interpolation: draw call moved to JFWDisplay
// FRAME INTERP NOTE: Draw is called by JFWDisplay when interpolation is active
draw();
#endif
}
+3 -1
View File
@@ -2419,7 +2419,9 @@ int mDoGph_Painter() {
#if TARGET_PC
dusk::g_imguiConsole.PostDraw();
JFWDisplay::getManager()->setFaderSimSteps(pending_ui_ticks);
if (dusk::getSettings().game.enableFrameInterpolation) {
JFWDisplay::getManager()->setFaderSimSteps(pending_ui_ticks);
}
#endif
mDoGph_gInf_c::endRender();