summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2025-01-04 17:33:22 +1000
committerZephyron <zephyron@citron-emu.org>2025-01-04 17:33:22 +1000
commite11c6c03ec71d9ee0194c3da370aeba98a59c1f9 (patch)
treeb8f36d8074fa1d20671da99059f6633bf168d972 /src/core
parent27d662ad0e0297d0bd8e5c99d2e232170c74518d (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')
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp23
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/secure_monitor.h4
-rw-r--r--src/core/hle/kernel/k_memory_layout.h2
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;