From 67c0f67be9bd3230a7d3bd1a4fc4baf18006d251 Mon Sep 17 00:00:00 2001 From: Marko Pusljar Date: Wed, 20 Apr 2011 20:38:55 +0000 Subject: [PATCH] small WriteARAM() fix i forgot before git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7476 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Core/Src/DSP/DSPAccelerator.cpp | 2 ++ Source/Core/Core/Src/HW/DSP.cpp | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/Src/DSP/DSPAccelerator.cpp b/Source/Core/Core/Src/DSP/DSPAccelerator.cpp index a45ab15e9d..b1452c249c 100644 --- a/Source/Core/Core/Src/DSP/DSPAccelerator.cpp +++ b/Source/Core/Core/Src/DSP/DSPAccelerator.cpp @@ -101,6 +101,8 @@ void dsp_write_aram_d3(u16 value) { // Zelda ucode writes a bunch of zeros to ARAM through d3 during // initialization. Don't know if it ever does it later, too. + // Pikmin 2 Wii writes non-stop to 0x10008000-0x1000801f (non-zero values too) + // Zelda TP WII writes non-stop to 0x10000000-0x1000001f (non-zero values too) u32 Address = (g_dsp.ifx_regs[DSP_ACCAH] << 16) | g_dsp.ifx_regs[DSP_ACCAL]; switch (g_dsp.ifx_regs[DSP_FORMAT]) { diff --git a/Source/Core/Core/Src/HW/DSP.cpp b/Source/Core/Core/Src/HW/DSP.cpp index 07b2a5e1d3..af267bb5dd 100644 --- a/Source/Core/Core/Src/HW/DSP.cpp +++ b/Source/Core/Core/Src/HW/DSP.cpp @@ -727,7 +727,7 @@ void Do_ARAM_DMA() // (LM) It just means that dsp reads via '0xffdd' on WII can end up in EXRAM or main RAM u8 ReadARAM(u32 _iAddress) { - //NOTICE_LOG(DSPINTERFACE, "ReadARAM 0x%08x (0x%08x)", _iAddress, _iAddress & (0x10000000 | g_ARAM.mask)); + //NOTICE_LOG(DSPINTERFACE, "ReadARAM 0x%08x", _iAddress); if (g_ARAM.wii_mode) return g_ARAM.ptr[(_iAddress & 0x10000000)?(_iAddress & 0x13ffffff):(_iAddress & 0x01ffffff)]; else @@ -736,8 +736,11 @@ u8 ReadARAM(u32 _iAddress) void WriteARAM(u8 value, u32 _uAddress) { - //NOTICE_LOG(DSPINTERFACE, "WriteARAM 0x%08x (0x%08x)", _uAddress, _uAddress & g_ARAM.mask); - g_ARAM.ptr[_uAddress & g_ARAM.mask] = value; + //NOTICE_LOG(DSPINTERFACE, "WriteARAM 0x%08x", _uAddress); + if (g_ARAM.wii_mode) + g_ARAM.ptr[(_uAddress & 0x10000000)?(_uAddress & 0x13ffffff):(_uAddress & 0x01ffffff)] = value; + else + g_ARAM.ptr[_uAddress & g_ARAM.mask] = value; } u8 *GetARAMPtr()