From 6904d6a461e44335caadba2e7c8aa766704728d3 Mon Sep 17 00:00:00 2001 From: GreemDev Date: Sun, 4 May 2025 03:26:54 -0500 Subject: [PATCH] fix: Prevent loading the Switch Verification homebrew specifically. Its intended purpose is to be installed on a modded real Switch. It is wholly useless and pointless to use it in the emulator, and this will give those users a hint they might be doing something incorrectly. --- src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs | 7 ++++++- src/Ryujinx/Headless/HeadlessRyujinx.cs | 2 +- src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs index 4c0866531..3d97a8e9f 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoader.cs @@ -9,6 +9,7 @@ using LibHac.Tools.FsSystem.NcaUtils; using Ryujinx.Common; using Ryujinx.Common.Logging; using Ryujinx.Graphics.Gpu; +using Ryujinx.HLE.HOS.SystemState; using Ryujinx.HLE.Loaders.Executables; using Ryujinx.HLE.Loaders.Processes.Extensions; using System; @@ -158,7 +159,7 @@ namespace Ryujinx.HLE.Loaders.Processes return false; } - + public bool LoadNxo(string path) { BlitStruct nacpData = new(1); @@ -195,6 +196,10 @@ namespace Ryujinx.HLE.Loaders.Processes programName = nacpData.Value.Title[(int)_device.System.State.DesiredTitleLanguage].NameString.ToString(); + if ("Switch Verfication" == + nacpData.Value.Title[(int)TitleLanguage.AmericanEnglish].NameString.ToString()) + throw new InvalidOperationException(); + if (string.IsNullOrWhiteSpace(programName)) { programName = Array.Find(nacpData.Value.Title.ItemsRo.ToArray(), x => x.Name[0] != 0).NameString.ToString(); diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs index f346f1f63..cb35fc661 100644 --- a/src/Ryujinx/Headless/HeadlessRyujinx.cs +++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs @@ -489,7 +489,7 @@ namespace Ryujinx.Headless return false; } } - catch (ArgumentOutOfRangeException) + catch { Logger.Error?.Print(LogClass.Application, "The specified file is not supported by Ryujinx."); diff --git a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs index b7321d6c1..8d4b38a81 100644 --- a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs @@ -421,6 +421,10 @@ namespace Ryujinx.Ava.Systems.AppLibrary Read(assetOffset + (int)nacpOffset, (int)nacpSize).AsSpan().CopyTo(controlHolder.ByteSpan); GetApplicationInformation(ref controlHolder.Value, ref application); + + if ("Switch Verification" == controlHolder.Value + .Title[(int)TitleLanguage.AmericanEnglish].NameString.ToString()) + return false; } else {