diff options
author | Zephyron <zephyron@citron-emu.org> | 2025-01-04 17:33:22 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2025-01-04 17:33:22 +1000 |
commit | e11c6c03ec71d9ee0194c3da370aeba98a59c1f9 (patch) | |
tree | b8f36d8074fa1d20671da99059f6633bf168d972 /src/core/hle/kernel | |
parent | 27d662ad0e0297d0bd8e5c99d2e232170c74518d (diff) |
core: Add support for 10GB and 12GB memory configurations
- Add Memory_10Gb and Memory_12Gb to MemoryLayout enum
- Update memory layout settings to support up to 12GB
- Add SMC enums for 10GB and 12GB memory sizes and arrangements
- Increase MainMemorySizeMax from 8GB to 12GB
- Add memory pool size calculations for 10GB and 12GB configurations
- Update UI translations for new memory options
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp | 23 | ||||
-rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/secure_monitor.h | 4 | ||||
-rw-r--r-- | src/core/hle/kernel/k_memory_layout.h | 2 |
3 files changed, 26 insertions, 3 deletions
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp index c51d5a3f3..dfd6a9aee 100644 --- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp +++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp @@ -48,6 +48,10 @@ u32 GetMemorySizeForInit() { return Smc::MemorySize_6GB; case Settings::MemoryLayout::Memory_8Gb: return Smc::MemorySize_8GB; + case Settings::MemoryLayout::Memory_10Gb: + return Smc::MemorySize_10GB; + case Settings::MemoryLayout::Memory_12Gb: + return Smc::MemorySize_12GB; } return Smc::MemorySize_4GB; } @@ -60,6 +64,10 @@ Smc::MemoryArrangement GetMemoryArrangeForInit() { return Smc::MemoryArrangement_6GB; case Settings::MemoryLayout::Memory_8Gb: return Smc::MemoryArrangement_8GB; + case Settings::MemoryLayout::Memory_10Gb: + return Smc::MemoryArrangement_10GB; + case Settings::MemoryLayout::Memory_12Gb: + return Smc::MemoryArrangement_12GB; } return Smc::MemoryArrangement_4GB; } @@ -79,6 +87,10 @@ size_t KSystemControl::Init::GetIntendedMemorySize() { return 6_GiB; case Smc::MemorySize_8GB: return 8_GiB; + case Smc::MemorySize_10GB: + return 10_GiB; + case Smc::MemorySize_12GB: + return 12_GiB; } } @@ -112,8 +124,11 @@ std::size_t KSystemControl::Init::GetApplicationPoolSize() { case Smc::MemoryArrangement_6GBForAppletDev: return 3285_MiB; case Smc::MemoryArrangement_8GB: - // Real kernel sets this to 4916_MiB. We are not debugging applets. return 6547_MiB; + case Smc::MemoryArrangement_10GB: + return 8178_MiB; + case Smc::MemoryArrangement_12GB: + return 9809_MiB; } }(); @@ -137,9 +152,13 @@ size_t KSystemControl::Init::GetAppletPoolSize() { case Smc::MemoryArrangement_6GBForAppletDev: return 2193_MiB; case Smc::MemoryArrangement_8GB: - //! Real kernel sets this to 2193_MiB. We are not debugging applets. + return 562_MiB; + case Smc::MemoryArrangement_10GB: + return 562_MiB; + case Smc::MemoryArrangement_12GB: return 562_MiB; } + }(); // Return (possibly) adjusted size. diff --git a/src/core/hle/kernel/board/nintendo/nx/secure_monitor.h b/src/core/hle/kernel/board/nintendo/nx/secure_monitor.h index 289ab5c0f..d825216c8 100644 --- a/src/core/hle/kernel/board/nintendo/nx/secure_monitor.h +++ b/src/core/hle/kernel/board/nintendo/nx/secure_monitor.h @@ -9,6 +9,8 @@ enum MemorySize { MemorySize_4GB = 0, MemorySize_6GB = 1, MemorySize_8GB = 2, + MemorySize_10GB = 3, + MemorySize_12GB = 4, }; enum MemoryArrangement { @@ -18,6 +20,8 @@ enum MemoryArrangement { MemoryArrangement_6GB = 3, MemoryArrangement_6GBForAppletDev = 4, MemoryArrangement_8GB = 5, + MemoryArrangement_10GB = 6, + MemoryArrangement_12GB = 7, }; } // namespace Kernel::Board::Nintendo::Nx::Smc diff --git a/src/core/hle/kernel/k_memory_layout.h b/src/core/hle/kernel/k_memory_layout.h index 1d3b14616..d21a6b7ae 100644 --- a/src/core/hle/kernel/k_memory_layout.h +++ b/src/core/hle/kernel/k_memory_layout.h @@ -25,7 +25,7 @@ constexpr std::size_t GetMaximumOverheadSize(std::size_t size) { } constexpr std::size_t MainMemorySize = 4_GiB; -constexpr std::size_t MainMemorySizeMax = 8_GiB; +constexpr std::size_t MainMemorySizeMax = 12_GiB; constexpr std::size_t ReservedEarlyDramSize = 384_KiB; constexpr std::size_t DramPhysicalAddress = 0x80000000; |