diff options
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 |
