diff --git a/Source/Core/UICommon/WiiUtils.cpp b/Source/Core/UICommon/WiiUtils.cpp index d576dbcdd0..994079f623 100644 --- a/Source/Core/UICommon/WiiUtils.cpp +++ b/Source/Core/UICommon/WiiUtils.cpp @@ -5,6 +5,7 @@ #include "UICommon/WiiUtils.h" #include "Common/CommonTypes.h" #include "Common/MsgHandler.h" +#include "Core/ConfigManager.h" #include "Core/IOS/ES/ES.h" #include "Core/IOS/ES/Formats.h" #include "Core/IOS/IOS.h" @@ -27,12 +28,23 @@ bool InstallWAD(const std::string& wad_path) const auto es = ios.GetES(); IOS::HLE::Device::ES::Context context; - if (es->ImportTicket(wad.GetTicket().GetBytes(), wad.GetCertificateChain()) < 0 || - es->ImportTitleInit(context, tmd.GetBytes(), wad.GetCertificateChain()) < 0) + IOS::HLE::ReturnCode ret; + const bool checks_enabled = SConfig::GetInstance().m_enable_signature_checks; + while ((ret = es->ImportTicket(wad.GetTicket().GetBytes(), wad.GetCertificateChain())) < 0 || + (ret = es->ImportTitleInit(context, tmd.GetBytes(), wad.GetCertificateChain())) < 0) { + if (checks_enabled && ret == IOS::HLE::IOSC_FAIL_CHECKVALUE && + AskYesNoT("This WAD has not been signed by Nintendo. Continue to import?")) + { + SConfig::GetInstance().m_enable_signature_checks = false; + continue; + } + + SConfig::GetInstance().m_enable_signature_checks = checks_enabled; PanicAlertT("WAD installation failed: Could not initialise title import."); return false; } + SConfig::GetInstance().m_enable_signature_checks = checks_enabled; const bool contents_imported = [&]() { const u64 title_id = tmd.GetTitleId();