diff --git a/Source/Core/Core/HW/WII_IPC.cpp b/Source/Core/Core/HW/WII_IPC.cpp index 9e1d086df3..75bc9776ff 100644 --- a/Source/Core/Core/HW/WII_IPC.cpp +++ b/Source/Core/Core/HW/WII_IPC.cpp @@ -60,9 +60,16 @@ enum VERSION = 0x214, + // Memory controller registers + + MEM2_COLSEL = 0xB4210, MEM2_ROWSEL = 0xB4212, + MEM2_BANKSEL = 0xB4214, MEM2_RANKSEL = 0xB4216, + + MEM2_COLMSK = 0xB4218, MEM2_ROWMSK = 0xB421A, + MEM2_BANKMSK = 0xB421C, }; // Indicates which pins are accessible by broadway. Writable by starlet only. @@ -268,9 +275,15 @@ void WiiIPC::RegisterMMIO(MMIO::Mapping* mmio, u32 base) mmio->Register(base | VERSION, MMIO::Constant(0x00000011), MMIO::Nop()); const bool mem2_is_128 = memory.GetExRamSizeReal() == Memory::MEM2_SIZE_NDEV; + + mmio->Register(base | MEM2_COLSEL, MMIO::Constant(6), MMIO::Nop()); mmio->Register(base | MEM2_ROWSEL, MMIO::Constant(4), MMIO::Nop()); + mmio->Register(base | MEM2_BANKSEL, MMIO::Constant(2), MMIO::Nop()); mmio->Register(base | MEM2_RANKSEL, MMIO::Constant(mem2_is_128 ? 1 : 7), MMIO::Nop()); + + mmio->Register(base | MEM2_COLMSK, MMIO::Constant(0x1FF), MMIO::Nop()); mmio->Register(base | MEM2_ROWMSK, MMIO::Constant(0xFFF), MMIO::Nop()); + mmio->Register(base | MEM2_BANKMSK, MMIO::Constant(7), MMIO::Nop()); mmio->Register(base | UNK_180, MMIO::Constant(0), MMIO::Nop()); mmio->Register(base | UNK_1CC, MMIO::Constant(0), MMIO::Nop());