dsphle - fix for 7686

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7687 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Marko Pusljar 2011-07-27 23:17:45 +00:00
parent b12631f94c
commit 81807e3f2c
3 changed files with 9 additions and 11 deletions

View file

@ -27,17 +27,16 @@
#include "UCode_AX.h" #include "UCode_AX.h"
#include "UCode_AX_Voice.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) : IUCode(dsp_hle)
, m_addressPBs(0xFFFFFFFF) , m_addressPBs(0xFFFFFFFF)
, _CRC(l_CRC)
{ {
// we got loaded // we got loaded
m_rMailHandler.PushMail(DSP_INIT); m_rMailHandler.PushMail(DSP_INIT);
templbuffer = new int[1024 * 1024]; templbuffer = new int[1024 * 1024];
temprbuffer = new int[1024 * 1024]; temprbuffer = new int[1024 * 1024];
mptHack = _CRC == 0x3389a79e;
} }
CUCode_AX::~CUCode_AX() CUCode_AX::~CUCode_AX()
@ -174,11 +173,11 @@ void CUCode_AX::MixAdd(short* _pBuffer, int _iSize)
if (!ReadPB(blockAddr, PB)) if (!ReadPB(blockAddr, PB))
break; break;
if (!mptHack) ProcessUpdates(PB);
{
ProcessUpdates(PB); if (_CRC != 0x3389a79e)
VoiceHacks(PB); VoiceHacks(PB);
}
MixAddVoice(PB, templbuffer, temprbuffer, _iSize); MixAddVoice(PB, templbuffer, temprbuffer, _iSize);
if (!WritePB(blockAddr, PB)) if (!WritePB(blockAddr, PB))

View file

@ -29,7 +29,7 @@ enum
class CUCode_AX : public IUCode class CUCode_AX : public IUCode
{ {
public: public:
CUCode_AX(DSPHLE *dsp_hle); CUCode_AX(DSPHLE *dsp_hle, u32 _CRC);
virtual ~CUCode_AX(); virtual ~CUCode_AX();
void HandleMail(u32 _uMail); void HandleMail(u32 _uMail);
@ -42,7 +42,6 @@ public:
u32 PBaddr[8]; //2 needed for MP2 u32 PBaddr[8]; //2 needed for MP2
u32 m_addressPBs; u32 m_addressPBs;
u32 _CRC; u32 _CRC;
bool mptHack;
private: private:
enum enum

View file

@ -57,7 +57,7 @@ IUCode* UCodeFactory(u32 _CRC, DSPHLE *dsp_hle, bool bWii)
case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080 case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080
case 0x3389a79e: // MP1/MP2 Wii (Metroid Prime Trilogy) case 0x3389a79e: // MP1/MP2 Wii (Metroid Prime Trilogy)
INFO_LOG(DSPHLE, "CRC %08x: AX ucode chosen", _CRC); 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 0x6ba3b3ea: // IPL - PAL
case 0x24b22038: // IPL - NTSC/NTSC-JAP case 0x24b22038: // IPL - NTSC/NTSC-JAP
@ -101,7 +101,7 @@ IUCode* UCodeFactory(u32 _CRC, DSPHLE *dsp_hle, bool bWii)
else else
{ {
PanicAlert("DSPHLE: Unknown ucode (CRC = %08x) - forcing AX.\n\nTry LLE emulator if this is homebrew.", _CRC); 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);
} }
} }