Explorar o código

Allow NRO files to skip FW and keys' presence checks (#11)

doing an old suggestion from the now-deleted "emulator-suggestions" channel on the discord
Co-authored-by: nullequal <nullequal@noreply.localhost>
Co-committed-by: nullequal <nullequal@noreply.localhost>
nullequal %!s(int64=2) %!d(string=hai) anos
pai
achega
15ca12c0ec
Modificáronse 1 ficheiros con 14 adicións e 11 borrados
  1. 14 11
      src/suyu/main.cpp

+ 14 - 11
src/suyu/main.cpp

@@ -1747,18 +1747,21 @@ void GMainWindow::AllowOSSleep() {
 }
 
 bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletParameters params) {
-    if (!CheckFirmwarePresence()) {
-        QMessageBox::critical(this, tr("Component Missing"), tr("Missing Firmware."));
-        return false;
-    }
+    if (Loader::IdentifyType(Core::GetGameFileFromPath(vfs, filename.toStdString())) !=
+        Loader::FileType::NRO) {
+        if (!CheckFirmwarePresence()) {
+            QMessageBox::critical(this, tr("Component Missing"), tr("Missing Firmware."));
+            return false;
+        }
 
-    if (!ContentManager::AreKeysPresent()) {
-        QMessageBox::warning(this, tr("Derivation Components Missing"),
-                             tr("Encryption keys are missing. "
-                                "In order to use this emulator, "
-                                "you need to provide your own encryption keys "
-                                "in order to play them."));
-        return false;
+        if (!ContentManager::AreKeysPresent()) {
+            QMessageBox::warning(this, tr("Derivation Components Missing"),
+                                tr("Encryption keys are missing. "
+                                    "In order to use this emulator, "
+                                    "you need to provide your own encryption keys "
+                                    "in order to play them."));
+            return false;
+        }
     }
 
     // Shutdown previous session if the emu thread is still active...