diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 5af75bcbf7..0cfc28bed7 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -2644,13 +2644,6 @@ std::shared_ptr Emulator::Kill(bool allow_autoexit, bool savestat m_ar.reset(); read_used_savestate_versions(); - if (savestate && !g_cfg.savestate.suspend_emu) - { - to_ar.reset(); - BootGame(m_path); - return to_ar; - } - // Always Enable display sleep, not only if it was prevented. enable_display_sleep(); diff --git a/rpcs3/Emu/system_config.h b/rpcs3/Emu/system_config.h index 7d64fc7bd3..bf052ac5ea 100644 --- a/rpcs3/Emu/system_config.h +++ b/rpcs3/Emu/system_config.h @@ -315,7 +315,7 @@ struct cfg_root : cfg::node { node_savestate(cfg::node* _this) : cfg::node(_this, "Savestate") {} - cfg::_bool start_paused{ this, "Start Paused 2", true }; // Pause on first frame + cfg::_bool start_paused{ this, "Start Paused", false }; // Pause on first frame cfg::_bool suspend_emu{ this, "Suspend Emulation Savestate Mode", false }; // Close emulation when saving, delete save after loading cfg::_bool state_inspection_mode{ this, "Inspection Mode Savestates" }; // Save memory stored in executable files, thus allowing to view state without any files (for debugging) cfg::_bool save_disc_game_data{ this, "Save Disc Game Data", false }; diff --git a/rpcs3/Input/pad_thread.cpp b/rpcs3/Input/pad_thread.cpp index 9110dd7437..a58977c0ca 100644 --- a/rpcs3/Input/pad_thread.cpp +++ b/rpcs3/Input/pad_thread.cpp @@ -429,7 +429,7 @@ void pad_thread::operator()() m_mask_start_press_to_unpause &= pressed_mask; - if (!pressed_mask || timestamp - m_track_start_press_begin_timestamp >= 1'000'000) + if (!pressed_mask || timestamp - m_track_start_press_begin_timestamp >= 700'000) { m_track_start_press_begin_timestamp = timestamp; diff --git a/rpcs3/rpcs3qt/emu_settings_type.h b/rpcs3/rpcs3qt/emu_settings_type.h index fca7afce85..4aba09eef4 100644 --- a/rpcs3/rpcs3qt/emu_settings_type.h +++ b/rpcs3/rpcs3qt/emu_settings_type.h @@ -36,6 +36,7 @@ enum class emu_settings_type DebugConsoleMode, SilenceAllLogs, SuspendEmulationSavestateMode, + StartSavestatePaused, MaxSPURSThreads, SleepTimersAccuracy, ClocksScale, @@ -360,4 +361,5 @@ inline static const QMap settings_location = // Savestates { emu_settings_type::SuspendEmulationSavestateMode, { "Savestate", "Suspend Emulation Savestate Mode" }}, + { emu_settings_type::StartSavestatePaused, { "Savestate", "Start Paused" }}, }; diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index 3f674fe6a9..c92a634639 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -1336,6 +1336,9 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std m_emu_settings->EnhanceCheckBox(ui->suspendSavestates, emu_settings_type::SuspendEmulationSavestateMode); SubscribeTooltip(ui->suspendSavestates, tooltips.settings.suspend_savestates); + m_emu_settings->EnhanceCheckBox(ui->pausedSavestates, emu_settings_type::StartSavestatePaused); + SubscribeTooltip(ui->pausedSavestates, tooltips.settings.paused_savestates); + m_emu_settings->EnhanceCheckBox(ui->silenceAllLogs, emu_settings_type::SilenceAllLogs); SubscribeTooltip(ui->silenceAllLogs, tooltips.settings.silence_all_logs); diff --git a/rpcs3/rpcs3qt/settings_dialog.ui b/rpcs3/rpcs3qt/settings_dialog.ui index ee074055f9..516bfd7678 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -2341,6 +2341,13 @@ + + + + Start Savestates Paused + + + diff --git a/rpcs3/rpcs3qt/tooltips.h b/rpcs3/rpcs3qt/tooltips.h index 4428f24dc9..ea9d0d3e44 100644 --- a/rpcs3/rpcs3qt/tooltips.h +++ b/rpcs3/rpcs3qt/tooltips.h @@ -43,6 +43,7 @@ public: const QString allow_host_labels = tr("Allows the host GPU to synchronize with CELL directly. This incurs a performance penalty, but exposes the true state of GPU objects to the guest CPU. Can help eliminate visual noise and glitching at the cost of performance. Use with caution."); const QString disable_msl_fast_math = tr("Disables Fast Math for MSL shaders, which may violate the IEEE 754 standard.\nDisabling it may fix some artefacts especially on Apple GPUs, at the cost of performance."); const QString suspend_savestates = tr("When this mode is on, emulation exits when saving and the savestate file is concealed after loading it, preventing reuse by RPCS3.\nThis mode is like hibernation of emulation: if you don't want to be able to cheat using savestates when playing the game, consider using this mode.\nDo note that the savestate file is not gone completely just ignored by RPCS3, you can manually relaunch it if needed."); + const QString paused_savestates = tr("When this mode is on, savestates are loaded and paused on the first frame.\nThis allows players to prepare for gameplay without being thrown into the action immediately."); // audio