diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 04ca5bb829..97355c15a7 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -189,7 +189,9 @@ bool EmuScreen::bootAllowStorage(const Path &filename) { return false; case PERMISSION_STATUS_DENIED: - screenManager()->switchScreen(new MainScreen()); + if (!bootPending_) { + screenManager()->switchScreen(new MainScreen()); + } return false; case PERMISSION_STATUS_PENDING: @@ -608,9 +610,11 @@ void EmuScreen::sendMessage(UIMessage message, const char *value) { if (gpu) gpu->DumpNextFrame(); } else if (message == UIMessage::REQUEST_CLEAR_JIT) { - currentMIPS->ClearJitCache(); - if (PSP_IsInited()) { - currentMIPS->UpdateCore((CPUCore)g_Config.iCpuCore); + if (!bootPending_) { + currentMIPS->ClearJitCache(); + if (PSP_IsInited()) { + currentMIPS->UpdateCore((CPUCore)g_Config.iCpuCore); + } } } else if (message == UIMessage::WINDOW_MINIMIZED) { if (!strcmp(value, "true")) { @@ -985,18 +989,20 @@ void EmuScreen::ProcessVKey(VirtKey virtKey) { case VIRTKEY_EXIT_APP: { - std::string confirmExitMessage = GetConfirmExitMessage(); - if (!confirmExitMessage.empty()) { - auto di = GetI18NCategory(I18NCat::DIALOG); - confirmExitMessage += '\n'; - confirmExitMessage += di->T("Are you sure you want to exit?"); - screenManager()->push(new PromptScreen(gamePath_, confirmExitMessage, di->T("Yes"), di->T("No"), [=](bool result) { - if (result) { - System_ExitApp(); - } - })); - } else { - System_ExitApp(); + if (!bootPending_) { + std::string confirmExitMessage = GetConfirmExitMessage(); + if (!confirmExitMessage.empty()) { + auto di = GetI18NCategory(I18NCat::DIALOG); + confirmExitMessage += '\n'; + confirmExitMessage += di->T("Are you sure you want to exit?"); + screenManager()->push(new PromptScreen(gamePath_, confirmExitMessage, di->T("Yes"), di->T("No"), [=](bool result) { + if (result) { + System_ExitApp(); + } + })); + } else { + System_ExitApp(); + } } break; } @@ -1464,7 +1470,7 @@ void EmuScreen::update() { bool EmuScreen::checkPowerDown() { // This is for handling things like sceKernelExitGame(). - if (coreState == CORE_POWERDOWN && PSP_GetBootState() == BootState::Complete) { + if (coreState == CORE_POWERDOWN && PSP_GetBootState() == BootState::Complete && !bootPending_) { bool shutdown = false; if (PSP_IsInited()) { PSP_Shutdown(true); @@ -1473,7 +1479,6 @@ bool EmuScreen::checkPowerDown() { } INFO_LOG(Log::System, "SELF-POWERDOWN!"); screenManager()->switchScreen(new MainScreen()); - bootPending_ = false; return shutdown; } return false; diff --git a/assets/compat.ini b/assets/compat.ini index 7a0c4d105c..c0e0cc281d 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -1161,6 +1161,9 @@ UCJS18012 = true # WWE All Stars ULUS10544 = true ULES01510 = true +# Activision Hits Remixed +ULES00640 = true +ULUS10186 = true [MemstickFixedFree] # Assassin's Creed : Bloodlines - issue #12761