(MESS) apple3: Fixed page 2 addresses in all graphics modes, fixed glitches in color hires rendering. [R. Belmont]

This commit is contained in:
R. Belmont 2014-02-16 18:24:27 +00:00
parent 7cde79cd9c
commit 811fee0ee8

View File

@ -284,8 +284,8 @@ void apple3_state::apple3_video_graphics_chgr(bitmap_ind16 &bitmap)
{ {
if (m_flags & VAR_VM2) if (m_flags & VAR_VM2)
{ {
pix_info = &ram[m_hgr_map[y]]; pix_info = &ram[m_hgr_map[y] + 0x2000];
col_info = &ram[m_hgr_map[y] - 0x2000]; col_info = &ram[m_hgr_map[y] + 0x4000];
} }
else else
{ {
@ -329,8 +329,8 @@ void apple3_state::apple3_video_graphics_shgr(bitmap_ind16 &bitmap)
{ {
if (m_flags & VAR_VM2) if (m_flags & VAR_VM2)
{ {
pix_info1 = &ram[m_hgr_map[y]]; pix_info1 = &ram[m_hgr_map[y] + 0x2000];
pix_info2 = &ram[m_hgr_map[y] + 0x2000]; pix_info2 = &ram[m_hgr_map[y] + 0x4000];
} }
else else
{ {
@ -364,7 +364,7 @@ void apple3_state::apple3_video_graphics_shgr(bitmap_ind16 &bitmap)
void apple3_state::apple3_video_graphics_chires(bitmap_ind16 &bitmap) void apple3_state::apple3_video_graphics_chires(bitmap_ind16 &bitmap)
{ {
UINT16 *pen; UINT16 *pen;
PAIR pix; UINT8 p1, p2, p3, p4;
int y, i; int y, i;
UINT8 *ram = m_ram->pointer(); UINT8 *ram = m_ram->pointer();
@ -373,18 +373,28 @@ void apple3_state::apple3_video_graphics_chires(bitmap_ind16 &bitmap)
pen = &bitmap.pix16(y); pen = &bitmap.pix16(y);
for (i = 0; i < 20; i++) for (i = 0; i < 20; i++)
{ {
pix.b.l = ram[m_hgr_map[y] - 0x2000 + (i * 2) + (m_flags & VAR_VM2 ? 1 : 0) + 0]; if (m_flags & VAR_VM2)
pix.b.h = ram[m_hgr_map[y] - 0x0000 + (i * 2) + (m_flags & VAR_VM2 ? 1 : 0) + 0]; {
pix.b.h2 = ram[m_hgr_map[y] - 0x2000 + (i * 2) + (m_flags & VAR_VM2 ? 1 : 0) + 1]; p1 = ram[m_hgr_map[y] + 0x2000 + (i * 2) + 0];
pix.b.h3 = ram[m_hgr_map[y] - 0x0000 + (i * 2) + (m_flags & VAR_VM2 ? 1 : 0) + 1]; p2 = ram[m_hgr_map[y] + 0x4000 + (i * 2) + 0];
p3 = ram[m_hgr_map[y] + 0x2000 + (i * 2) + 1];
p4 = ram[m_hgr_map[y] + 0x4000 + (i * 2) + 1];
}
else
{
p1 = ram[m_hgr_map[y] - 0x2000 + (i * 2) + 0];
p2 = ram[m_hgr_map[y] - 0x0000 + (i * 2) + 0];
p3 = ram[m_hgr_map[y] - 0x2000 + (i * 2) + 1];
p4 = ram[m_hgr_map[y] - 0x0000 + (i * 2) + 1];
}
pen[ 0] = pen[ 1] = pen[ 2] = pen[ 3] = ((pix.d >> 0) & 0x0F); pen[ 0] = pen[ 1] = pen[ 2] = pen[ 3] = (p1 & 0x0f);
pen[ 4] = pen[ 5] = pen[ 6] = pen[ 7] = ((pix.d >> 4) & 0x07) | ((pix.d >> 1) & 0x08); pen[ 4] = pen[ 5] = pen[ 6] = pen[ 7] = ((p1 >> 4) & 0x07) | ((p2 & 1) << 3);
pen[ 8] = pen[ 9] = pen[10] = pen[11] = ((pix.d >> 9) & 0x0F); pen[ 8] = pen[ 9] = pen[10] = pen[11] = ((p2 >> 1) & 0x0F);
pen[12] = pen[13] = pen[14] = pen[15] = ((pix.d >> 13) & 0x03) | ((pix.d >> 14) & 0x0C); pen[12] = pen[13] = pen[14] = pen[15] = ((p2 >> 5) & 0x03) | ((p3 & 3) << 2);
pen[16] = pen[17] = pen[18] = pen[19] = ((pix.d >> 18) & 0x0F); pen[16] = pen[17] = pen[18] = pen[19] = ((p3 >> 2) & 0x0F);
pen[20] = pen[21] = pen[22] = pen[23] = ((pix.d >> 22) & 0x01) | ((pix.d >> 23) & 0x0E); pen[20] = pen[21] = pen[22] = pen[23] = ((p3 >> 6) & 0x01) | ((p4 << 1) & 0xe);
pen[24] = pen[25] = pen[26] = pen[27] = ((pix.d >> 27) & 0x0F); pen[24] = pen[25] = pen[26] = pen[27] = ((p4 >> 3) & 0x0F);
pen += 28; pen += 28;
} }
} }