mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 09:09:52 -06:00
Fix a hang on stop on linux (why is that done better on linux ?? strange :P)
Fix what must have been a typo for Pikmin PAL CRC, the game still doesn't work though :( Fix a crash on stop in nJoy git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3821 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -185,7 +185,7 @@ private:
|
||||
switch (m_CRC)
|
||||
{
|
||||
case 0x42f64ac4: // Luigi
|
||||
case 0x0267d05a: // http://forums.dolphin-emu.com/thread-2134.html Pikmin PAL
|
||||
case 0x267fd05a: // Pikmin PAL
|
||||
case 0x4be6a5cb: // AC, Pikmin
|
||||
case 0x088e38a5: // IPL - JAP
|
||||
case 0xd73338cf: // IPL
|
||||
|
@ -114,7 +114,7 @@ void UpdateSampleCounters10(ZeldaVoicePB &PB)
|
||||
void CUCode_Zelda::RenderVoice_PCM16(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
|
||||
{
|
||||
int _RealSize = SizeForResampling(PB, _Size, PB.RatioInt);
|
||||
int rem_samples = _RealSize;
|
||||
u32 rem_samples = _RealSize;
|
||||
if (PB.KeyOff)
|
||||
goto clear_buffer;
|
||||
if (PB.NeedsReset)
|
||||
@ -130,7 +130,7 @@ reached_end:
|
||||
if (!PB.RepeatMode) {
|
||||
// One shot - play zeros the rest of the buffer.
|
||||
clear_buffer:
|
||||
for (int i = 0; i < rem_samples; i++)
|
||||
for (u32 i = 0; i < rem_samples; i++)
|
||||
*_Buffer++ = 0;
|
||||
PB.KeyOff = 1;
|
||||
return;
|
||||
@ -146,13 +146,13 @@ clear_buffer:
|
||||
if (PB.RemLength < rem_samples)
|
||||
{
|
||||
// finish-up loop
|
||||
for (int i = 0; i < PB.RemLength; i++)
|
||||
for (u32 i = 0; i < PB.RemLength; i++)
|
||||
*_Buffer++ = Common::swap16(*read_ptr++);
|
||||
rem_samples -= PB.RemLength;
|
||||
goto reached_end;
|
||||
}
|
||||
// main render loop
|
||||
for (int i = 0; i < rem_samples; i++)
|
||||
for (u32 i = 0; i < rem_samples; i++)
|
||||
*_Buffer++ = Common::swap16(*read_ptr++);
|
||||
|
||||
PB.RemLength -= rem_samples;
|
||||
@ -171,7 +171,7 @@ void UpdateSampleCounters8(ZeldaVoicePB &PB)
|
||||
void CUCode_Zelda::RenderVoice_PCM8(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
|
||||
{
|
||||
int _RealSize = SizeForResampling(PB, _Size, PB.RatioInt);
|
||||
int rem_samples = _RealSize;
|
||||
u32 rem_samples = _RealSize;
|
||||
if (PB.KeyOff)
|
||||
goto clear_buffer;
|
||||
if (PB.NeedsReset)
|
||||
@ -188,7 +188,7 @@ reached_end:
|
||||
{
|
||||
// One shot - play zeros the rest of the buffer.
|
||||
clear_buffer:
|
||||
for (int i = 0; i < rem_samples; i++)
|
||||
for (u32 i = 0; i < rem_samples; i++)
|
||||
*_Buffer++ = 0;
|
||||
PB.KeyOff = 1;
|
||||
return;
|
||||
@ -205,13 +205,13 @@ clear_buffer:
|
||||
if (PB.RemLength < rem_samples)
|
||||
{
|
||||
// finish-up loop
|
||||
for (int i = 0; i < PB.RemLength; i++)
|
||||
for (u32 i = 0; i < PB.RemLength; i++)
|
||||
*_Buffer++ = (s8)(*read_ptr++) << 8;
|
||||
rem_samples -= PB.RemLength;
|
||||
goto reached_end;
|
||||
}
|
||||
// main render loop
|
||||
for (int i = 0; i < rem_samples; i++)
|
||||
for (u32 i = 0; i < rem_samples; i++)
|
||||
*_Buffer++ = (s8)(*read_ptr++) << 8;
|
||||
|
||||
PB.RemLength -= rem_samples;
|
||||
@ -356,7 +356,7 @@ void Decoder21_ReadAudio(ZeldaVoicePB &PB, int size, s16 *_Buffer);
|
||||
void CUCode_Zelda::RenderVoice_Raw(ZeldaVoicePB &PB, s16 *_Buffer, int _Size)
|
||||
{
|
||||
// Decoder0x21 starts here.
|
||||
int _RealSize = SizeForResampling(PB, _Size, PB.RatioInt);
|
||||
u32 _RealSize = SizeForResampling(PB, _Size, PB.RatioInt);
|
||||
|
||||
// Decoder0x21Core starts here.
|
||||
u32 AX0 = _RealSize;
|
||||
@ -440,7 +440,7 @@ void Decoder21_ReadAudio(ZeldaVoicePB &PB, int size, s16 *_Buffer)
|
||||
const u8 *source = g_dspInitialize.pGetMemoryPointer(0x80000000);
|
||||
const u16 *src = (u16 *)(source + (ACC0 & ram_mask));
|
||||
|
||||
for (int i = 0; i < (ACC1 >> 16); i++) {
|
||||
for (u32 i = 0; i < (ACC1 >> 16); i++) {
|
||||
_Buffer[i] = Common::swap16(src[i]);
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
|
||||
case 0x088e38a5: // IPL - JAP
|
||||
case 0xd73338cf: // IPL
|
||||
case 0x42f64ac4: // Luigi
|
||||
case 0x0267d05a: // http://forums.dolphin-emu.com/thread-2134.html Pikmin PAL
|
||||
case 0x267fd05a: // Pikmin PAL
|
||||
case 0x4be6a5cb: // AC, Pikmin
|
||||
INFO_LOG(DSPHLE, "CRC %08x: JAC (early Zelda) ucode chosen", _CRC);
|
||||
return new CUCode_Zelda(_rMailHandler, _CRC);
|
||||
|
@ -302,12 +302,20 @@ void Shutdown()
|
||||
#ifdef _DEBUG
|
||||
DEBUG_QUIT();
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
// Free DInput before closing SDL, or get a crash !
|
||||
FreeDirectInput();
|
||||
#elif defined(__linux__)
|
||||
close(fd);
|
||||
#endif
|
||||
|
||||
// Don't shutdown the gamepad if the configuration window is still showing
|
||||
// Todo: Coordinate with the Wiimote plugin, SDL_Quit() will remove the pad for it to
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
if (m_ConfigFrame) return;
|
||||
#endif
|
||||
|
||||
/* Close all devices carefully. We must check that we are not accessing any undefined
|
||||
vector elements or any bad devices */
|
||||
for (int i = 0; i < 4; i++)
|
||||
@ -331,12 +339,6 @@ void Shutdown()
|
||||
|
||||
// Remove the pointer to the initialize data
|
||||
g_PADInitialize = NULL;
|
||||
|
||||
#ifdef _WIN32
|
||||
FreeDirectInput();
|
||||
#elif defined(__linux__)
|
||||
close(fd);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user