Fixed the last commit. :(

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1488 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-07-11 17:26:11 +00:00
parent 192f602ae7
commit 18dfadfa79
2 changed files with 7 additions and 24 deletions

View File

@ -461,7 +461,6 @@ static __forceinline BOOL ipuIDEC(u32 val)
s_routine = so_create(mpeg2sliceIDEC, &s_RoutineDone, s_tempstack, sizeof(s_tempstack)); s_routine = so_create(mpeg2sliceIDEC, &s_RoutineDone, s_tempstack, sizeof(s_tempstack));
assert(s_routine != NULL); assert(s_routine != NULL);
//return;
so_call(s_routine); so_call(s_routine);
if (s_RoutineDone) s_routine = NULL; if (s_RoutineDone) s_routine = NULL;

View File

@ -1131,7 +1131,8 @@ void __forceinline finishmpeg2sliceIDEC(decoder_t* &decoder)
} }
// This fixes Mana Khemia if uncommented, but needs testing. // This fixes Mana Khemia if uncommented, but needs testing.
#define ALWAYS_RESUME_BEFORE_EXITING // Breaks Figital Devil Saga.
//#define ALWAYS_RESUME_BEFORE_EXITING
void mpeg2sliceIDEC(void* pdone) void mpeg2sliceIDEC(void* pdone)
{ {
u32 read; u32 read;
@ -1221,11 +1222,6 @@ void mpeg2sliceIDEC(void* pdone)
while (g_nIPU0Data > 0) while (g_nIPU0Data > 0)
{ {
read = FIFOfrom_write((u32*)g_pIPU0Pointer, g_nIPU0Data); read = FIFOfrom_write((u32*)g_pIPU0Pointer, g_nIPU0Data);
if (read != 8)
{
Console::Error("g_nIPU0Data = 0x%x; read = 0x%x", params g_nIPU0Data, read);
}
if (read == 0) if (read == 0)
{ {
@ -1245,14 +1241,6 @@ void mpeg2sliceIDEC(void* pdone)
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr); NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
mba_inc = 0; mba_inc = 0;
#ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed)
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:1");
}
#endif
while (1) while (1)
{ {
@ -1270,20 +1258,20 @@ void mpeg2sliceIDEC(void* pdone)
{ {
case 8: /* macroblock_escape */ case 8: /* macroblock_escape */
Console::Error("macroblock escape ");
mba_inc += 33; mba_inc += 33;
/* pass through */ /* pass through */
case 15: /* macroblock_stuffing (MPEG1 only) */ case 15: /* macroblock_stuffing (MPEG1 only) */
Console::Error("macroblock_stuffing (MPEG1 only) ");
DUMPBITS(decoder->bitstream_buf, decoder->bitstream_bits, 11); DUMPBITS(decoder->bitstream_buf, decoder->bitstream_bits, 11);
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr); NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
continue; continue;
default: /* end of slice/frame, or error? */ default: /* end of slice/frame, or error? */
{ {
Console::Error("UBITS(decoder->bitstream_buf, 11) is 0x%x", params UBITS(decoder->bitstream_buf, 11)); #ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed) so_resume();
#endif
finishmpeg2sliceIDEC(decoder); finishmpeg2sliceIDEC(decoder);
*(int*)pdone = 1; *(int*)pdone = 1;
@ -1311,11 +1299,7 @@ void mpeg2sliceIDEC(void* pdone)
} }
#ifdef ALWAYS_RESUME_BEFORE_EXITING #ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed) if (!resumed) so_resume();
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:2");
}
#endif #endif
finishmpeg2sliceIDEC(decoder); finishmpeg2sliceIDEC(decoder);