gb_lcd.c: Prevent some out of bound array accesses (nw)

This commit is contained in:
Wilbert Pol 2014-07-27 20:05:44 +00:00
parent 78d3bd416d
commit b8e337341b

View File

@ -1185,16 +1185,19 @@ void cgb_lcd_device::update_sprites()
break; break;
case 0x00: /* priority is not set (overlaps bgnd & wnd, don't flip x) */ case 0x00: /* priority is not set (overlaps bgnd & wnd, don't flip x) */
for (bit = 0; bit < 8; bit++, xindex++) for (bit = 0; bit < 8; bit++, xindex++)
{
if (xindex >= 0 && xindex < 160)
{ {
register int colour = ((data & 0x8000) ? 2 : 0) | ((data & 0x0080) ? 1 : 0); register int colour = ((data & 0x8000) ? 2 : 0) | ((data & 0x0080) ? 1 : 0);
if ((m_bg_zbuf[xindex] & 0x80) && (m_bg_zbuf[xindex] & 0x7f) && (LCDCONT & 0x1)) if ((m_bg_zbuf[xindex] & 0x80) && (m_bg_zbuf[xindex] & 0x7f) && (LCDCONT & 0x1))
colour = 0; colour = 0;
if (colour && xindex >= 0 && xindex < 160) if (colour)
{ {
if (!m_gbc_mode) if (!m_gbc_mode)
colour = pal ? m_gb_spal1[colour] : m_gb_spal0[colour]; colour = pal ? m_gb_spal1[colour] : m_gb_spal0[colour];
plot_pixel(bitmap, xindex, yindex, m_cgb_spal[pal + colour]); plot_pixel(bitmap, xindex, yindex, m_cgb_spal[pal + colour]);
} }
}
data <<= 1; data <<= 1;
} }
break; break;