summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-03-29 16:20:19 -0300
committerSonic Dreamcaster <alejandro.asenjo88@gmail.com>2025-03-29 16:20:19 -0300
commitb23ad8adf08efb2e49c71dc63657513152c41029 (patch)
tree63943e7797fdd3ef26b9dc0652f6ebd419606258
parenta53538370384416b6692be5c8c1d64b655114240 (diff)
revert whatever happened here
-rw-r--r--src/port/Engine.cpp17
-rw-r--r--src/port/ui/ImguiUI.cpp44
2 files changed, 44 insertions, 17 deletions
diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp
index f85e2729..e0307752 100644
--- a/src/port/Engine.cpp
+++ b/src/port/Engine.cpp
@@ -480,7 +480,7 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) {
wnd->SetRendererUCode(UcodeHandlers::ucode_f3dex);
std::vector<std::unordered_map<Mtx*, MtxF>> mtx_replacements;
- int target_fps = GameEngine::Instance->GetInterpolationFPS();
+ int target_fps = CVarGetInteger("gInterpolationFPS", 60);
static int last_fps;
static int last_update_rate;
static int time;
@@ -509,8 +509,11 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) {
time -= fps;
+ int threshold = CVarGetInteger("gExtraLatencyThreshold", 80);
+
if (wnd != nullptr) {
wnd->SetTargetFps(fps);
+ wnd->SetMaximumFrameLatency(threshold > 0 && target_fps >= threshold ? 2 : 1);
}
// When the gfx debugger is active, only run with the final mtx
@@ -526,16 +529,16 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) {
}
uint32_t GameEngine::GetInterpolationFPS() {
+ if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
+ return CVarGetInteger("gInterpolationFPS", 60);
+ }
+
if (CVarGetInteger("gMatchRefreshRate", 0)) {
return Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
-
- } else if (CVarGetInteger("gVsyncEnabled", 1) ||
- !Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) {
- return std::min<uint32_t>(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(),
- CVarGetInteger("gInterpolationFPS", 60));
}
- return CVarGetInteger("gInterpolationFPS", 60);
+ return std::min<uint32_t>(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(),
+ CVarGetInteger("gInterpolationFPS", 60));
}
uint32_t GameEngine::GetInterpolationFrameCount()
diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp
index 4e13f3f3..996d2bbb 100644
--- a/src/port/ui/ImguiUI.cpp
+++ b/src/port/ui/ImguiUI.cpp
@@ -246,7 +246,12 @@ void DrawSettingsMenu(){
{ // FPS Slider
const int minFps = 30;
- static int maxFps = 360;
+ static int maxFps;
+ if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
+ maxFps = 360;
+ } else {
+ maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
+ }
int currentFps = 0;
#ifdef __WIIU__
UIWidgets::Spacer(0);
@@ -309,20 +314,40 @@ void DrawSettingsMenu(){
CVarSetInteger("gInterpolationFPS", currentFps);
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
#else
- bool matchingRefreshRate = CVarGetInteger("gMatchRefreshRate", 0);
+ bool matchingRefreshRate =
+ CVarGetInteger("gMatchRefreshRate", 0) && Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != Ship::WindowBackend::FAST3D_DXGI_DX11;
UIWidgets::CVarSliderInt((currentFps == 30) ? "FPS: Original (30)" : "FPS: %d", "gInterpolationFPS", minFps, maxFps, 60, {
.disabled = matchingRefreshRate
});
#endif
- UIWidgets::Tooltip(
- "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely "
- "visual and does not impact game logic, execution of glitches etc.\n\n"
- "A higher target FPS than your monitor's refresh rate will waste resources, and might give a worse result."
- );
+ if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
+ UIWidgets::Tooltip(
+ "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely "
+ "visual and does not impact game logic, execution of glitches etc.\n\n"
+ "A higher target FPS than your monitor's refresh rate will waste resources, and might give a worse result."
+ );
+ } else {
+ UIWidgets::Tooltip(
+ "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely "
+ "visual and does not impact game logic, execution of glitches etc."
+ );
+ }
} // END FPS Slider
- UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false);
- UIWidgets::Tooltip("Matches interpolation value to the refresh rate of your display.");
+ if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
+ UIWidgets::Spacer(0);
+ if (ImGui::Button("Match Refresh Rate")) {
+ int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
+ if (hz >= 30 && hz <= 360) {
+ CVarSetInteger("gInterpolationFPS", hz);
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
+ }
+ }
+ } else {
+ UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false);
+ }
+
+ UIWidgets::Tooltip("Matches interpolation value to the current game's window refresh rate");
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
UIWidgets::PaddedEnhancementSliderInt(CVarGetInteger("gExtraLatencyThreshold", 0) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS",
@@ -369,7 +394,6 @@ void DrawSettingsMenu(){
if (Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) {
UIWidgets::PaddedEnhancementCheckbox("Enable Vsync", "gVsyncEnabled", true, false);
- UIWidgets::Tooltip("Removes tearing, but clamps your max FPS to your displays refresh rate.");
}
if (Ship::Context::GetInstance()->GetWindow()->SupportsWindowedFullscreen()) {