From 81807e3f2cac43ad89b69fa1f77fcb3c85c0da53 Mon Sep 17 00:00:00 2001 From: Marko Pusljar Date: Wed, 27 Jul 2011 23:17:45 +0000 Subject: [PATCH] dsphle - fix for 7686 git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7687 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp | 13 ++++++------- Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h | 3 +-- Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp | 4 ++-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp index 3083fea1a4..8c88217494 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp @@ -27,17 +27,16 @@ #include "UCode_AX.h" #include "UCode_AX_Voice.h" -CUCode_AX::CUCode_AX(DSPHLE *dsp_hle) +CUCode_AX::CUCode_AX(DSPHLE *dsp_hle, u32 l_CRC) : IUCode(dsp_hle) , m_addressPBs(0xFFFFFFFF) + , _CRC(l_CRC) { // we got loaded m_rMailHandler.PushMail(DSP_INIT); templbuffer = new int[1024 * 1024]; temprbuffer = new int[1024 * 1024]; - - mptHack = _CRC == 0x3389a79e; } CUCode_AX::~CUCode_AX() @@ -174,11 +173,11 @@ void CUCode_AX::MixAdd(short* _pBuffer, int _iSize) if (!ReadPB(blockAddr, PB)) break; - if (!mptHack) - { - ProcessUpdates(PB); + ProcessUpdates(PB); + + if (_CRC != 0x3389a79e) VoiceHacks(PB); - } + MixAddVoice(PB, templbuffer, temprbuffer, _iSize); if (!WritePB(blockAddr, PB)) diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h index 4007cadd9a..6386e3ce6a 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h @@ -29,7 +29,7 @@ enum class CUCode_AX : public IUCode { public: - CUCode_AX(DSPHLE *dsp_hle); + CUCode_AX(DSPHLE *dsp_hle, u32 _CRC); virtual ~CUCode_AX(); void HandleMail(u32 _uMail); @@ -42,7 +42,6 @@ public: u32 PBaddr[8]; //2 needed for MP2 u32 m_addressPBs; u32 _CRC; - bool mptHack; private: enum diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp index 556ac2d828..c982b97f51 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp @@ -57,7 +57,7 @@ IUCode* UCodeFactory(u32 _CRC, DSPHLE *dsp_hle, bool bWii) case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080 case 0x3389a79e: // MP1/MP2 Wii (Metroid Prime Trilogy) INFO_LOG(DSPHLE, "CRC %08x: AX ucode chosen", _CRC); - return new CUCode_AX(dsp_hle); + return new CUCode_AX(dsp_hle, _CRC); case 0x6ba3b3ea: // IPL - PAL case 0x24b22038: // IPL - NTSC/NTSC-JAP @@ -101,7 +101,7 @@ IUCode* UCodeFactory(u32 _CRC, DSPHLE *dsp_hle, bool bWii) else { PanicAlert("DSPHLE: Unknown ucode (CRC = %08x) - forcing AX.\n\nTry LLE emulator if this is homebrew.", _CRC); - return new CUCode_AX(dsp_hle); + return new CUCode_AX(dsp_hle, _CRC); } }