From 52d6f2e656c21c3e6693df93a3f09cd2e6a4e40e Mon Sep 17 00:00:00 2001 From: TSRBerry <20988865+TSRBerry@users.noreply.github.com> Date: Wed, 5 Apr 2023 03:34:21 +0200 Subject: [PATCH] hle: Set ProcessResult name from NACP (#4633) * Extract titleName from nacp * Address formatting feedback * Check if the desired language is actually available --- .../Loaders/Processes/ProcessLoaderHelper.cs | 11 ++++++++++- Ryujinx.HLE/Loaders/Processes/ProcessResult.cs | 18 +++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs b/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs index 7176445e58..b802a64287 100644 --- a/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs +++ b/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs @@ -405,7 +405,16 @@ namespace Ryujinx.HLE.Loaders.Processes // Once everything is loaded, we can load cheats. device.Configuration.VirtualFileSystem.ModLoader.LoadCheats(programId, tamperInfo, device.TamperMachine); - return new ProcessResult(metaLoader, applicationControlProperties, diskCacheEnabled, allowCodeMemoryForJit, processContextFactory.DiskCacheLoadState, process.Pid, meta.MainThreadPriority, meta.MainThreadStackSize); + return new ProcessResult( + metaLoader, + applicationControlProperties, + diskCacheEnabled, + allowCodeMemoryForJit, + processContextFactory.DiskCacheLoadState, + process.Pid, + meta.MainThreadPriority, + meta.MainThreadStackSize, + device.System.State.DesiredTitleLanguage); } public static Result LoadIntoMemory(KProcess process, IExecutable image, ulong baseAddress) diff --git a/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs b/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs index 6bbeee1b87..b9596c8fd0 100644 --- a/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs +++ b/Ryujinx.HLE/Loaders/Processes/ProcessResult.cs @@ -2,6 +2,7 @@ using LibHac.Ns; using Ryujinx.Common.Logging; using Ryujinx.Cpu; +using Ryujinx.HLE.HOS.SystemState; using Ryujinx.HLE.Loaders.Processes.Extensions; using Ryujinx.Horizon.Common; @@ -9,7 +10,7 @@ namespace Ryujinx.HLE.Loaders.Processes { public struct ProcessResult { - public static ProcessResult Failed => new(null, new ApplicationControlProperty(), false, false, null, 0, 0, 0); + public static ProcessResult Failed => new(null, new ApplicationControlProperty(), false, false, null, 0, 0, 0, TitleLanguage.AmericanEnglish); private readonly byte _mainThreadPriority; private readonly uint _mainThreadStackSize; @@ -35,7 +36,8 @@ namespace Ryujinx.HLE.Loaders.Processes IDiskCacheLoadState diskCacheLoadState, ulong pid, byte mainThreadPriority, - uint mainThreadStackSize) + uint mainThreadStackSize, + TitleLanguage titleLanguage) { _mainThreadPriority = mainThreadPriority; _mainThreadStackSize = mainThreadStackSize; @@ -50,7 +52,17 @@ namespace Ryujinx.HLE.Loaders.Processes { ulong programId = metaLoader.GetProgramId(); - Name = metaLoader.GetProgramName(); + if (ApplicationControlProperties.Title.ItemsRo.Length > 0) + { + var langIndex = ApplicationControlProperties.Title.ItemsRo.Length > (int)titleLanguage ? (int)titleLanguage : 0; + + Name = ApplicationControlProperties.Title[langIndex].NameString.ToString(); + } + else + { + Name = metaLoader.GetProgramName(); + } + ProgramId = programId; ProgramIdText = $"{programId:x16}"; Is64Bit = metaLoader.IsProgram64Bit();