From da79e5e0151ad7decc2dbc63c55c6fe1a57a089a Mon Sep 17 00:00:00 2001 From: Jordan Longstaff Date: Tue, 15 Oct 2024 23:50:10 -0400 Subject: [PATCH] Fix fast speed skipping quick text markers (#4416) --- soh/src/code/z_message_PAL.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c index 4736f95a7..5ced23cb7 100644 --- a/soh/src/code/z_message_PAL.c +++ b/soh/src/code/z_message_PAL.c @@ -856,6 +856,8 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { msgCtx->unk_E3D0 = 0; charTexIdx = 0; + gTextSpeed = CVarGetInteger(CVAR_ENHANCEMENT("TextSpeed"), 1); + for (i = 0; i < msgCtx->textDrawPos; i++) { character = msgCtx->msgBufDecoded[i]; @@ -903,9 +905,9 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { *gfxP = gfx; return; case MESSAGE_QUICKTEXT_ENABLE: - if (i + 1 == msgCtx->textDrawPos && (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING || - (msgCtx->msgMode >= MSGMODE_OCARINA_STARTING && - msgCtx->msgMode < MSGMODE_SCARECROW_LONG_RECORDING_START))) { + if (i < msgCtx->textDrawPos && i + gTextSpeed >= msgCtx->textDrawPos && (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING || + (msgCtx->msgMode >= MSGMODE_OCARINA_STARTING && + msgCtx->msgMode < MSGMODE_SCARECROW_LONG_RECORDING_START))) { j = i; while (true) { lookAheadCharacter = msgCtx->msgBufDecoded[j]; @@ -922,8 +924,10 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { break; } } - i = j - 1; - msgCtx->textDrawPos = i + 1; + if (j > msgCtx->textDrawPos) { + i = j - 1; + msgCtx->textDrawPos = j; + } if (character) {} } @@ -1116,8 +1120,6 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { break; } } - - gTextSpeed = CVarGetInteger(CVAR_ENHANCEMENT("TextSpeed"), 1); if (msgCtx->textDelay == 0) { msgCtx->textDrawPos = i + gTextSpeed; } else if (msgCtx->textDelayTimer == 0) {