pc_vga: force PEL shift to 0 after a line compare, and move latch release to the end of VBLANK. Fixes Jazz Jackrabbit scrolling (do let me know if there are any regressions).

This commit is contained in:
mahlemiut 2015-06-05 10:53:41 +12:00
parent cacb9bb1b5
commit f668e0465d

View File

@ -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; column<VGA_COLUMNS+1; column++, c+=8, pos++)
{
@ -1265,7 +1268,7 @@ void vga_device::recompute_params_clock(int divisor, int xtal)
refresh = HZ_TO_ATTOSECONDS(pixel_clock) * (hblank_period) * vblank_period;
machine().first_screen()->configure((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()