Răsfoiți Sursa

SvcSetHeapSize: match kernel check for invalid size (#374)

This fix games like DK Country
Thomas Guillemard 7 ani în urmă
părinte
comite
b08d889f95
1 a modificat fișierele cu 3 adăugiri și 3 ștergeri
  1. 3 3
      Ryujinx.HLE/HOS/Kernel/SvcMemory.cs

+ 3 - 3
Ryujinx.HLE/HOS/Kernel/SvcMemory.cs

@@ -9,9 +9,9 @@ namespace Ryujinx.HLE.HOS.Kernel
     {
         private void SvcSetHeapSize(AThreadState ThreadState)
         {
-            long Size = (long)ThreadState.X1;
+            ulong Size = ThreadState.X1;
 
-            if ((Size & 0x1fffff) != 0 || Size != (uint)Size)
+            if ((Size & 0xFFFFFFFE001FFFFF) != 0)
             {
                 Device.Log.PrintWarning(LogClass.KernelSvc, $"Heap size 0x{Size:x16} is not aligned!");
 
@@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Kernel
                 return;
             }
 
-            long Result = Process.MemoryManager.TrySetHeapSize(Size, out long Position);
+            long Result = Process.MemoryManager.TrySetHeapSize((long)Size, out long Position);
 
             ThreadState.X0 = (ulong)Result;