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:
Jake.Stine 2010-09-23 15:24:45 +00:00
parent 5fd2cf97d3
commit cfca4ccdd0
2 changed files with 9 additions and 6 deletions

View File

@ -85,7 +85,7 @@ struct __aligned16 tIPU_BP {
BP += bits; BP += bits;
pxAssume( BP <= 256 ); pxAssume( BP <= 256 );
if (BP > 127) if (BP >= 128)
{ {
BP -= 128; BP -= 128;
@ -100,8 +100,11 @@ struct __aligned16 tIPU_BP {
else else
{ {
// if FP == 1 then the buffer has been completely drained. // if FP == 1 then the buffer has been completely drained.
// if FP == 0 then an already-drained buffer is being advanced. // if FP == 0 then an already-drained buffer is being advanced, and we need to drop a
// In either case we just assign FP to 0. // quadword from the IPU FIFO.
if (!FP)
ipu_fifo.in.read(&internal_qwc[0]);
FP = 0; FP = 0;
} }