mirror of https://github.com/PCSX2/pcsx2.git
Fixes for Tri-Ace games and Dark Summit (Which seems to use a similar video engine). Also a couple of other modifications for IPU resuming
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2879 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
0788dec404
commit
cbc7bbb33e
|
@ -191,8 +191,9 @@ static void DmaExec( void (*func)(), u32 mem, u32 value )
|
|||
}
|
||||
//Sanity Check for possible future bug fix0rs ;p
|
||||
if(reg->chcr.TAG != chcr.TAG) DevCon.Warning(L"32bit CHCR Tag on %s changed to %x from %x QWC = %x Channel Active", ChcrName(mem), chcr.TAG, reg->chcr.TAG, reg->qwc);
|
||||
//Here we update the ENTIRE CHCR, if a chain is stopped half way through, it can be manipulated in to a different mode
|
||||
reg->chcr.set(value);
|
||||
//Here we update the LOWER CHCR, if a chain is stopped half way through, it can be manipulated in to a different mode
|
||||
//But we need to preserve the existing tag for now
|
||||
reg->chcr.set((reg->chcr.TAG << 16) | chcr.lower());
|
||||
return;
|
||||
}
|
||||
else //Else the DMA is running (Not Suspended), so we cant touch it!
|
||||
|
@ -215,7 +216,7 @@ static void DmaExec( void (*func)(), u32 mem, u32 value )
|
|||
|
||||
}
|
||||
|
||||
//if(reg->chcr.TAG != chcr.TAG && chcr.MOD == CHAIN_MODE) //DevCon.Warning(L"32bit CHCR Tag on %s changed to %x from %x QWC = %x Channel Not Active", ChcrName(mem), chcr.TAG, reg->chcr.TAG, reg->qwc);
|
||||
//if(reg->chcr.TAG != chcr.TAG && chcr.MOD == CHAIN_MODE) DevCon.Warning(L"32bit CHCR Tag on %s changed to %x from %x QWC = %x Channel Not Active", ChcrName(mem), chcr.TAG, reg->chcr.TAG, reg->qwc);
|
||||
|
||||
reg->chcr.set(value);
|
||||
|
||||
|
@ -227,7 +228,7 @@ static void DmaExec( void (*func)(), u32 mem, u32 value )
|
|||
}
|
||||
else if(reg->chcr.STR)
|
||||
{
|
||||
////DevCon.Warning(L"32bit %s DMA Start while DMAC Disabled\n", ChcrName(mem));
|
||||
//DevCon.Warning(L"32bit %s DMA Start while DMAC Disabled\n", ChcrName(mem));
|
||||
QueuedDMA._u16 |= (1 << ChannelNumber(mem)); //Queue the DMA up to be started then the DMA's are Enabled and or the Suspend is lifted
|
||||
} //else QueuedDMA._u16 &~= (1 << ChannelNumber(mem)); //
|
||||
}
|
||||
|
|
|
@ -1594,9 +1594,11 @@ __forceinline void dmaIPU1() // toIPU
|
|||
}
|
||||
else
|
||||
{ //Attempting to continue a previous chain
|
||||
DevCon.Warning("Resuming DMA TAG %x", (ipu1dma->chcr.TAG >> 12));
|
||||
//We MUST check the CHCR for the tag it last knew, it can be manipulated!
|
||||
IPU1Status.ChainMode = (ipu1dma->chcr.TAG >> 12) & 0x7;
|
||||
IPU1Status.InProgress = true;
|
||||
IPU1Status.DMAFinished = ((ipu1dma->chcr.TAG >> 15) && ipu1dma->chcr.TIE) ? true : false;
|
||||
}
|
||||
|
||||
IPU1Status.DMAMode = DMA_MODE_CHAIN;
|
||||
|
|
Loading…
Reference in New Issue