DMA: Disallow MADR/QWC/TADR writes while the DMA is busy, solves the Mana Khemia voodooness

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4061 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2010-11-29 20:33:22 +00:00
parent 5da2f7cecd
commit d5e60af439
1 changed files with 10 additions and 0 deletions

View File

@ -413,6 +413,16 @@ __fi bool dmacWrite32( u32 mem, mem32_t& value )
}
}
//DMA Writes are invalid to everything except the STR on CHCR when it is busy
if((mem & 0xf0))
{
if((psHu32(mem & ~0xff) & 0x100) && dmacRegs.ctrl.DMAE && !psHu8(DMAC_ENABLER+2))
{
DevCon.Warning("Write to DMA addr %x while STR is busy! Ignoring", mem);
return false;
}
}
// fall-through: use the default writeback provided by caller.
return true;
}