i8244: reduce partial screen update calls

This commit is contained in:
hap 2020-08-22 19:03:28 +02:00
parent 784d6ceb8f
commit b7f12265ab

View File

@ -369,7 +369,7 @@ void i8244_device::write(offs_t offset, uint8_t data)
return;
// update screen before accessing video registers
if (offset < 0xa4 || offset >= 0xc0)
if (offset >= 0x80 && offset < 0xa4)
screen().update_now();
// color registers d4-d7 are not connected
@ -518,13 +518,13 @@ uint32_t i8244_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap
int w = ( m_vdc.s.control & 0x80 ) ? width : 2;
/* Draw horizontal part of the grid */
for ( int j = 1, y = 0; y < 9; y++, j <<= 1 )
for ( int y = 0; y < 9; y++ )
{
if ( y_grid_offset + y * height <= scanline && scanline < y_grid_offset + y * height + 3 )
{
for ( int i = 0; i < 9; i++ )
{
if ( ( m_vdc.s.hgrid[0][i] & j ) || ( m_vdc.s.hgrid[1][i] & ( j >> 8 ) ) )
if ( BIT(m_vdc.s.hgrid[1][i] << 8 | m_vdc.s.hgrid[0][i], y) )
{
for ( int k = 0; k < width + 2; k++ )
{