Implement unlocked framerates via interpolation (#315)

* Disable waitForTick and waitBlanking

* Initial frame interpolation implementation

* Initial batch of speed fixes

* Fix Iron Boots

* Strip dead code once used for debugging

* Interpolate shadows

* Revert overzealous/redundant lookups

* Fix JUTFader

* Fix field map cursor

* Fix various particle effects

* Fix Midna when riding Wolf Link

* Fix title logo

* Title Logo 2: Electric Boogaloo

* Fixed grass and flowers

* "Unlock Framerate" config option (WIP)

* Wrap more things in TARGET_PC

* Finish wrapping things in TARGET_PC

* Missed one

* Disable dComIfGd_drawXluListInvisible when interpolating

---------

Co-authored-by: Luke Street <luke@street.dev>
This commit is contained in:
Irastris
2026-04-11 03:06:25 -04:00
committed by GitHub
parent 8c07d8bb8e
commit fb9178cac9
33 changed files with 1039 additions and 147 deletions
+17 -1
View File
@@ -14,6 +14,7 @@
#include "d/actor/d_a_midna.h"
#include "d/d_model.h"
#include "d/d_tresure.h"
#include "dusk/frame_interpolation.h"
#include "dusk/logging.h"
#include "f_op/f_op_camera_mng.h"
#include "f_op/f_op_draw_tag.h"
@@ -722,6 +723,17 @@ void fapGm_After() {
fopCamM_Management();
}
#ifdef TARGET_PC
static void fapGm_Before() {
dusk::frame_interp::begin_record();
}
static void fapGm_AfterRecord() {
dusk::frame_interp::end_record();
fapGm_After();
}
#endif
void fapGm_Execute() {
ZoneScoped;
static u32 sExecCount = 0;
@@ -752,7 +764,11 @@ void fapGm_Execute() {
}
#endif
fpcM_Management(NULL, fapGm_After);
#ifdef TARGET_PC
fpcM_Management(fapGm_Before, fapGm_AfterRecord);
#else
fpcM_ManagementFunc(NULL, fapGm_After);
#endif
cCt_Counter(0);
}