diff options
| author | Ac_K <Acoustik666@gmail.com> | 2018-02-22 01:51:17 +0100 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-02-21 21:51:17 -0300 |
| commit | 224211367f52cf514f0608d69056e84a3ef37ff5 (patch) | |
| tree | 9c8658f1dd3224dc7d004075514a8cd566f69e34 /Ryujinx.Core/OsHle/Svc/SvcSystem.cs | |
| parent | b2f733da7839ff8ba7a70a529cb9eb3eea9f0af6 (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.cs | 64 |
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 |
