DMA: Fix for FFXII in r5915. Apparently it tries to use an invalid DMA mode, so we shall assume they meant "chain" mode.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5917 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2014-02-27 22:22:28 +00:00
parent b460019846
commit 3f2f799248
1 changed files with 6 additions and 0 deletions

View File

@ -267,6 +267,12 @@ static __ri void DmaExec( void (*func)(), u32 mem, u32 value )
reg.chcr.set(value); reg.chcr.set(value);
//Final Fantasy XII sets the DMA Mode to 3 which doesn't exist. On some channels (like SPR) this will break logic completely. so lets assume they mean chain.
if (reg.chcr.MOD == 0x3)
{
DevCon.Warning(L"%s CHCR.MOD set to 3, assuming 1 (chain)", ChcrName(mem));
reg.chcr.MOD = 0x1;
}
if (reg.chcr.STR && dmacRegs.ctrl.DMAE && !psHu8(DMAC_ENABLER+2)) if (reg.chcr.STR && dmacRegs.ctrl.DMAE && !psHu8(DMAC_ENABLER+2))
{ {
func(); func();