Hack for Midway (Thanks guys!) games, as to show their muppetry in coding, i have left big dev warnings everytime it hits their cockup. On a more serious note, Solves the issue of a failing COP Condition they are trying to achieve.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4077 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2010-12-06 21:40:36 +00:00
parent 5c54b8279e
commit fa76cfdeca
2 changed files with 127 additions and 110 deletions

View File

@ -308,6 +308,7 @@ enum EERegisterAddresses
DMAC_RBSR = 0x1000E040,
DMAC_RBOR = 0x1000E050,
DMAC_STADR = 0x1000E060,
DMAC_FAKESTAT = 0x1000E100, //Midway, you're idiots (checked this in the MK Deception ELF!) (Refraction)
INTC_STAT = 0x1000F000,
INTC_MASK = 0x1000F010,

View File

@ -385,6 +385,22 @@ __fi bool dmacWrite32( u32 mem, mem32_t& value )
return false;
}
//Midway are a bunch of idiots, writing to E100 (reserved) instead of E010
//Which causes a CPCOND0 to fail.
icase(DMAC_FAKESTAT)
{
DevCon.Warning("Midway fixup addr=%x writing %x for DMA_STAT", mem, value);
HW_LOG("Midways own DMAC_STAT Write 32bit %x", value);
// lower 16 bits: clear on 1
// upper 16 bits: reverse on 1
psHu16(0xe010) &= ~(value & 0xffff);
psHu16(0xe012) ^= (u16)(value >> 16);
cpuTestDMACInts();
return false;
}
icase(DMAC_STAT)
{
HW_LOG("DMAC_STAT Write 32bit %x", value);