From 63b33fd3d27914148aefba3406dd8713c434fb13 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Mon, 13 Apr 2026 20:51:14 -0500 Subject: [PATCH] PowerPC/MMU: Changed mask in DMA_LCToMemory and DMA_MemoryToLC functions to allow for a 256MiB MEM2. Also adjusted maximum value for MEM2 to 256 MiB for Qt and Android UIs. --- .../features/settings/ui/SettingsFragmentPresenter.kt | 2 +- Source/Core/Core/PowerPC/MMU.cpp | 8 ++++---- Source/Core/DolphinQt/Settings/AdvancedPane.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index 4603411c52..fa1b64adef 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -1260,7 +1260,7 @@ class SettingsFragmentPresenter( R.string.main_mem2_size, 0, 64, - 128, + 256, "MB", 1 ) diff --git a/Source/Core/Core/PowerPC/MMU.cpp b/Source/Core/Core/PowerPC/MMU.cpp index 940e93c7ea..b1bed23099 100644 --- a/Source/Core/Core/PowerPC/MMU.cpp +++ b/Source/Core/Core/PowerPC/MMU.cpp @@ -960,7 +960,7 @@ void MMU::DMA_LCToMemory(const u32 mem_address, const u32 cache_address, const u // TODO: This is terribly slow. // TODO: Refactor. // Avatar: The Last Airbender (GC) uses this for videos. - if ((mem_address & 0x0F000000) == 0x08000000) + if ((mem_address & 0x1F000000) == 0x08000000) { for (u32 i = 0; i < 32 * num_blocks; i += 4) { @@ -972,7 +972,7 @@ void MMU::DMA_LCToMemory(const u32 mem_address, const u32 cache_address, const u // No known game uses this; here for completeness. // TODO: Refactor. - if ((mem_address & 0x0F000000) == 0x0C000000) + if ((mem_address & 0x1F000000) == 0x0C000000) { for (u32 i = 0; i < 32 * num_blocks; i += 4) { @@ -990,7 +990,7 @@ void MMU::DMA_MemoryToLC(const u32 cache_address, const u32 mem_address, const u { // No known game uses this; here for completeness. // TODO: Refactor. - if ((mem_address & 0x0F000000) == 0x08000000) + if ((mem_address & 0x1F000000) == 0x08000000) { for (u32 i = 0; i < 32 * num_blocks; i += 4) { @@ -1002,7 +1002,7 @@ void MMU::DMA_MemoryToLC(const u32 cache_address, const u32 mem_address, const u // No known game uses this. // TODO: Refactor. - if ((mem_address & 0x0F000000) == 0x0C000000) + if ((mem_address & 0x1F000000) == 0x0C000000) { for (u32 i = 0; i < 32 * num_blocks; i += 4) { diff --git a/Source/Core/DolphinQt/Settings/AdvancedPane.cpp b/Source/Core/DolphinQt/Settings/AdvancedPane.cpp index ddb47bc767..e8ce3198e5 100644 --- a/Source/Core/DolphinQt/Settings/AdvancedPane.cpp +++ b/Source/Core/DolphinQt/Settings/AdvancedPane.cpp @@ -263,7 +263,7 @@ void AdvancedPane::CreateLayout() mem2_override_slider_layout->setContentsMargins(0, 0, 0, 0); ram_override_layout->addLayout(mem2_override_slider_layout); - m_mem2_override_slider = new ConfigSliderU32(64, 128, Config::MAIN_MEM2_SIZE, 0x100000); + m_mem2_override_slider = new ConfigSliderU32(64, 256, Config::MAIN_MEM2_SIZE, 0x100000); mem2_override_slider_layout->addWidget(m_mem2_override_slider); m_mem2_label =