From b3ce2b21c0c27060fdb7bdf9542b2b9b79e62ca9 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Mon, 25 Jan 2021 00:56:03 +1000 Subject: [PATCH] System: Prevent using both runahead and rewind concurrently --- src/core/host_interface.cpp | 13 +++++++++++++ src/duckstation-qt/emulationsettingswidget.cpp | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/core/host_interface.cpp b/src/core/host_interface.cpp index a1e81938f..2cf0c152b 100644 --- a/src/core/host_interface.cpp +++ b/src/core/host_interface.cpp @@ -672,6 +672,19 @@ void HostInterface::FixIncompatibleSettings(bool display_osd_messages) Log_WarningPrintf("Disabling mmap fastmem due to rewind being enabled"); g_settings.cpu_fastmem_mode = CPUFastmemMode::LUT; } + + // code compilation is too slow with runahead, use the recompiler + if (g_settings.runahead_enable && g_settings.IsUsingCodeCache()) + { + Log_WarningPrintf("Code cache/recompiler disabled due to runahead"); + g_settings.cpu_execution_mode = CPUExecutionMode::Interpreter; + } + + if (g_settings.runahead_enable && g_settings.rewind_enable) + { + Log_WarningPrintf("Rewind disabled due to runahead being enabled"); + g_settings.rewind_enable = false; + } } void HostInterface::SaveSettings(SettingsInterface& si) diff --git a/src/duckstation-qt/emulationsettingswidget.cpp b/src/duckstation-qt/emulationsettingswidget.cpp index 45db861a2..78bf894bd 100644 --- a/src/duckstation-qt/emulationsettingswidget.cpp +++ b/src/duckstation-qt/emulationsettingswidget.cpp @@ -101,7 +101,7 @@ void EmulationSettingsWidget::onTurboSpeedIndexChanged(int index) void EmulationSettingsWidget::updateRewindSummaryLabel() { - if (m_ui.rewindEnable->isChecked()) + if (m_ui.rewindEnable->isEnabled() && m_ui.rewindEnable->isChecked()) { const u32 frames = static_cast(m_ui.rewindSaveSlots->value()); const float frequency = static_cast(m_ui.rewindSaveFrequency->value()); @@ -122,8 +122,15 @@ void EmulationSettingsWidget::updateRewindSummaryLabel() } else { - m_ui.rewindSummary->setText( - tr("Rewind is not enabled. Please note that enabling rewind may significantly increase system requirements.")); + if (!m_ui.rewindEnable->isEnabled()) + { + m_ui.rewindSummary->setText(tr("Rewind is disabled because runahead is enabled.")); + } + else + { + m_ui.rewindSummary->setText( + tr("Rewind is not enabled. Please note that enabling rewind may significantly increase system requirements.")); + } m_ui.rewindSaveFrequency->setEnabled(false); m_ui.rewindSaveSlots->setEnabled(false); } @@ -132,4 +139,6 @@ void EmulationSettingsWidget::updateRewindSummaryLabel() void EmulationSettingsWidget::updateRunaheadFields() { m_ui.runaheadFrames->setEnabled(m_ui.runaheadEnable->isChecked()); + m_ui.rewindEnable->setEnabled(!m_ui.runaheadEnable->isChecked()); + updateRewindSummaryLabel(); }