diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index eaba04faef..78f8fc63bd 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -3399,6 +3399,12 @@ namespace rsx break; } + if (double limit2 = g_cfg.video.second_frame_limit; limit2 >= 0.1 && (limit2 < limit || !limit)) + { + // Apply a second limit + limit = limit2; + } + if (limit) { const u64 needed_us = static_cast(1000000 / limit); diff --git a/rpcs3/Emu/system_config.h b/rpcs3/Emu/system_config.h index 13e6b133cd..b3623872eb 100644 --- a/rpcs3/Emu/system_config.h +++ b/rpcs3/Emu/system_config.h @@ -130,6 +130,7 @@ struct cfg_root : cfg::node cfg::_enum resolution{ this, "Resolution", video_resolution::_720 }; cfg::_enum aspect_ratio{ this, "Aspect ratio", video_aspect::_16_9 }; cfg::_enum frame_limit{ this, "Frame limit", frame_limit_type::_auto, true }; + cfg::_float<0, 1000> second_frame_limit{ this, "Second Frame Limit", 0, true }; // 0 disables its effect cfg::_enum antialiasing_level{ this, "MSAA", msaa_level::_auto }; cfg::_enum shadermode{ this, "Shader Mode", shader_mode::async_recompiler }; cfg::_enum shader_precision{ this, "Shader Precision", gpu_preset_level::high };