From 2c0ec96eff77ff62e17d4fae7ed8fcfdcd5a85e0 Mon Sep 17 00:00:00 2001 From: Josh Bodner <30329717+jbodner09@users.noreply.github.com> Date: Fri, 18 Nov 2022 15:42:58 -0800 Subject: Fix credits timing (#1254) * Fix credits timing * Add documentation * Fix typo --- soh/src/code/z_demo.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'soh/src/code') diff --git a/soh/src/code/z_demo.c b/soh/src/code/z_demo.c index 4133d4dab..9eeb3bfa8 100644 --- a/soh/src/code/z_demo.c +++ b/soh/src/code/z_demo.c @@ -511,7 +511,54 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB temp = 1; } - if ((csCtx->frames == cmd->startFrame) || (temp != 0) || ((csCtx->frames > 20) && (randoCsSkip || debugCsSkip))) { + bool playCutscene = false; + if (!CVar_GetS32("gCreditsFix", 1) && (cmd->startFrame == csCtx->frames)) { + playCutscene = true; + } else if (CVar_GetS32("gCreditsFix", 1)) { + u16 delay = 0; + + // HACK: Align visual timing with audio during credits sequence + switch (cmd->base) { + case 55: // Gerudo fortress (second scene of credits roll) + delay = 20; + break; + case 56: // Kakariko village + delay = 40; + break; + case 57: // Death mountain trail + delay = 20; + break; + case 58: // Goron city + delay = 20; + break; + case 59: // Lake hylia + delay = 20; + break; + case 62: // Kokiri forest (houses) + delay = 40; + break; + case 63: // Kokiri forest (deku tree) + delay = 40; + break; + case 74: // First gorons dancing + delay = 100; + break; + case 75: // Magic carpet guy and old shop keepers + delay = 180; + break; + case 77: // Sad mido and king zora (plays after scene 78) + delay = 100; + break; + case 78: // Second gorons dancing + delay = 160; + break; + } + if (cmd->startFrame + delay == csCtx->frames) { + playCutscene = true; + } + } + + if (playCutscene || (temp != 0) || ((csCtx->frames > 20) && (randoCsSkip || debugCsSkip))) { csCtx->state = CS_STATE_UNSKIPPABLE_EXEC; Audio_SetCutsceneFlag(0); -- cgit v1.2.3