ref: b58163ce438509e01397ffade076a15d696231fa
parent: c1c8c7f8300ca36c2e482eb116e2095335cc03a0
author: Snesrev <snesrev@protonmail.com>
date: Tue Oct 4 19:06:04 EDT 2022
Add DisableFrameDelay
--- a/config.c
+++ b/config.c
@@ -314,6 +314,8 @@
return true;
} else if (StringEqualsNoCase(key, "DisplayPerfInTitle")) {
return ParseBool(value, &g_config.display_perf_title);
+ } else if (StringEqualsNoCase(key, "DisableFrameDelay")) {
+ return ParseBool(value, &g_config.disable_frame_delay);
}
} else if (section == 4) {
if (StringEqualsNoCase(key, "ItemSwitchLR")) {
--- a/config.h
+++ b/config.h
@@ -54,6 +54,7 @@
bool no_sprite_limits;
bool display_perf_title;
bool enable_msu;
+ bool disable_frame_delay;
uint32 features0;
const char *link_graphics;
--- a/main.c
+++ b/main.c
@@ -397,21 +397,22 @@
// if vsync isn't working, delay manually
curTick = SDL_GetTicks();
- static const uint8 delays[3] = { 17, 17, 16 }; // 60 fps
-#if 1
- lastTick += delays[frameCtr % 3];
- if (lastTick > curTick) {
- uint32 delta = lastTick - curTick;
- if (delta > 500) {
- lastTick = curTick - 500;
- delta = 500;
+ if (!g_config.disable_frame_delay) {
+ static const uint8 delays[3] = { 17, 17, 16 }; // 60 fps
+ lastTick += delays[frameCtr % 3];
+
+ if (lastTick > curTick) {
+ uint32 delta = lastTick - curTick;
+ if (delta > 500) {
+ lastTick = curTick - 500;
+ delta = 500;
+ }
+ SDL_Delay(delta);
+ } else if (curTick - lastTick > 500) {
+ lastTick = curTick;
}
- SDL_Delay(delta);
- } else if (curTick - lastTick > 500) {
- lastTick = curTick;
}
-#endif
}
if (g_config.autosave)
HandleCommand(kKeys_Save + 0, true);