diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-04-04 09:06:59 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-04 14:06:59 +0200 |
| commit | 874540bb5c1c5737bc9b0bfdc96fe1cf12ff164d (patch) | |
| tree | 68582881e7f4965d7e0938020a9f5dd1773f070a /Ryujinx.HLE/MemoryConfiguration.cs | |
| parent | 3bc107d491745a0d1f18e48d8c6c0f74565ae633 (diff) | |
Allow DRAM size to be increased from 4GB to 6GB (#2174)
* Allow DRAM size to be increased from 4GB to 6GB
* Add option on the UI
Diffstat (limited to 'Ryujinx.HLE/MemoryConfiguration.cs')
| -rw-r--r-- | Ryujinx.HLE/MemoryConfiguration.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Ryujinx.HLE/MemoryConfiguration.cs b/Ryujinx.HLE/MemoryConfiguration.cs new file mode 100644 index 00000000..2a59e04f --- /dev/null +++ b/Ryujinx.HLE/MemoryConfiguration.cs @@ -0,0 +1,62 @@ +using Ryujinx.HLE.HOS.Kernel.Common; +using System; + +namespace Ryujinx.HLE +{ + public enum MemoryConfiguration + { + MemoryConfiguration4GB = 0, + MemoryConfiguration4GBAppletDev = 1, + MemoryConfiguration4GBSystemDev = 2, + MemoryConfiguration6GB = 3, + MemoryConfiguration6GBAppletDev = 4, + MemoryConfiguration8GB = 5 + } + + static class MemoryConfigurationExtensions + { + private const ulong Gb = 1024 * 1024 * 1024; + + public static MemoryArrange ToKernelMemoryArrange(this MemoryConfiguration configuration) + { + return configuration switch + { + MemoryConfiguration.MemoryConfiguration4GB => MemoryArrange.MemoryArrange4GB, + MemoryConfiguration.MemoryConfiguration4GBAppletDev => MemoryArrange.MemoryArrange4GBAppletDev, + MemoryConfiguration.MemoryConfiguration4GBSystemDev => MemoryArrange.MemoryArrange4GBSystemDev, + MemoryConfiguration.MemoryConfiguration6GB => MemoryArrange.MemoryArrange6GB, + MemoryConfiguration.MemoryConfiguration6GBAppletDev => MemoryArrange.MemoryArrange6GBAppletDev, + MemoryConfiguration.MemoryConfiguration8GB => MemoryArrange.MemoryArrange8GB, + _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\".") + }; + } + + public static MemorySize ToKernelMemorySize(this MemoryConfiguration configuration) + { + return configuration switch + { + MemoryConfiguration.MemoryConfiguration4GB or + MemoryConfiguration.MemoryConfiguration4GBAppletDev or + MemoryConfiguration.MemoryConfiguration4GBSystemDev => MemorySize.MemorySize4GB, + MemoryConfiguration.MemoryConfiguration6GB or + MemoryConfiguration.MemoryConfiguration6GBAppletDev => MemorySize.MemorySize6GB, + MemoryConfiguration.MemoryConfiguration8GB => MemorySize.MemorySize8GB, + _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\".") + }; + } + + public static ulong ToDramSize(this MemoryConfiguration configuration) + { + return configuration switch + { + MemoryConfiguration.MemoryConfiguration4GB or + MemoryConfiguration.MemoryConfiguration4GBAppletDev or + MemoryConfiguration.MemoryConfiguration4GBSystemDev => 4 * Gb, + MemoryConfiguration.MemoryConfiguration6GB or + MemoryConfiguration.MemoryConfiguration6GBAppletDev => 6 * Gb, + MemoryConfiguration.MemoryConfiguration8GB => 8 * Gb, + _ => throw new AggregateException($"Invalid memory configuration \"{configuration}\".") + }; + } + } +}
\ No newline at end of file |
