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);