System: Fix missing subchannel not blocking startup
Some checks failed
Translation Lint / translation-lint (push) Has been cancelled
GameDB Lint / gamedb-lint (push) Has been cancelled
Automated Builds / 💻 Windows (push) Has been cancelled
Automated Builds / 🐧 Linux AppImage (push) Has been cancelled
Automated Builds / 🐧 Linux Cross-Compiled AppImage (push) Has been cancelled
Automated Builds / 🍎 MacOS (push) Has been cancelled
Automated Builds / 📤 Create Release (push) Has been cancelled

I only tested the escape hatch, not the intended path...
This commit is contained in:
Stenzek 2025-12-26 02:09:04 +10:00
parent 682a3b3eb9
commit ef2cf6e223
No known key found for this signature in database

View File

@ -1871,29 +1871,34 @@ bool System::BootSystem(SystemBootParameters parameters, Error* error)
// Check for required subchannel data.
// Annoyingly we can't do this before initializing, because subchannel data can be loaded from outside the image.
if (!parameters.ignore_missing_subchannel && !CheckForRequiredSubQ(error) &&
Core::GetBoolSettingValue("CDROM", "AllowBootingWithoutSBIFile", false))
if (!parameters.ignore_missing_subchannel && !CheckForRequiredSubQ(error))
{
Host::ConfirmMessageAsync(
"Confirm Unsupported Configuration",
fmt::format(TRANSLATE_FS("System",
"You are attempting to run a libcrypt protected game without an SBI file:\n\n{0}: "
"{1}\n\nThe game will likely not run properly.\n\nPlease check the README for "
"instructions on how to add an SBI file.\n\nDo you wish to continue?"),
s_state.running_game_serial, s_state.running_game_title),
[parameters = std::move(parameters)](bool result) mutable {
if (result)
{
Host::RunOnCoreThread([parameters = std::move(parameters)]() mutable {
parameters.ignore_missing_subchannel = true;
BootSystem(std::move(parameters), nullptr);
});
}
});
bool result = false;
if (Core::GetBoolSettingValue("CDROM", "AllowBootingWithoutSBIFile", false))
{
Host::ConfirmMessageAsync(
"Confirm Unsupported Configuration",
fmt::format(TRANSLATE_FS("System",
"You are attempting to run a libcrypt protected game without an SBI file:\n\n{0}: "
"{1}\n\nThe game will likely not run properly.\n\nPlease check the README for "
"instructions on how to add an SBI file.\n\nDo you wish to continue?"),
s_state.running_game_serial, s_state.running_game_title),
[parameters = std::move(parameters)](bool result) mutable {
if (result)
{
Host::RunOnCoreThread([parameters = std::move(parameters)]() mutable {
parameters.ignore_missing_subchannel = true;
BootSystem(std::move(parameters), nullptr);
});
}
});
result = true;
}
Host::OnSystemStopping();
DestroySystem();
return true;
return result;
}
s_state.exe_override = std::move(exe_override);