diff --git a/rpcs3/rpcs3qt/emu_settings_type.h b/rpcs3/rpcs3qt/emu_settings_type.h index 507cf7d470..bbd858d4a1 100644 --- a/rpcs3/rpcs3qt/emu_settings_type.h +++ b/rpcs3/rpcs3qt/emu_settings_type.h @@ -86,6 +86,7 @@ enum class emu_settings_type ShaderCompilerNumThreads, MultithreadedRSX, VBlankRate, + VBlankNTSCFixup, RelaxedZCULL, PreciseZCULL, DriverWakeUpDelay, @@ -252,6 +253,7 @@ inline static const QMap settings_location = { emu_settings_type::MinimumScalableDimension, { "Video", "Minimum Scalable Dimension"}}, { emu_settings_type::VulkanAdapter, { "Video", "Vulkan", "Adapter"}}, { emu_settings_type::VBlankRate, { "Video", "Vblank Rate"}}, + { emu_settings_type::VBlankNTSCFixup, { "Video", "Vblank NTSC Fixup"}}, { emu_settings_type::DriverWakeUpDelay, { "Video", "Driver Wake-Up Delay"}}, { emu_settings_type::AllowHostGPULabels, { "Video", "Allow Host GPU Labels"}}, { emu_settings_type::DisableMSLFastMath, { "Video", "Disable MSL Fast Math"}}, diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index fa131fc715..21202045db 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -1244,6 +1244,9 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std m_emu_settings->EnhanceCheckBox(ui->forceDisableExclusiveFullscreenMode, emu_settings_type::ForceDisableExclusiveFullscreenMode); SubscribeTooltip(ui->forceDisableExclusiveFullscreenMode, tooltips.settings.force_disable_exclusive_fullscreen_mode); + + m_emu_settings->EnhanceCheckBox(ui->vblankNTSCFixup, emu_settings_type::VBlankNTSCFixup); + SubscribeTooltip(ui->vblankNTSCFixup, tooltips.settings.vblank_ntsc_fixup); ui->mfcDelayCommand->setChecked(m_emu_settings->GetSetting(emu_settings_type::MFCCommandsShuffling) == "1"); SubscribeTooltip(ui->mfcDelayCommand, tooltips.settings.mfc_delay_command); diff --git a/rpcs3/rpcs3qt/settings_dialog.ui b/rpcs3/rpcs3qt/settings_dialog.ui index 26f3cfdf6a..7bf079e980 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -2535,6 +2535,13 @@ + + + + VBlank NTSC Fixup + + + diff --git a/rpcs3/rpcs3qt/tooltips.h b/rpcs3/rpcs3qt/tooltips.h index 54ddbf33dd..d0882d20cb 100644 --- a/rpcs3/rpcs3qt/tooltips.h +++ b/rpcs3/rpcs3qt/tooltips.h @@ -34,6 +34,7 @@ public: const QString max_spurs_threads = tr("Limits the maximum number of SPURS threads in each thread group.\nMay improve performance in some cases, especially on systems with limited number of hardware threads.\nLimiting the number of threads is likely to cause crashes; it's recommended to keep this at the default value."); const QString sleep_timers_accuracy = tr("Changes the sleep period accuracy.\n'As Host' uses default accuracy of the underlying operating system, while 'All Timers' attempts to improve it.\n'Usleep Only' limits the adjustments to usleep syscall only.\nCan affect performance in unexpected ways."); const QString vblank_rate = tr("Adjusts the frequency of vertical blanking signals that the emulator sends.\nAffects timing of events which rely on these signals."); + const QString vblank_ntsc_fixup = tr("Multiplies the rate of VBLANK by 1000/1001 for values like 59.94Hz.\nKnown to fix the rhythm game Space Channel 5 Part 2"); const QString clocks_scale = tr("Changes the scale of emulated system time.\nAffects software which uses system time to calculate things such as dynamic timesteps."); const QString wake_up_delay = tr("Controls how much time it takes for RSX to start processing after waking up by the Cell processor.\nIncreasing wakeup delay improves stability, but very high values can lower RSX/GPU performance.\nIt is recommend to adjust this at 20µs to 40µs increments until the best value for optimal stability is reached."); const QString disabled_from_global = tr("Do not change this setting globally.\nRight-click a game in the game list and choose \"Configure\" instead.");