|
@@ -5,6 +5,7 @@ using Ryujinx.Cpu;
|
|
|
using Ryujinx.HLE.HOS.SystemState;
|
|
using Ryujinx.HLE.HOS.SystemState;
|
|
|
using Ryujinx.HLE.Loaders.Processes.Extensions;
|
|
using Ryujinx.HLE.Loaders.Processes.Extensions;
|
|
|
using Ryujinx.Horizon.Common;
|
|
using Ryujinx.Horizon.Common;
|
|
|
|
|
+using System.Linq;
|
|
|
|
|
|
|
|
namespace Ryujinx.HLE.Loaders.Processes
|
|
namespace Ryujinx.HLE.Loaders.Processes
|
|
|
{
|
|
{
|
|
@@ -21,8 +22,9 @@ namespace Ryujinx.HLE.Loaders.Processes
|
|
|
public readonly ApplicationControlProperty ApplicationControlProperties;
|
|
public readonly ApplicationControlProperty ApplicationControlProperties;
|
|
|
|
|
|
|
|
public readonly ulong ProcessId;
|
|
public readonly ulong ProcessId;
|
|
|
- public string Name;
|
|
|
|
|
- public ulong ProgramId;
|
|
|
|
|
|
|
+ public readonly string Name;
|
|
|
|
|
+ public readonly string DisplayVersion;
|
|
|
|
|
+ public readonly ulong ProgramId;
|
|
|
public readonly string ProgramIdText;
|
|
public readonly string ProgramIdText;
|
|
|
public readonly bool Is64Bit;
|
|
public readonly bool Is64Bit;
|
|
|
public readonly bool DiskCacheEnabled;
|
|
public readonly bool DiskCacheEnabled;
|
|
@@ -52,20 +54,17 @@ namespace Ryujinx.HLE.Loaders.Processes
|
|
|
{
|
|
{
|
|
|
ulong programId = metaLoader.GetProgramId();
|
|
ulong programId = metaLoader.GetProgramId();
|
|
|
|
|
|
|
|
- if (ApplicationControlProperties.Title.ItemsRo.Length > 0)
|
|
|
|
|
- {
|
|
|
|
|
- var langIndex = ApplicationControlProperties.Title.ItemsRo.Length > (int)titleLanguage ? (int)titleLanguage : 0;
|
|
|
|
|
|
|
+ Name = ApplicationControlProperties.Title[(int)titleLanguage].NameString.ToString();
|
|
|
|
|
|
|
|
- Name = ApplicationControlProperties.Title[langIndex].NameString.ToString();
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
|
|
+ if (string.IsNullOrWhiteSpace(Name))
|
|
|
{
|
|
{
|
|
|
- Name = metaLoader.GetProgramName();
|
|
|
|
|
|
|
+ Name = ApplicationControlProperties.Title.ItemsRo.ToArray().FirstOrDefault(x => x.Name[0] != 0).NameString.ToString();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ProgramId = programId;
|
|
|
|
|
- ProgramIdText = $"{programId:x16}";
|
|
|
|
|
- Is64Bit = metaLoader.IsProgram64Bit();
|
|
|
|
|
|
|
+ DisplayVersion = ApplicationControlProperties.DisplayVersionString.ToString();
|
|
|
|
|
+ ProgramId = programId;
|
|
|
|
|
+ ProgramIdText = $"{programId:x16}";
|
|
|
|
|
+ Is64Bit = metaLoader.IsProgram64Bit();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
DiskCacheEnabled = diskCacheEnabled;
|
|
DiskCacheEnabled = diskCacheEnabled;
|
|
@@ -85,20 +84,11 @@ namespace Ryujinx.HLE.Loaders.Processes
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// TODO: LibHac npdm currently doesn't support version field.
|
|
// TODO: LibHac npdm currently doesn't support version field.
|
|
|
- string version;
|
|
|
|
|
-
|
|
|
|
|
- if (ProgramId > 0x0100000000007FFF)
|
|
|
|
|
- {
|
|
|
|
|
- version = ApplicationControlProperties.DisplayVersionString.ToString();
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- version = device.System.ContentManager.GetCurrentFirmwareVersion().VersionString;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ string version = ProgramId > 0x0100000000007FFF ? DisplayVersion : device.System.ContentManager.GetCurrentFirmwareVersion()?.VersionString ?? "?";
|
|
|
|
|
|
|
|
Logger.Info?.Print(LogClass.Loader, $"Application Loaded: {Name} v{version} [{ProgramIdText}] [{(Is64Bit ? "64-bit" : "32-bit")}]");
|
|
Logger.Info?.Print(LogClass.Loader, $"Application Loaded: {Name} v{version} [{ProgramIdText}] [{(Is64Bit ? "64-bit" : "32-bit")}]");
|
|
|
|
|
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+}
|