mirror of https://github.com/PCSX2/pcsx2.git
IPU Fix for Haunting Grounds (in-game cinemas skipped after 1 second). Bug was caused by the internal buffer of the IPU (2 QWC) not being refilled properly in rare circumstances.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3824 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
5fd2cf97d3
commit
cfca4ccdd0
|
@ -206,8 +206,8 @@ __fi u32 ipuRead32(u32 mem)
|
|||
if (!ipuRegs.ctrl.BUSY)
|
||||
IPU_LOG("read32: IPU_CTRL=0x%08X", ipuRegs.ctrl._u32);
|
||||
|
||||
return ipuRegs.ctrl._u32;
|
||||
}
|
||||
return ipuRegs.ctrl._u32;
|
||||
}
|
||||
|
||||
ipucase(IPU_BP): // IPU_BP
|
||||
{
|
||||
|
@ -218,7 +218,7 @@ __fi u32 ipuRead32(u32 mem)
|
|||
ipuRegs.ipubp |= g_BP.FP << 16;
|
||||
|
||||
IPU_LOG("read32: IPU_BP=0x%08X", ipuRegs.ipubp);
|
||||
return ipuRegs.ipubp;
|
||||
return ipuRegs.ipubp;
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
|
@ -85,7 +85,7 @@ struct __aligned16 tIPU_BP {
|
|||
BP += bits;
|
||||
pxAssume( BP <= 256 );
|
||||
|
||||
if (BP > 127)
|
||||
if (BP >= 128)
|
||||
{
|
||||
BP -= 128;
|
||||
|
||||
|
@ -100,8 +100,11 @@ struct __aligned16 tIPU_BP {
|
|||
else
|
||||
{
|
||||
// if FP == 1 then the buffer has been completely drained.
|
||||
// if FP == 0 then an already-drained buffer is being advanced.
|
||||
// In either case we just assign FP to 0.
|
||||
// if FP == 0 then an already-drained buffer is being advanced, and we need to drop a
|
||||
// quadword from the IPU FIFO.
|
||||
|
||||
if (!FP)
|
||||
ipu_fifo.in.read(&internal_qwc[0]);
|
||||
|
||||
FP = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue