Add 6th notch to text speed which makes text speed instant (#6694)

Helps frustration trying to read hints faster without skipping
This commit is contained in:
Philip Dubé
2026-06-12 05:09:24 +00:00
committed by GitHub
parent 7b01a7bf2e
commit 739225d222
2 changed files with 17 additions and 4 deletions
+8 -2
View File
@@ -435,9 +435,15 @@ void SohMenu::AddMenuEnhancements() {
AddWidget(path, "Skip Text", WIDGET_CVAR_CHECKBOX)
.CVar(CVAR_ENHANCEMENT("SkipText"))
.Options(CheckboxOptions().Tooltip("Holding down B skips text."));
AddWidget(path, "Text Speed: %dx", WIDGET_CVAR_SLIDER_INT)
AddWidget(path, "Text Speed", WIDGET_CVAR_SLIDER_INT)
.CVar(CVAR_ENHANCEMENT("TextSpeed"))
.Options(IntSliderOptions().Min(1).Max(5).DefaultValue(1).Format("%dx"));
// Top notch (max) fills the whole text box in one frame
.Callback([](WidgetInfo& info) {
auto options = std::static_pointer_cast<IntSliderOptions>(info.options);
options->format = CVarGetInteger(info.cVar, 1) >= options->max ? "Instant" : "%dx";
})
.Options(IntSliderOptions().Min(1).Max(6).DefaultValue(1).Format(
CVarGetInteger(CVAR_ENHANCEMENT("TextSpeed"), 1) >= 6 ? "Instant" : "%dx"));
AddWidget(path, "Slow Text Speed: %dx", WIDGET_CVAR_SLIDER_INT)
.CVar(CVAR_ENHANCEMENT("SlowTextSpeed"))
.Options(IntSliderOptions().Min(1).Max(5).DefaultValue(1).Format("%dx").Tooltip(
+9 -2
View File
@@ -15,6 +15,9 @@
#include "soh/SaveManager.h"
#include "soh/ResourceManagerHelpers.h"
// SOH [Enhancement] Text Speed which fills whole box in one frame
#define TEXT_SPEED_INSTANT 6
// #region SOH [NTSC] - Allows custom messages to work on japanese
static bool sDisplayNextMessageAsEnglish = false;
static u8 sLastLanguage = LANGUAGE_ENG;
@@ -1276,7 +1279,9 @@ void Message_DrawTextJPN(PlayState* play, Gfx** gfxP) {
}
}
if (msgCtx->textDelay == 0) {
if (gTextSpeed >= TEXT_SPEED_INSTANT) {
msgCtx->textDrawPos = msgCtx->decodedTextLen + 1;
} else if (msgCtx->textDelay == 0) {
msgCtx->textDrawPos = i + gTextSpeed;
if (msgCtx->textDrawPos > msgCtx->decodedTextLen) {
msgCtx->textDrawPos = msgCtx->decodedTextLen + 1;
@@ -1626,7 +1631,9 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) {
break;
}
}
if (msgCtx->textDelay == 0) {
if (gTextSpeed >= TEXT_SPEED_INSTANT) {
msgCtx->textDrawPos = msgCtx->decodedTextLen + 1;
} else if (msgCtx->textDelay == 0) {
msgCtx->textDrawPos = i + gTextSpeed;
} else if (msgCtx->textDelayTimer == 0) {
msgCtx->textDrawPos = i + 1;