mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
pc9801: more egc fixes (nw)
This commit is contained in:
parent
d88c7951c3
commit
a68842a91f
@ -1426,7 +1426,20 @@ void pc9801_state::egc_blit_w(UINT32 offset, UINT16 data, UINT16 mem_mask)
|
||||
}
|
||||
|
||||
// mask off the bits past the end of the blit
|
||||
if(m_egc.count < 16)
|
||||
if((m_egc.count < 8) && (mem_mask != 0xffff))
|
||||
{
|
||||
UINT16 end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (8 - m_egc.count)) - 1);
|
||||
// if the blit is less than 8 bits, adjust the masks
|
||||
if(m_egc.first)
|
||||
{
|
||||
if(dir)
|
||||
end_mask <<= dst_off & 7;
|
||||
else
|
||||
end_mask >>= dst_off & 7;
|
||||
}
|
||||
mask &= end_mask;
|
||||
}
|
||||
else if((m_egc.count < 16) && (mem_mask == 0xffff))
|
||||
{
|
||||
UINT16 end_mask = dir ? ((1 << m_egc.count) - 1) : ~((1 << (16 - m_egc.count)) - 1);
|
||||
// if the blit is less than 16 bits, adjust the masks
|
||||
@ -1457,11 +1470,6 @@ void pc9801_state::egc_blit_w(UINT32 offset, UINT16 data, UINT16 mem_mask)
|
||||
out = data;
|
||||
break;
|
||||
case 1:
|
||||
if(mem_mask == 0x00ff)
|
||||
src = src | src << 8;
|
||||
else if(mem_mask == 0xff00)
|
||||
src = src | src >> 8;
|
||||
|
||||
out = egc_do_partial_op(i, src, pat, m_video_ram_2[offset + (((i + 1) & 3) * 0x4000)]);
|
||||
break;
|
||||
case 2:
|
||||
@ -2263,7 +2271,7 @@ static ADDRESS_MAP_START( pc9801rs_io, AS_IO, 16, pc9801_state )
|
||||
AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff)
|
||||
AM_RANGE(0x0640, 0x064f) AM_READWRITE(ide_cs0_r, ide_cs0_w)
|
||||
AM_RANGE(0x0740, 0x074f) AM_READWRITE(ide_cs1_r, ide_cs1_w)
|
||||
AM_RANGE(0x1e80, 0x1e8f) AM_NOP // temp
|
||||
AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // temp
|
||||
AM_RANGE(0xbfd8, 0xbfdf) AM_WRITE8(pc9801rs_mouse_freq_w, 0xffff)
|
||||
AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(pc9801rs_midi_r, 0xffff)
|
||||
AM_IMPORT_FROM(pc9801ux_io)
|
||||
@ -2512,6 +2520,7 @@ static ADDRESS_MAP_START( pc9821_io, AS_IO, 32, pc9801_state )
|
||||
// AM_RANGE(0x0c2d, 0x0c2d) cs4231 PCM board hi byte control
|
||||
// AM_RANGE(0x0cc0, 0x0cc7) SCSI interface / <undefined>
|
||||
// AM_RANGE(0x0cfc, 0x0cff) PCI bus
|
||||
AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // IDE RAM switch
|
||||
AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00) // <undefined> / pit mirror ports
|
||||
AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00ff00)
|
||||
AM_RANGE(0x841c, 0x841f) AM_READWRITE8(sdip_0_r,sdip_0_w,0xffffffff)
|
||||
|
Loading…
Reference in New Issue
Block a user