diff options
| author | Scott Mansell <phiren@gmail.com> | 2014-09-11 21:02:45 +1200 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-01-24 17:24:40 +1300 |
| commit | fe28d1476a671145697dd056b2d7b03257e45d8c (patch) | |
| tree | 518af70c0346830cdc1919a9385ff89231c3b483 /Source/Core | |
| parent | f1a4b98d36bedc4c56c409a93c94ba81a1bbefaa (diff) | |
Make the IsMMIOAddress function easier to read, add tests.
This also makes IsMMIOAddress more restrictive.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/MMIO.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Source/Core/Core/HW/MMIO.h b/Source/Core/Core/HW/MMIO.h index 10bba4a6c8..0a4a1a5d04 100644 --- a/Source/Core/Core/HW/MMIO.h +++ b/Source/Core/Core/HW/MMIO.h @@ -9,6 +9,7 @@ #include <type_traits> #include "Common/Common.h" +#include "Core/ConfigManager.h" #include "Core/HW/MMIOHandlers.h" namespace MMIO @@ -40,8 +41,18 @@ const u32 NUM_MMIOS = NUM_BLOCKS * BLOCK_SIZE; // interface. inline bool IsMMIOAddress(u32 address) { - return ((address & 0xFE7F0000) == 0xCC000000) && - ((address & 0x0000FFFF) != 0x00008000); + if (address == 0xCC008000) + return false; // WG Pipe + if ((address & 0xFFFF0000) == 0xCC000000) + return true; // GameCube MMIOs + + if(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) + { + return ((address & 0xFFFF0000) == 0xCD000000) || // Wii MMIOs + ((address & 0xFFFF0000) == 0xCD800000); // Mirror of Wii MMIOs + } + + return false; } // Compute the internal unique ID for a given MMIO address. This ID is computed |
