From 6708aab4a9b7c3ddbdaa816a9d7974b1f5c8554d Mon Sep 17 00:00:00 2001 From: Dario Date: Fri, 23 Jan 2026 22:20:45 -0300 Subject: [PATCH] Lower interpolation threshold for first beach cutscene. Skip interpolation on lens flare when camera skips. --- patches/camera_transform_tagging.c | 13 +++++++++++-- patches/sky_transform_tagging.c | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/patches/camera_transform_tagging.c b/patches/camera_transform_tagging.c index 7bab898..ee43a2f 100644 --- a/patches/camera_transform_tagging.c +++ b/patches/camera_transform_tagging.c @@ -201,6 +201,16 @@ void func_802BB4D8(f32 position[3], f32 rotation[3]); void func_802BEFB0(void); void func_802BBA84(void); +f32 get_camera_skip_threshold() { + switch (map_get()) { + case MAP_94_CS_INTRO_SPIRAL_7: + case MAP_96_CS_END_BEACH_1: + return 50.0f; + default: + return 100.0f; + } +} + // @recomp Patched to detect camera type changes or sudden camera movements and skip perspective interpolation when they happen. RECOMP_PATCH void ncCamera_update(void) { f32 vpPos[3]; @@ -251,8 +261,7 @@ RECOMP_PATCH void ncCamera_update(void) { ml_vec3f_add(vpPosProjected, vpPosPrev, vpPosVel); f32 distToProjected = ml_vec3f_distance(vpPos, vpPosProjected); - const f32 SkipThreshold = (map_get() == MAP_94_CS_INTRO_SPIRAL_7) ? 50.0f : 100.0f; - if (distToProjected > SkipThreshold) { + if (distToProjected > get_camera_skip_threshold()) { ml_vec3f_clear(vpPosVel); skip_perspective_interpolation = TRUE; } diff --git a/patches/sky_transform_tagging.c b/patches/sky_transform_tagging.c index a1a6bb5..4c82d24 100644 --- a/patches/sky_transform_tagging.c +++ b/patches/sky_transform_tagging.c @@ -153,11 +153,13 @@ RECOMP_PATCH void func_80350818(Gfx **gfx, Mtx **mtx, Vtx **vtx) { // @recomp Set the model transform ID before drawing the lens flare. cur_drawn_model_transform_id = LENS_FLARE_TRANSFORM_ID_START + LENS_FLARE_TRANSFORM_ID_COUNT * i; + cur_drawn_model_skip_interpolation = perspective_interpolation_skipped(); modelRender_draw(gfx, mtx, spB8, spD0, temp_s2->unk4[i].unk14 * 0.25, NULL, D_80386170.unk8); // @recomp Clear the model transform ID after drawing the lens flare. cur_drawn_model_transform_id = 0; + cur_drawn_model_skip_interpolation = FALSE; } } }