Android fixes and features

* Jit cache eviction (fixes out of memory errors in some games)

* Low power PPTC

* Fix 'unknown' games displayed when using game folder with subfolders

* Turn off NCE and PPTC by default
This commit is contained in:
KeatonTheBot
2025-06-02 21:47:55 -05:00
parent 3af88ad2e6
commit fda90239bc
58 changed files with 914 additions and 190 deletions
@@ -121,7 +121,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
device.System.KernelContext,
metaLoader,
nacpData,
device.System.EnablePtc,
enablePtc,
modLoadResult.Hash,
true,
programName,
@@ -305,6 +305,13 @@ namespace Ryujinx.HLE.Loaders.Processes
if (string.IsNullOrWhiteSpace(programName))
{
foreach (ApplicationControlProperty.ApplicationTitle nacpTitles in nacpData.Value.Title)
{
if (nacpTitles.Name[0] != 0)
continue;
programName = nacpTitles.NameString.ToString();
}
programName = Array.Find(nacpData.Value.Title.AsReadOnlySpan().ToArray(), x => x.Name[0] != 0).NameString.ToString();
}
@@ -235,7 +235,7 @@ namespace Ryujinx.HLE.Loaders.Processes
ulong programId,
byte programIndex,
byte[] arguments = null,
params IExecutable[] executables)
params ReadOnlySpan<IExecutable> executables)
{
context.Device.System.ServiceTable.WaitServicesReady();
@@ -255,12 +255,17 @@ namespace Ryujinx.HLE.Loaders.Processes
ulong codeStart = ((meta.Flags & 1) != 0 ? 0x8000000UL : 0x200000UL) + CodeStartOffset;
ulong codeSize = 0;
IEnumerable<string> buildIds = executables.Select(e => (e switch
string[] buildIds = new string[executables.Length];
for (int i = 0; i < executables.Length; i++)
{
NsoExecutable nso => Convert.ToHexString(nso.BuildId),
NroExecutable nro => Convert.ToHexString(nro.Header.BuildId),
_ => string.Empty,
}).ToUpper());
buildIds[i] = (executables[i] switch
{
NsoExecutable nso => Convert.ToHexString(nso.BuildId),
NroExecutable nro => Convert.ToHexString(nro.Header.BuildId),
_ => string.Empty
}).ToUpper();
}
NceCpuCodePatch[] nsoPatch = new NceCpuCodePatch[executables.Length];
ulong[] nsoBase = new ulong[executables.Length];