From 3f2f799248eed03309efebd7a43993011d7fcd7c Mon Sep 17 00:00:00 2001 From: refraction Date: Thu, 27 Feb 2014 22:22:28 +0000 Subject: [PATCH] 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 --- pcsx2/ps2/LegacyDmac.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pcsx2/ps2/LegacyDmac.cpp b/pcsx2/ps2/LegacyDmac.cpp index 11a1173083..0869f3cff8 100644 --- a/pcsx2/ps2/LegacyDmac.cpp +++ b/pcsx2/ps2/LegacyDmac.cpp @@ -267,6 +267,12 @@ static __ri void DmaExec( void (*func)(), u32 mem, u32 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)) { func();