IPU fix for a few games. Bring back the overflow into pad area handling for IPU1.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2869 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2010-04-17 12:29:23 +00:00
parent ac901140a2
commit 618e295c95
1 changed files with 13 additions and 0 deletions

View File

@ -1566,6 +1566,19 @@ __forceinline void dmaIPU0() // fromIPU
__forceinline void dmaIPU1() // toIPU __forceinline void dmaIPU1() // toIPU
{ {
IPU_LOG("IPU1DMAStart QWC %x, MADR %x, CHCR %x, TADR %x", ipu1dma->qwc, ipu1dma->madr, ipu1dma->chcr._u32, ipu1dma->tadr); IPU_LOG("IPU1DMAStart QWC %x, MADR %x, CHCR %x, TADR %x", ipu1dma->qwc, ipu1dma->madr, ipu1dma->chcr._u32, ipu1dma->tadr);
if (ipu1dma->pad != 0)
{
// Note: pad is the padding right above qwc, so we're testing whether qwc
// has overflowed into pad.
DevCon.Warning(L"IPU1dma's upper 16 bits set to %x\n", ipu1dma->pad);
ipu1dma->qwc = ipu1dma->pad = 0;
// If we are going to clear down IPU1, we should end it too.
// Going to test this scenario on the PS2 mind - Refraction
ipu1dma->chcr.STR = false;
hwDmacIrq(DMAC_TO_IPU);
}
if (ipu1dma->chcr.MOD == CHAIN_MODE) //Chain Mode if (ipu1dma->chcr.MOD == CHAIN_MODE) //Chain Mode
{ {
IPU_LOG("Setting up IPU1 Chain mode"); IPU_LOG("Setting up IPU1 Chain mode");