(view as text)
diff --git a/Source/Core/Core/HW/Memmap.cpp b/Source/Core/Core/HW/Memmap.cpp
index ca57d24..45e091e 100644
--- a/Source/Core/Core/HW/Memmap.cpp
+++ b/Source/Core/Core/HW/Memmap.cpp
@@ -86,23 +86,29 @@ u8 *m_pVirtualFakeVMEM;
// MMIO mapping object.
MMIO::Mapping* mmio_mapping;
-void InitMMIO(MMIO::Mapping* mmio)
+static void InitMMIOMirror(MMIO::Mapping* mmio, u32 base)
{
- g_video_backend->RegisterCPMMIO(mmio, 0xCC000000);
- g_video_backend->RegisterPEMMIO(mmio, 0xCC001000);
- VideoInterface::RegisterMMIO(mmio, 0xCC002000);
- ProcessorInterface::RegisterMMIO(mmio, 0xCC003000);
- MemoryInterface::RegisterMMIO(mmio, 0xCC004000);
- DSP::RegisterMMIO(mmio, 0xCC005000);
- DVDInterface::RegisterMMIO(mmio, 0xCC006000);
- SerialInterface::RegisterMMIO(mmio, 0xCC006400);
- ExpansionInterface::RegisterMMIO(mmio, 0xCC006800);
- AudioInterface::RegisterMMIO(mmio, 0xCC006C00);
+ g_video_backend->RegisterCPMMIO(mmio, base | 0x0000);
+ g_video_backend->RegisterPEMMIO(mmio, base | 0x1000);
+ VideoInterface::RegisterMMIO(mmio, base | 0x2000);
+ ProcessorInterface::RegisterMMIO(mmio, base | 0x3000);
+ MemoryInterface::RegisterMMIO(mmio, base | 0x4000);
+ DSP::RegisterMMIO(mmio, base | 0x5000);
+ DVDInterface::RegisterMMIO(mmio, base | 0x6000);
+ SerialInterface::RegisterMMIO(mmio, base | 0x6400);
+ ExpansionInterface::RegisterMMIO(mmio, base | 0x6800);
+ AudioInterface::RegisterMMIO(mmio, base | 0x6C00);
+}
+
+void InitMMIOGC(MMIO::Mapping* mmio)
+{
+ InitMMIOMirror(mmio, 0xCC000000);
+ InitMMIOMirror(mmio, 0xCD000000);
}
void InitMMIOWii(MMIO::Mapping* mmio)
{
- InitMMIO(mmio);
+ InitMMIOMirror(mmio, 0xCC000000);
WII_IPCInterface::RegisterMMIO(mmio, 0xCD000000);
DVDInterface::RegisterMMIO(mmio, 0xCD006000);