(view as text)
diff --git a/Source/Core/Core/HW/Memmap.cpp b/Source/Core/Core/HW/Memmap.cpp
index ca57d24..81943f2 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 mirror_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, mirror_base | 0x0000);
+	g_video_backend->RegisterPEMMIO(mmio, mirror_base | 0x1000);
+	VideoInterface::RegisterMMIO(mmio, mirror_base | 0x2000);
+	ProcessorInterface::RegisterMMIO(mmio, mirror_base | 0x3000);
+	MemoryInterface::RegisterMMIO(mmio, mirror_base | 0x4000);
+	DSP::RegisterMMIO(mmio, mirror_base | 0x5000);
+	DVDInterface::RegisterMMIO(mmio, mirror_base | 0x6000);
+	SerialInterface::RegisterMMIO(mmio, mirror_base | 0x6400);
+	ExpansionInterface::RegisterMMIO(mmio, mirror_base | 0x6800);
+	AudioInterface::RegisterMMIO(mmio, mirror_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);
@@ -155,7 +161,7 @@ void Init()
 	if (wii)
 		InitMMIOWii(mmio_mapping);
 	else
-		InitMMIO(mmio_mapping);
+		InitMMIOGC(mmio_mapping);
 
 	INFO_LOG(MEMMAP, "Memory system initialized. RAM at %p (mirrors at 0 @ %p, 0x80000000 @ %p , 0xC0000000 @ %p)",
 		m_pRAM, m_pPhysicalRAM, m_pVirtualCachedRAM, m_pVirtualUncachedRAM);