mirror of https://github.com/PCSX2/pcsx2.git
Fixed a bug in r4884, simplified implementation and added equivalent code to hwWrite16
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4886 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
3d04b20ec8
commit
605f9cbc78
|
@ -240,50 +240,13 @@ void __fastcall _hwWrite8(u32 mem, u8 value)
|
|||
return;
|
||||
}
|
||||
|
||||
switch(mem) // Virtual on Marz sound effect hang. Broke in r3704 (handled in r3703 HwWrite.cpp line 352)
|
||||
{ //Didnt realise this got missed, whoopsy! This should cover everything needed. (Refraction)
|
||||
//DMAC_STAT Status Flags
|
||||
case(DMAC_STAT):
|
||||
case(DMAC_STAT+1):
|
||||
DevCon.Warning ( "8/16bit DMAC_STAT bottom write mem = %x value %x", mem, value );
|
||||
psHu8(mem) &= ~value;
|
||||
return;
|
||||
//DMAC_STAT Mask
|
||||
case(DMAC_STAT+2):
|
||||
case(DMAC_STAT+3):
|
||||
DevCon.Warning ( "8/16bit DMAC_STAT top write mem = %x value %x", mem, value );
|
||||
psHu8(mem) ^= value;
|
||||
cpuTestDMACInts();
|
||||
return;
|
||||
|
||||
//INTC_STAT
|
||||
case(INTC_STAT):
|
||||
case(INTC_STAT+1):
|
||||
DevCon.Warning ( "8/16bit INTC_STAT write mem = %x value %x", mem, value );
|
||||
psHu8(mem) &= ~value;
|
||||
return;
|
||||
|
||||
//INTC_MASK
|
||||
case(INTC_MASK):
|
||||
case(INTC_MASK+1):
|
||||
DevCon.Warning ( "8/16bit INTC_MASK write mem = %x value %x", mem, value );
|
||||
psHu8(INTC_MASK) ^= value;
|
||||
cpuTestINTCInts();
|
||||
return;
|
||||
|
||||
//Just in case :P
|
||||
//FAKEDMAC_STAT Status
|
||||
case(DMAC_FAKESTAT):
|
||||
case(DMAC_FAKESTAT+1):
|
||||
DevCon.Warning ( "8/16bit FAKEDMAC_STAT bottom write mem = %x value %x", mem, value );
|
||||
psHu8(mem) &= ~value;
|
||||
return;
|
||||
//FAKEDMAC_STAT Mask
|
||||
case(DMAC_FAKESTAT+2):
|
||||
case(DMAC_FAKESTAT+3):
|
||||
DevCon.Warning ( "8/16bit FAKEDMAC_STAT top write mem = %x value %x", mem, value );
|
||||
psHu8(mem) ^= value;
|
||||
cpuTestDMACInts();
|
||||
switch(mem & ~3)
|
||||
{
|
||||
case DMAC_STAT:
|
||||
case INTC_STAT:
|
||||
case INTC_MASK:
|
||||
case DMAC_FAKESTAT:
|
||||
_hwWrite32<page>(mem & ~3, (u32)value << (mem & 3));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -305,6 +268,16 @@ void __fastcall _hwWrite16(u32 mem, u16 value)
|
|||
{
|
||||
pxAssume( (mem & 0x01) == 0 );
|
||||
|
||||
switch(mem & ~3)
|
||||
{
|
||||
case DMAC_STAT:
|
||||
case INTC_STAT:
|
||||
case INTC_MASK:
|
||||
case DMAC_FAKESTAT:
|
||||
_hwWrite32<page>(mem & ~3, (u32)value << (mem & 3));
|
||||
return;
|
||||
}
|
||||
|
||||
u32 merged = _hwRead32<page,false>(mem & ~0x03);
|
||||
((u16*)&merged)[(mem>>1) & 0x1] = value;
|
||||
|
||||
|
|
Loading…
Reference in New Issue