Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions include/dusk/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ struct UserSettings {

// Controls
ConfigVar<bool> enableTurboKeybind;
ConfigVar<float> turboSpeed;
ConfigVar<bool> enableResetKeybind;

// Tools
Expand Down
2 changes: 1 addition & 1 deletion libs/JSystem/src/JFramework/JFWDisplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ static void waitForTick(u32 p1, u16 p2) {
return;
}
if (dusk::getTransientSettings().skipFrameRateLimit) {
p1 = OS_TIMER_CLOCK / 120;
p1 = (int)((OS_TIMER_CLOCK / 30) / dusk::getSettings().game.turboSpeed);
}

#if TARGET_PC
Expand Down
6 changes: 1 addition & 5 deletions src/dusk/game_clock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,8 @@ MainLoopPacer advance_main_loop() {
}

int sim_ticks_to_run = 0;
clock::time_point projected_snapshot_time = s_current_snapshot_time;
const clock::time_point render_time = now - kSimPeriodDuration;
while (sim_ticks_to_run < kMaxSimTicksPerFrame && projected_snapshot_time < render_time) {
projected_snapshot_time += kSimPeriodDuration;
sim_ticks_to_run++;
}
sim_ticks_to_run = std::min(kMaxSimTicksPerFrame, (int)std::floor(std::chrono::duration<float>(render_time - s_current_snapshot_time)/kSimPeriodDuration));
out.sim_ticks_to_run = sim_ticks_to_run;
return out;
}
Expand Down
2 changes: 2 additions & 0 deletions src/dusk/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ UserSettings g_userSettings = {

// Controls
.enableTurboKeybind {"game.enableTurboKeybind", false},
.turboSpeed {"game.turboSpeed", 4.0f},
.enableResetKeybind {"game.enableResetKeybind", false},

// Tools
Expand Down Expand Up @@ -235,6 +236,7 @@ void registerSettings() {
Register(g_userSettings.game.noLowHpSound);
Register(g_userSettings.game.midnasLamentNonStop);
Register(g_userSettings.game.enableTurboKeybind);
Register(g_userSettings.game.turboSpeed);
Register(g_userSettings.game.enableResetKeybind);
Register(g_userSettings.game.speedrunMode);
Register(g_userSettings.game.liveSplitEnabled);
Expand Down
10 changes: 7 additions & 3 deletions src/dusk/ui/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -422,8 +422,9 @@ SelectButton& config_percent_select(Pane& leftPane, Pane& rightPane, ConfigVar<f
.key = std::move(key),
.getValue = [&var] { return float_setting_percent(var); },
.setValue =
[&var, min, max](int value) {
var.setValue(std::clamp(value, min, max) / 100.0f);
[&var, min, max, step](int value) {
int over = value - min;
var.setValue((min + std::clamp(step? (over - (over % step) + (((over % step) >= (step+1)>>1)? step : 0)) : over, 0, max - min)) / 100.0f);
config::Save();
},
.isDisabled = std::move(isDisabled),
Expand Down Expand Up @@ -932,8 +933,11 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {

leftPane.add_section("Tools");
addOption("Turbo Key", getSettings().game.enableTurboKeybind,
"Hold Tab to increase game speed by up to 4x.",
"Hold Tab to adjust game speed up to the selected factor.",
[] { return getSettings().game.speedrunMode; });
config_percent_select(leftPane, rightPane, getSettings().game.turboSpeed,
"Turbo Speed", "Adjusts the target speed of the game.", 10, 2000, 5,
[] { return (!getSettings().game.enableTurboKeybind || getSettings().game.speedrunMode); });
addOption("Reset Key (" + Rml::String{hotkeys::DO_RESET} + ")",
getSettings().game.enableResetKeybind,
"Press " + Rml::String{hotkeys::DO_RESET} + " to reset the game.");
Expand Down
Loading