diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 7879b84dda..afad78986c 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -31,6 +31,8 @@ #include "Common/Version.h" #include "Common/WorkQueueThread.h" +#include "Core/AchievementManager.h" +#include "Core/Config/AchievementSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/CoreTiming.h" @@ -204,6 +206,14 @@ void LoadFromBuffer(std::vector& buffer) return; } +#ifdef USE_RETRO_ACHIEVEMENTS + if (AchievementManager::GetInstance()->IsHardcoreModeActive()) + { + OSD::AddMessage("Loading savestates is disabled in RetroAchievements hardcore mode"); + return; + } +#endif // USE_RETRO_ACHIEVEMENTS + Core::RunOnCPUThread( [&] { u8* ptr = buffer.data(); @@ -842,6 +852,14 @@ void LoadAs(const std::string& filename) return; } +#ifdef USE_RETRO_ACHIEVEMENTS + if (AchievementManager::GetInstance()->IsHardcoreModeActive()) + { + OSD::AddMessage("Loading savestates is disabled in RetroAchievements hardcore mode"); + return; + } +#endif // USE_RETRO_ACHIEVEMENTS + std::unique_lock lk(s_load_or_save_in_progress_mutex, std::try_to_lock); if (!lk) return; diff --git a/Source/Core/DolphinQt/MenuBar.cpp b/Source/Core/DolphinQt/MenuBar.cpp index 2b68cf640d..8bf96d7acb 100644 --- a/Source/Core/DolphinQt/MenuBar.cpp +++ b/Source/Core/DolphinQt/MenuBar.cpp @@ -20,6 +20,7 @@ #include "Common/FileUtil.h" #include "Common/StringUtil.h" +#include "Core/AchievementManager.h" #include "Core/Boot/Boot.h" #include "Core/CommonTitles.h" #include "Core/Config/AchievementSettings.h" @@ -122,9 +123,16 @@ void MenuBar::OnEmulationStateChanged(Core::State state) m_fullscreen_action->setEnabled(running); m_frame_advance_action->setEnabled(running); m_screenshot_action->setEnabled(running); - m_state_load_menu->setEnabled(running); m_state_save_menu->setEnabled(running); +#ifdef USE_RETRO_ACHIEVEMENTS + bool hardcore = AchievementManager::GetInstance()->IsHardcoreModeActive(); + m_state_load_menu->setEnabled(running && !hardcore); +#else // USE_RETRO_ACHIEVEMENTS + m_state_load_menu->setEnabled(running); + +#endif // USE_RETRO_ACHIEVEMENTS + // Movie m_recording_read_only->setEnabled(running); if (!running)