aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2018-02-22 01:51:17 +0100
committergdkchan <gab.dark.100@gmail.com>2018-02-21 21:51:17 -0300
commit224211367f52cf514f0608d69056e84a3ef37ff5 (patch)
tree9c8658f1dd3224dc7d004075514a8cd566f69e34 /Ryujinx.Core/OsHle/Svc/SvcSystem.cs
parentb2f733da7839ff8ba7a70a529cb9eb3eea9f0af6 (diff)
Initiale hbmenu.nro support (#32)
* Initiale hbmenu.nro support Implement missing SetScreenShotPermission object. Implement missing IsCurrentProcessBeingDebugged in SVC. Add a Extension variable to Executable. Add basic support of hbmenu.nro. * Homebrew.cs correction
Diffstat (limited to 'Ryujinx.Core/OsHle/Svc/SvcSystem.cs')
-rw-r--r--Ryujinx.Core/OsHle/Svc/SvcSystem.cs64
1 files changed, 35 insertions, 29 deletions
diff --git a/Ryujinx.Core/OsHle/Svc/SvcSystem.cs b/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
index 40369b99..f33d2ac8 100644
--- a/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
+++ b/Ryujinx.Core/OsHle/Svc/SvcSystem.cs
@@ -161,17 +161,18 @@ namespace Ryujinx.Core.OsHle.Svc
switch (InfoType)
{
- case 2: ThreadState.X1 = GetMapRegionBaseAddr(); break;
- case 3: ThreadState.X1 = GetMapRegionSize(); break;
- case 4: ThreadState.X1 = GetHeapRegionBaseAddr(); break;
- case 5: ThreadState.X1 = GetHeapRegionSize(); break;
- case 6: ThreadState.X1 = GetTotalMem(); break;
- case 7: ThreadState.X1 = GetUsedMem(); break;
- case 11: ThreadState.X1 = GetRnd64(); break;
- case 12: ThreadState.X1 = GetAddrSpaceBaseAddr(); break;
- case 13: ThreadState.X1 = GetAddrSpaceSize(); break;
- case 14: ThreadState.X1 = GetMapRegionBaseAddr(); break;
- case 15: ThreadState.X1 = GetMapRegionSize(); break;
+ case 2: ThreadState.X1 = GetMapRegionBaseAddr(); break;
+ case 3: ThreadState.X1 = GetMapRegionSize(); break;
+ case 4: ThreadState.X1 = GetHeapRegionBaseAddr(); break;
+ case 5: ThreadState.X1 = GetHeapRegionSize(); break;
+ case 6: ThreadState.X1 = GetTotalMem(); break;
+ case 7: ThreadState.X1 = GetUsedMem(); break;
+ case 8: ThreadState.X1 = IsCurrentProcessBeingDebugged(); break;
+ case 11: ThreadState.X1 = GetRnd64(); break;
+ case 12: ThreadState.X1 = GetAddrSpaceBaseAddr(); break;
+ case 13: ThreadState.X1 = GetAddrSpaceSize(); break;
+ case 14: ThreadState.X1 = GetMapRegionBaseAddr(); break;
+ case 15: ThreadState.X1 = GetMapRegionSize(); break;
default: throw new NotImplementedException($"SvcGetInfo: {InfoType} {Handle} {InfoId}");
}
@@ -179,49 +180,54 @@ namespace Ryujinx.Core.OsHle.Svc
ThreadState.X0 = (int)SvcResult.Success;
}
- private ulong GetTotalMem()
+ private ulong GetMapRegionBaseAddr()
{
- return (ulong)Memory.Manager.GetTotalMemorySize();
+ return 0x80000000;
}
- private ulong GetUsedMem()
+ private ulong GetMapRegionSize()
{
- return (ulong)Memory.Manager.GetUsedMemorySize();
+ return 0x40000000;
}
- private ulong GetRnd64()
+ private ulong GetHeapRegionBaseAddr()
{
- return (ulong)Rng.Next() + ((ulong)Rng.Next() << 32);
+ return GetMapRegionBaseAddr() + GetMapRegionSize();
}
- private ulong GetAddrSpaceBaseAddr()
+ private ulong GetHeapRegionSize()
{
- return 0x08000000;
+ return 0x40000000;
}
- private ulong GetAddrSpaceSize()
+ private ulong GetTotalMem()
{
- return AMemoryMgr.AddrSize - GetAddrSpaceBaseAddr();
+ return (ulong)Memory.Manager.GetTotalMemorySize();
}
- private ulong GetMapRegionBaseAddr()
+ private ulong GetUsedMem()
{
- return 0x80000000;
+ return (ulong)Memory.Manager.GetUsedMemorySize();
}
- private ulong GetMapRegionSize()
+ private ulong IsCurrentProcessBeingDebugged()
{
- return 0x40000000;
+ return (ulong)0;
}
- private ulong GetHeapRegionBaseAddr()
+ private ulong GetRnd64()
{
- return GetMapRegionBaseAddr() + GetMapRegionSize();
+ return (ulong)Rng.Next() + ((ulong)Rng.Next() << 32);
}
- private ulong GetHeapRegionSize()
+ private ulong GetAddrSpaceBaseAddr()
{
- return 0x40000000;
+ return 0x08000000;
+ }
+
+ private ulong GetAddrSpaceSize()
+ {
+ return AMemoryMgr.AddrSize - GetAddrSpaceBaseAddr();
}
}
} \ No newline at end of file