diff --git a/Core/Config.cpp b/Core/Config.cpp index 55f2296e88..2a631452d6 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -738,7 +738,7 @@ static const ConfigSetting graphicsSettings[] = { ConfigSetting("MultiThreading", &g_Config.bRenderMultiThreading, true, CfgFlag::DEFAULT), - ConfigSetting("ShaderCache", &g_Config.bShaderCache, true, CfgFlag::DONT_SAVE), // Doesn't save. Ini-only. + ConfigSetting("ShaderCache", &g_Config.bShaderCache, true, CfgFlag::DEFAULT), ConfigSetting("GpuLogProfiler", &g_Config.bGpuLogProfiler, false, CfgFlag::DEFAULT), ConfigSetting("UberShaderVertex", &g_Config.bUberShaderVertex, true, CfgFlag::DEFAULT), diff --git a/Core/MIPS/MIPSInt.cpp b/Core/MIPS/MIPSInt.cpp index e4a14d80f1..392aab0e04 100644 --- a/Core/MIPS/MIPSInt.cpp +++ b/Core/MIPS/MIPSInt.cpp @@ -1047,6 +1047,9 @@ namespace MIPSInt if (((op >> 24) & 3) != EMUOP_CALL_REPLACEMENT) { _dbg_assert_msg_(false, "Trying to interpret emuhack instruction that can't be interpreted"); } + + _assert_((PC & 3) == 0); + // It's a replacement func! int index = op.encoding & 0xFFFFFF; const ReplacementTableEntry *entry = GetReplacementFunc(index); diff --git a/UI/DeveloperToolsScreen.cpp b/UI/DeveloperToolsScreen.cpp index 56d62d1ede..98b11653a0 100644 --- a/UI/DeveloperToolsScreen.cpp +++ b/UI/DeveloperToolsScreen.cpp @@ -345,6 +345,7 @@ void DeveloperToolsScreen::CreateGraphicsTab(UI::LinearLayout *list) { list->Add(new ItemHeader(sy->T("General"))); list->Add(new CheckBox(&g_Config.bVendorBugChecksEnabled, dev->T("Enable driver bug workarounds"))); + list->Add(new CheckBox(&g_Config.bShaderCache, dev->T("Enable shader cache"))); static const char *ffModes[] = { "Render all frames", "", "Frame Skipping" }; PopupMultiChoice *ffMode = list->Add(new PopupMultiChoice(&g_Config.iFastForwardMode, dev->T("Fast-forward mode"), ffModes, 0, ARRAY_SIZE(ffModes), I18NCat::GRAPHICS, screenManager())); diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 6bab13fc36..04b0393fd8 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -266,6 +266,11 @@ void EmuScreen::ProcessGameBoot(const Path &filename) { SetAssertCancelCallback(&AssertCancelCallback, this); + if (!g_Config.bShaderCache) { + // Only developers should ever see this. + g_OSD.Show(OSDType::MESSAGE_WARNING, "Shader cache is disabled (developer)"); + } + currentMIPS = &mipsr4k; CoreParameter coreParam{};