diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c index 7ce3eacf9c0..c494e4904ec 100644 --- a/src/emu/video/pc_vga.c +++ b/src/emu/video/pc_vga.c @@ -221,7 +221,7 @@ TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb) { vga.crtc.start_addr = vga.crtc.start_addr_latch; vga.attribute.pel_shift = vga.attribute.pel_shift_latch; - m_vblank_timer->adjust( machine().first_screen()->time_until_pos(vga.crtc.vert_blank_start) ); + m_vblank_timer->adjust( machine().first_screen()->time_until_pos(vga.crtc.vert_blank_start + vga.crtc.vert_blank_end) ); } void vga_device::device_start() @@ -471,7 +471,10 @@ void vga_device::vga_vh_vga(bitmap_rgb32 &bitmap, const rectangle &cliprect) if((line + yi) < (vga.crtc.line_compare & mask_comp)) curr_addr = addr; if((line + yi) == (vga.crtc.line_compare & mask_comp)) + { curr_addr = 0; + pel_shift = 0; + } bitmapline = &bitmap.pix32(line + yi); for (pos=curr_addr, c=0, column=0; columnconfigure((hblank_period), (vblank_period), visarea, refresh ); //popmessage("%d %d\n",vga.crtc.horz_total * 8,vga.crtc.vert_total); - m_vblank_timer->adjust( machine().first_screen()->time_until_pos(vga.crtc.vert_blank_start) ); + m_vblank_timer->adjust( machine().first_screen()->time_until_pos(vga.crtc.vert_blank_start + vga.crtc.vert_blank_end) ); } void vga_device::recompute_params()