diff --git a/src/common/settings.h b/src/common/settings.h index 990a2b5b1e..c08bdf55a1 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -628,6 +628,8 @@ struct Values { linkage, "Eden", "device_name", Category::System, Specialization::Default, true, true}; SwitchableSetting disable_nca_verification{linkage, true, "disable_nca_verification", Category::System, Specialization::Default}; + SwitchableSetting hide_nca_verification_popup{ + linkage, false, "hide_nca_verification_popup", Category::System, Specialization::Default}; Setting current_user{linkage, 0, "current_user", Category::System}; diff --git a/src/yuzu/configuration/shared_translation.cpp b/src/yuzu/configuration/shared_translation.cpp index b5196e529d..524c304746 100644 --- a/src/yuzu/configuration/shared_translation.cpp +++ b/src/yuzu/configuration/shared_translation.cpp @@ -414,6 +414,8 @@ std::unique_ptr InitializeTranslations(QWidget* parent) "\nThis may improve loading speed but risks data corruption or invalid files going " "undetected.\n" "Is necessary to make games and updates work that needs firmware 20+.")); + INSERT(Settings, hide_nca_verification_popup, tr("Hide NCA Verification Popup"), + tr("Hides the NCA verifcation warning popup on startup.")); // Controls diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 4c6b176c56..24c34a972c 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -553,6 +553,8 @@ GMainWindow::GMainWindow(bool has_broken_vulkan) // Gen keys if necessary OnCheckFirmwareDecryption(); + OnCheckNcaVerification(); + game_list->LoadCompatibilityList(); // force reload on first load to ensure add-ons get updated game_list->PopulateAsync(UISettings::values.game_dirs, false); @@ -5265,6 +5267,36 @@ void GMainWindow::OnCheckFirmwareDecryption() { UpdateMenuState(); } +void GMainWindow::OnCheckNcaVerification() { + if (!Settings::values.disable_nca_verification.GetValue()) + return; + + const bool currently_hidden = Settings::values.hide_nca_verification_popup.GetValue(); + LOG_INFO(Frontend, "NCA Verification is disabled. Popup State={}", currently_hidden); + if (currently_hidden) + return; + + QMessageBox msgbox(this); + msgbox.setWindowTitle(tr("NCA Verification Disabled")); + msgbox.setText(tr("NCA Verification is now disabled. This feature is required to run new " + "games and updates. Please ensure you are loading trusted NCA files into " + "the emulator, or re-enable verification in Eden's Settings if unsure.")); + msgbox.setIcon(QMessageBox::Warning); + msgbox.setStandardButtons(QMessageBox::Ok); + msgbox.setDefaultButton(QMessageBox::Ok); + + QCheckBox* cb = new QCheckBox(tr("Don't show this message again"), &msgbox); + cb->setChecked(currently_hidden); + msgbox.setCheckBox(cb); + + msgbox.exec(); + + const bool hide = cb->isChecked(); + if (hide != currently_hidden) { + Settings::values.hide_nca_verification_popup.SetValue(hide); + } +} + bool GMainWindow::CheckFirmwarePresence() { return FirmwareManager::CheckFirmwarePresence(*system.get()); } @@ -5285,7 +5317,7 @@ void GMainWindow::SetFirmwareVersion() { const std::string display_version(firmware_data.display_version.data()); const std::string display_title(firmware_data.display_title.data()); - LOG_INFO(Frontend, "Installed firmware: {}", display_title); + LOG_INFO(Frontend, "Installed firmware: {}", display_version); firmware_label->setText(QString::fromStdString(display_version)); firmware_label->setToolTip(QString::fromStdString(display_title)); diff --git a/src/yuzu/main.h b/src/yuzu/main.h index b1c5669a41..a1dc9d9710 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -424,6 +424,7 @@ private slots: void OnCreateHomeMenuShortcut(GameListShortcutTarget target); void OnCaptureScreenshot(); void OnCheckFirmwareDecryption(); + void OnCheckNcaVerification(); void OnLanguageChanged(const QString& locale); void OnMouseActivity(); bool OnShutdownBegin();