AICA: EFREG is mapped every other word, not every word. Fixes memory trashing in all Naomi/DC/AW games. [O. Galibert, R. Belmont]

This commit is contained in:
R. Belmont 2014-01-31 15:06:45 +00:00
parent 6ecea67cfa
commit 1bf2b1bde7

View File

@ -1067,7 +1067,7 @@ static void AICA_w16(aica_state *AICA,address_space &space,unsigned int addr,uns
AICA->DSP.MIXS[(addr >> 3) & 0xf] = (AICA->DSP.MIXS[(addr >> 3) & 0xf] & 0xffff) | (val << 16);
}
else if(addr<0x45c0)
*((unsigned short *) (AICA->DSP.EFREG+(addr-0x4580)/2))=val;
*((unsigned short *) (AICA->DSP.EFREG+(addr-0x4580)/4))=val;
else if(addr<0x45c8)
*((unsigned short *) (AICA->DSP.EXTS+(addr-0x45c0)/2))=val;
}
@ -1141,7 +1141,7 @@ static unsigned short AICA_r16(aica_state *AICA, address_space &space, unsigned
v= AICA->DSP.MIXS[(addr >> 3) & 0xf] >> 16;
}
else if(addr<0x45c0)
v = *((unsigned short *) (AICA->DSP.EFREG+(addr-0x4580)/2));
v = *((unsigned short *) (AICA->DSP.EFREG+(addr-0x4580)/4));
else if(addr<0x45c8)
v = *((unsigned short *) (AICA->DSP.EXTS+(addr-0x45c0)/2));
}