DSPHLE: Fix 1 potential and 2 actual crash bugs affecting 32-bit.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3768 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2009-07-12 20:14:21 +00:00
parent fe76193641
commit c45dfd156f
2 changed files with 15 additions and 5 deletions

View File

@ -37,7 +37,16 @@ public:
u16 ReadDSPMailboxLow();
void Update();
u32 GetNextMail() { return m_Mails.front(); }
u32 GetNextMail()
{
if (m_Mails.size())
return m_Mails.front();
else
{
WARN_LOG(DSPHLE, "GetNextMail: No mails");
return 0; //
}
}
private:
// mail handler

View File

@ -312,7 +312,7 @@ void CUCode_Zelda::RenderVoice_Raw(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
if (PB.RemLength < _RealSize)
{
WARN_LOG(VIDEO, "Raw: END");
WARN_LOG(DSPHLE, "Raw: END");
// Let's ignore this entire case since it doesn't seem to happen
// in Zelda, since Length is set to 0xF0000000
// blah
@ -526,7 +526,7 @@ ContinueWithBlock:
AX1L = m_MiscTable[0x200 + AX1L];
AX1H = m_MiscTable[0x200 + AX1H];
short b00[16];
short b00[20];
b00[0] = AX1L * AX1H >> 16;
b00[1] = AX0L * AX1H >> 16;
b00[2] = AX0H * AX1L >> 16;
@ -646,9 +646,10 @@ ContinueWithBlock:
// size is in stereo samples.
void CUCode_Zelda::MixAdd(short *_Buffer, int _Size)
{
// PanicAlert("mixadd");
// Safety check
if (_Size > 256 * 1024)
_Size = 256 * 1024;
if (_Size > 256 * 1024 - 8)
_Size = 256 * 1024 - 8;
// Final mix buffers
memset(m_LeftBuffer, 0, _Size * sizeof(s32));