From 4b8a65fd84fcab991f62cf9cfdd8484c2e55501e Mon Sep 17 00:00:00 2001 From: Starlet Date: Fri, 20 Jul 2018 17:53:06 -0400 Subject: [PATCH] Add Npdm parsing into Ryujinx.HLE --- Ryujinx.HLE/OsHle/Horizon.cs | 20 ++++++++++++++++++++ Ryujinx.HLE/OsHle/SystemStateMgr.cs | 3 +++ 2 files changed, 23 insertions(+) diff --git a/Ryujinx.HLE/OsHle/Horizon.cs b/Ryujinx.HLE/OsHle/Horizon.cs index 70ae24be32..4c117fa478 100644 --- a/Ryujinx.HLE/OsHle/Horizon.cs +++ b/Ryujinx.HLE/OsHle/Horizon.cs @@ -1,4 +1,5 @@ using Ryujinx.HLE.Loaders.Executables; +using Ryujinx.HLE.Loaders.Npdm; using Ryujinx.HLE.Logging; using Ryujinx.HLE.OsHle.Handles; using System; @@ -76,6 +77,25 @@ namespace Ryujinx.HLE.OsHle } } + void LoadNpdm(string FileName) + { + string File = Directory.GetFiles(ExeFsDir, FileName)[0]; + + Ns.Log.PrintInfo(LogClass.Loader, "Loading Title Metadata..."); + + using (FileStream Input = new FileStream(File, FileMode.Open)) + { + SystemStateMgr.TitleMetadata = new Npdm(Input); + } + } + + LoadNpdm("*.npdm"); + + if (!SystemStateMgr.TitleMetadata.Is64Bits) + { + throw new Exception("32-bit titles are unsupported!"); + } + LoadNso("rtld"); MainProcess.SetEmptyArgs(); diff --git a/Ryujinx.HLE/OsHle/SystemStateMgr.cs b/Ryujinx.HLE/OsHle/SystemStateMgr.cs index e78082c45a..32c88994b9 100644 --- a/Ryujinx.HLE/OsHle/SystemStateMgr.cs +++ b/Ryujinx.HLE/OsHle/SystemStateMgr.cs @@ -1,9 +1,12 @@ +using Ryujinx.HLE.Loaders.Npdm; using System; namespace Ryujinx.HLE.OsHle { public class SystemStateMgr { + internal static Npdm TitleMetadata { get; set; } + internal static string[] LanguageCodes = new string[] { "ja",