* 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>
The framebuffer size flows into Aurora as follows:
Into JUTVideo:
AURORA_WINDOW_RESIZED handler ->
mDoGph_gInf_c::setWindowSize ->
JUTVideo::setWindowSize
From JUTVideo -> dComIfG_play_c:
fpcCt_Handler ->
phase_4 ->
dComIfGp_setWindow
From dComIfGp_play_c -> Aurora:
mDoGph_Painter ->
drawDepth2 ->
GXSetTexCopySrc ->
GXCopyTex ->
aurora::gfx::resolve_pass (called by GXCopyTex)
The trouble is that 1) phase_4 is only called when creating a new scene/room,
and 2) even when it is called, mDoGph_Painter is executed before fpcCt_Handler
in the main loop so the new size isn't visible to aurora::gfx::resolve_pass
until one frame after it's set. This causes a crash due to the original size
being passed to CopyTextureToTexture despite the destination framebuffer now
being smaller.
As a workaround, we just cut out the whole middleman section and call
dComIfGp_setWindow immediately when we receive a resize event. This way the new
size is immediately visible to Aurora.