diff options
-rw-r--r-- | src/mame/video/apple2.cpp | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp index 78c5b203b0c..66e9a2093b9 100644 --- a/src/mame/video/apple2.cpp +++ b/src/mame/video/apple2.cpp @@ -843,7 +843,6 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co | (((uint32_t) vram_row[col+1] & 0x7f) << 7) | (((uint32_t) vram_row[col+2] & 0x7f) << 14); - // verified on h/w: setting dhires w/o 80col emulates a rev. 0 Apple ][ with no orange/blue if (m_dhires) { @@ -873,6 +872,10 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co case 1: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -880,10 +883,18 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co *(p++) = v ? WHITE : BLACK; *(p++) = v ? WHITE : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; case 2: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -891,10 +902,18 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co *(p++) = v ? GREEN : BLACK; *(p++) = v ? GREEN : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; case 3: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -902,6 +921,10 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co *(p++) = v ? ORANGE : BLACK; *(p++) = v ? ORANGE : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; } } @@ -962,8 +985,12 @@ void a2_video_device::hgr_update_tk2000(screen_device &screen, bitmap_ind16 &bit } break; - case 1: +\ case 1: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -971,10 +998,18 @@ void a2_video_device::hgr_update_tk2000(screen_device &screen, bitmap_ind16 &bit *(p++) = v ? WHITE : BLACK; *(p++) = v ? WHITE : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; case 2: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -982,10 +1017,18 @@ void a2_video_device::hgr_update_tk2000(screen_device &screen, bitmap_ind16 &bit *(p++) = v ? GREEN : BLACK; *(p++) = v ? GREEN : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; case 3: w >>= 7; + if (vram_row[col] & 0x80) + { + p--; + } for (b = 0; b < 7; b++) { v = (w & 1); @@ -993,6 +1036,10 @@ void a2_video_device::hgr_update_tk2000(screen_device &screen, bitmap_ind16 &bit *(p++) = v ? ORANGE : BLACK; *(p++) = v ? ORANGE : BLACK; } + if (vram_row[col] & 0x80) + { + p++; + } break; } } |