|
|
|
@ -802,10 +802,6 @@ void GMainWindow::ConnectMenuEvents() {
|
|
|
|
|
connect(ui.action_Load_Folder, &QAction::triggered, this, &GMainWindow::OnMenuLoadFolder);
|
|
|
|
|
connect(ui.action_Install_File_NAND, &QAction::triggered, this,
|
|
|
|
|
&GMainWindow::OnMenuInstallToNAND);
|
|
|
|
|
connect(ui.action_Select_NAND_Directory, &QAction::triggered, this,
|
|
|
|
|
[this] { OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget::NAND); });
|
|
|
|
|
connect(ui.action_Select_SDMC_Directory, &QAction::triggered, this,
|
|
|
|
|
[this] { OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget::SDMC); });
|
|
|
|
|
connect(ui.action_Exit, &QAction::triggered, this, &QMainWindow::close);
|
|
|
|
|
connect(ui.action_Load_Amiibo, &QAction::triggered, this, &GMainWindow::OnLoadAmiibo);
|
|
|
|
|
|
|
|
|
@ -940,16 +936,18 @@ bool GMainWindow::LoadROM(const QString& filename) {
|
|
|
|
|
default:
|
|
|
|
|
if (static_cast<u32>(result) >
|
|
|
|
|
static_cast<u32>(Core::System::ResultStatus::ErrorLoader)) {
|
|
|
|
|
LOG_CRITICAL(Frontend, "Failed to load ROM!");
|
|
|
|
|
const u16 loader_id = static_cast<u16>(Core::System::ResultStatus::ErrorLoader);
|
|
|
|
|
const u16 error_id = static_cast<u16>(result) - loader_id;
|
|
|
|
|
const std::string error_code = fmt::format("({:04X}-{:04X})", loader_id, error_id);
|
|
|
|
|
LOG_CRITICAL(Frontend, "Failed to load ROM! {}", error_code);
|
|
|
|
|
QMessageBox::critical(
|
|
|
|
|
this, tr("Error while loading ROM!"),
|
|
|
|
|
this,
|
|
|
|
|
tr("Error while loading ROM! ").append(QString::fromStdString(error_code)),
|
|
|
|
|
QString::fromStdString(fmt::format(
|
|
|
|
|
"While attempting to load the ROM requested, an error occured. Please "
|
|
|
|
|
"refer to the yuzu wiki for more information or the yuzu discord for "
|
|
|
|
|
"additional help.\n\nError Code: {:04X}-{:04X}\nError Description: {}",
|
|
|
|
|
loader_id, error_id, static_cast<Loader::ResultStatus>(error_id))));
|
|
|
|
|
"{}<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the "
|
|
|
|
|
"yuzu quickstart guide</a> to redump your files.<br>You can refer "
|
|
|
|
|
"to the yuzu wiki</a> or the yuzu Discord</a> for help.",
|
|
|
|
|
static_cast<Loader::ResultStatus>(error_id))));
|
|
|
|
|
} else {
|
|
|
|
|
QMessageBox::critical(
|
|
|
|
|
this, tr("Error while loading ROM!"),
|
|
|
|
@ -1663,28 +1661,6 @@ void GMainWindow::OnMenuInstallToNAND() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GMainWindow::OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget target) {
|
|
|
|
|
const auto res = QMessageBox::information(
|
|
|
|
|
this, tr("Changing Emulated Directory"),
|
|
|
|
|
tr("You are about to change the emulated %1 directory of the system. Please note "
|
|
|
|
|
"that this does not also move the contents of the previous directory to the "
|
|
|
|
|
"new one and you will have to do that yourself.")
|
|
|
|
|
.arg(target == EmulatedDirectoryTarget::SDMC ? tr("SD card") : tr("NAND")),
|
|
|
|
|
QMessageBox::StandardButtons{QMessageBox::Ok, QMessageBox::Cancel});
|
|
|
|
|
|
|
|
|
|
if (res == QMessageBox::Cancel)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
QString dir_path = QFileDialog::getExistingDirectory(this, tr("Select Directory"));
|
|
|
|
|
if (!dir_path.isEmpty()) {
|
|
|
|
|
FileUtil::GetUserPath(target == EmulatedDirectoryTarget::SDMC ? FileUtil::UserPath::SDMCDir
|
|
|
|
|
: FileUtil::UserPath::NANDDir,
|
|
|
|
|
dir_path.toStdString());
|
|
|
|
|
Core::System::GetInstance().GetFileSystemController().CreateFactories(*vfs);
|
|
|
|
|
game_list->PopulateAsync(UISettings::values.game_dirs);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GMainWindow::OnMenuRecentFile() {
|
|
|
|
|
QAction* action = qobject_cast<QAction*>(sender());
|
|
|
|
|
assert(action);
|
|
|
|
@ -2095,27 +2071,25 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
|
|
|
|
|
|
|
|
|
|
QString errors;
|
|
|
|
|
if (!pdm.HasFuses()) {
|
|
|
|
|
errors += tr("- Missing fuses - Cannot derive SBK\n");
|
|
|
|
|
errors += tr("Missing fuses");
|
|
|
|
|
}
|
|
|
|
|
if (!pdm.HasBoot0()) {
|
|
|
|
|
errors += tr("- Missing BOOT0 - Cannot derive master keys\n");
|
|
|
|
|
errors += tr(" - Missing BOOT0");
|
|
|
|
|
}
|
|
|
|
|
if (!pdm.HasPackage2()) {
|
|
|
|
|
errors += tr("- Missing BCPKG2-1-Normal-Main - Cannot derive general keys\n");
|
|
|
|
|
errors += tr(" - Missing BCPKG2-1-Normal-Main");
|
|
|
|
|
}
|
|
|
|
|
if (!pdm.HasProdInfo()) {
|
|
|
|
|
errors += tr("- Missing PRODINFO - Cannot derive title keys\n");
|
|
|
|
|
errors += tr(" - Missing PRODINFO");
|
|
|
|
|
}
|
|
|
|
|
if (!errors.isEmpty()) {
|
|
|
|
|
QMessageBox::warning(
|
|
|
|
|
this, tr("Warning Missing Derivation Components"),
|
|
|
|
|
tr("The following are missing from your configuration that may hinder key "
|
|
|
|
|
"derivation. It will be attempted but may not complete.<br><br>") +
|
|
|
|
|
errors +
|
|
|
|
|
tr("<br><br>You can get all of these and dump all of your games easily by "
|
|
|
|
|
"following <a href='https://yuzu-emu.org/help/quickstart/'>the "
|
|
|
|
|
"quickstart guide</a>. Alternatively, you can use another method of dumping "
|
|
|
|
|
"to obtain all of your keys."));
|
|
|
|
|
this, tr("Derivation Components Missing"),
|
|
|
|
|
tr("Components are missing that may hinder key derivation from completing. "
|
|
|
|
|
"<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu "
|
|
|
|
|
"quickstart guide</a> to get all your keys and "
|
|
|
|
|
"games.<br><br><small>(%1)</small>")
|
|
|
|
|
.arg(errors));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QProgressDialog prog;
|
|
|
|
|