mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
pasopia: Fix potential misbehavior with out-of-range RA values
This commit is contained in:
parent
a58b25b6f9
commit
2f93ef23a8
@ -126,7 +126,7 @@ MC6845_UPDATE_ROW( pasopia_state::crtc_update_row )
|
|||||||
const rgb_t bclr = palette[m_gfx_mode & 0x07];
|
const rgb_t bclr = palette[m_gfx_mode & 0x07];
|
||||||
u32 *p = &bitmap.pix(y);
|
u32 *p = &bitmap.pix(y);
|
||||||
const bool text = (m_gfx_mode & 0xc0) == 0;
|
const bool text = (m_gfx_mode & 0xc0) == 0;
|
||||||
const u16 *const vram = &m_p_vram[text ? 0 : u16(BIT(m_gfx_mode, 7) ? ra : ra & 6) << 11];
|
const u16 *const vram = &m_p_vram[text ? 0 : u16(BIT(m_gfx_mode, 7) ? ra & 7 : ra & 6) << 11];
|
||||||
|
|
||||||
for (u16 x = 0; x < x_count; x++)
|
for (u16 x = 0; x < x_count; x++)
|
||||||
{
|
{
|
||||||
@ -154,7 +154,7 @@ MC6845_UPDATE_ROW( pasopia_state::crtc_update_row )
|
|||||||
std::fill_n(p, 4, lclr);
|
std::fill_n(p, 4, lclr);
|
||||||
p += 4;
|
p += 4;
|
||||||
}
|
}
|
||||||
else if (BIT(ra, 4) || (chr & 0x1f8) == 0x0f8)
|
else if (BIT(ra, 3) || (chr & 0x1f8) == 0x0f8)
|
||||||
{
|
{
|
||||||
std::fill_n(p, 8, bclr);
|
std::fill_n(p, 8, bclr);
|
||||||
p += 8;
|
p += 8;
|
||||||
@ -162,7 +162,7 @@ MC6845_UPDATE_ROW( pasopia_state::crtc_update_row )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// DHR graphic characters, normal or inverted text
|
// DHR graphic characters, normal or inverted text
|
||||||
u8 gfx = BIT(chr, 8) && BIT(m_gfx_mode, 7) ? (chr & 0xff) : m_p_chargen[((chr & 0xff)<<3) | ra];
|
u8 gfx = BIT(chr, 8) && BIT(m_gfx_mode, 7) ? (chr & 0xff) : m_p_chargen[((chr & 0xff)<<3) | (ra & 7)];
|
||||||
if (BIT(chr, 8) && text)
|
if (BIT(chr, 8) && text)
|
||||||
gfx ^= 0xff;
|
gfx ^= 0xff;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user