Array bounds patrol (nw)

This commit is contained in:
R. Belmont 2014-02-26 20:00:07 +00:00
parent 01089de733
commit 0caa890cca
2 changed files with 15 additions and 3 deletions

View File

@ -372,6 +372,11 @@ READ8_MEMBER( asc_device::read )
m_regs[0x2f] = m_incr[3];
}
if (offset > 0x800)
{
return 0xff;
}
return m_regs[offset-0x800];
}
@ -582,6 +587,9 @@ WRITE8_MEMBER( asc_device::write )
break;
}
m_regs[offset-0x800] = data;
if (offset < 0x800)
{
m_regs[offset-0x800] = data;
}
}
}

View File

@ -982,8 +982,10 @@ static void SCSP_w16(scsp_state *scsp,address_space &space,unsigned int addr,uns
//DSP
if(addr<0x780) //COEF
*((unsigned short *) (scsp->DSP.COEF+(addr-0x700)/2))=val;
else if(addr<0x800)
else if(addr<0x7c0)
*((unsigned short *) (scsp->DSP.MADRS+(addr-0x780)/2))=val;
else if(addr<0x800) // MADRS is mirrored twice
*((unsigned short *) (scsp->DSP.MADRS+(addr-0x7c0)/2))=val;
else if(addr<0xC00)
{
*((unsigned short *) (scsp->DSP.MPRO+(addr-0x800)/2))=val;
@ -1022,8 +1024,10 @@ static unsigned short SCSP_r16(scsp_state *scsp, address_space &space, unsigned
//DSP
if(addr<0x780) //COEF
v= *((unsigned short *) (scsp->DSP.COEF+(addr-0x700)/2));
else if(addr<0x800)
else if(addr<0x7c0)
v= *((unsigned short *) (scsp->DSP.MADRS+(addr-0x780)/2));
else if(addr<0x800)
v= *((unsigned short *) (scsp->DSP.MADRS+(addr-0x7c0)/2));
else if(addr<0xC00)
v= *((unsigned short *) (scsp->DSP.MPRO+(addr-0x800)/2));
else if(addr<0xE00)