[MC6845] Fixed skewing and display area.

This commit is contained in:
Curt Coder 2008-10-28 16:05:54 +00:00
parent 5b5edd9eb9
commit 342fa7a26c

View File

@ -301,8 +301,8 @@ static void recompute_parameters(mc6845_t *mc6845, int postload)
visarea.min_x = 0; visarea.min_x = 0;
visarea.min_y = 0; visarea.min_y = 0;
visarea.max_x = max_visible_x; visarea.max_x = hsync_on_pos - 1;
visarea.max_y = max_visible_y; visarea.max_y = vsync_on_pos - 1;
if (LOG) logerror("M6845 config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n", if (LOG) logerror("M6845 config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n",
horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh));
@ -379,7 +379,7 @@ static void update_de_changed_timer(mc6845_t *mc6845)
/* delay display enable for 1 character time if skew is enabled */ /* delay display enable for 1 character time if skew is enabled */
if (mc6845->mode_control & MODE_DISPLAY_ENABLE_SKEW) if (mc6845->mode_control & MODE_DISPLAY_ENABLE_SKEW)
next_x++; next_x += mc6845->hpixels_per_column;
if (next_y != -1) if (next_y != -1)
duration = video_screen_get_time_until_pos(mc6845->screen, next_y, next_x); duration = video_screen_get_time_until_pos(mc6845->screen, next_y, next_x);
@ -663,7 +663,7 @@ void mc6845_update(const device_config *device, bitmap_t *bitmap, const rectangl
} }
/* for each row in the visible region */ /* for each row in the visible region */
for (y = cliprect->min_y; y <= cliprect->max_y; y++) for (y = cliprect->min_y; y <= MIN(cliprect->max_y, mc6845->max_visible_y); y++)
{ {
/* compute the current raster line */ /* compute the current raster line */
UINT8 ra = y % (mc6845->max_ras_addr + 1); UINT8 ra = y % (mc6845->max_ras_addr + 1);
@ -680,7 +680,7 @@ void mc6845_update(const device_config *device, bitmap_t *bitmap, const rectangl
/* delay cursor for 1 character time if skew is enabled */ /* delay cursor for 1 character time if skew is enabled */
if (mc6845->mode_control & MODE_CURSOR_SKEW) if (mc6845->mode_control & MODE_CURSOR_SKEW)
cursor_x++; cursor_x += mc6845->hpixels_per_column;
/* call the external system to draw it */ /* call the external system to draw it */
mc6845->intf->update_row(device, bitmap, cliprect, mc6845->current_disp_addr, ra, y, mc6845->horiz_disp, cursor_x, param); mc6845->intf->update_row(device, bitmap, cliprect, mc6845->current_disp_addr, ra, y, mc6845->horiz_disp, cursor_x, param);