diff options
Diffstat (limited to 'src/devices/video/mc6845.cpp')
-rw-r--r-- | src/devices/video/mc6845.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp index b8cc7148243..abf5692b7c7 100644 --- a/src/devices/video/mc6845.cpp +++ b/src/devices/video/mc6845.cpp @@ -108,6 +108,7 @@ mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, co : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this, false) , m_show_border_area(true) + , m_noninterlace_adjust(0) , m_interlace_adjust(0) , m_clk_scale(1) , m_visarea_adjust_min_x(0) @@ -188,7 +189,7 @@ void mc6845_device::transparent_update() { m_update_addr++; m_update_addr &= 0x3fff; - call_on_update_address(0); + call_on_update_address(MODE_UPDATE_STROBE); } else { @@ -267,7 +268,7 @@ void mc6845_device::register_w(uint8_t data) { m_update_addr = ((data & 0x3f) << 8) | (m_update_addr & 0x00ff); if(MODE_TRANSPARENT_PHI2) - call_on_update_address(0); + call_on_update_address(MODE_UPDATE_STROBE); } break; case 0x13: @@ -275,7 +276,7 @@ void mc6845_device::register_w(uint8_t data) { m_update_addr = ((data & 0xff) << 0) | (m_update_addr & 0xff00); if(MODE_TRANSPARENT_PHI2) - call_on_update_address(0); + call_on_update_address(MODE_UPDATE_STROBE); } break; case 0x1f: transparent_update(); break; @@ -993,7 +994,7 @@ void mc6845_device::device_timer(emu_timer &timer, device_timer_id id, int param case TIMER_UPD_ADR: /* fire a update address strobe */ - call_on_update_address(0); + call_on_update_address(MODE_UPDATE_STROBE); break; case TIMER_UPD_TRANS: @@ -1122,7 +1123,7 @@ uint8_t mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangl // is in units of characters and is relative to the start of the // displayable area, not relative to the screen bitmap origin. int8_t cursor_x = cursor_visible ? (m_cursor_addr - m_current_disp_addr) : -1; - int de = (y < m_max_visible_y) ? 1 : 0; + int de = (y <= m_max_visible_y) ? 1 : 0; int vbp = m_vert_pix_total - m_vsync_off_pos; if (vbp < 0) vbp = 0; int hbp = m_horiz_pix_total - m_hsync_off_pos; @@ -1250,6 +1251,7 @@ void mc6845_device::device_start() m_horiz_char_total = 0xff; m_max_ras_addr = 0x1f; m_vert_char_total = 0x7f; + m_mode_control = 0x00; m_supports_disp_start_addr_r = false; // MC6845 can not read Display Start (double checked on datasheet) m_supports_vert_sync_width = false; @@ -1779,7 +1781,7 @@ MC6845_UPDATE_ROW( mos8563_device::vdc_update_row ) if (x < 0) x = 0; int color = BIT(code, 7) ? fg : bg; - bitmap.pix32(vbp + y, hbp + x) = pen(de ? color : 0); + bitmap.pix(vbp + y, hbp + x) = pen(de ? color : 0); } } else @@ -1815,7 +1817,7 @@ MC6845_UPDATE_ROW( mos8563_device::vdc_update_row ) if (x < 0) x = 0; int color = BIT(data, 7) ? fg : bg; - bitmap.pix32(vbp + y, hbp + x) = pen(de ? color : 0); + bitmap.pix(vbp + y, hbp + x) = pen(de ? color : 0); if ((bit < 8) || !HSS_SEMI) data <<= 1; } |