diff --git a/src/include/86box/video.h b/src/include/86box/video.h index 24ecdbd1c..2dd6f3627 100644 --- a/src/include/86box/video.h +++ b/src/include/86box/video.h @@ -227,6 +227,7 @@ extern void video_setblit(void (*blit)(int, int, int, int, int)); extern void video_blend(int x, int y); extern void video_blit_memtoscreen_8(int x, int y, int w, int h); extern void video_blend_monitor(int x, int y, int monitor_index); +extern void video_process_8_monitor(int x, int y, int monitor_index); extern void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index); extern void video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index); extern void video_blit_complete_monitor(int monitor_index); @@ -262,6 +263,7 @@ extern uint32_t video_color_transform(uint32_t color); #define video_get_type() video_get_type_monitor(0) #define video_blend(x, y) video_blend_monitor(x, y, monitor_index_global) #define video_blit_memtoscreen(x, y, w, h) video_blit_memtoscreen_monitor(x, y, w, h, monitor_index_global) +#define video_process_8(x, y) video_process_8_monitor(x, y, monitor_index_global) #define video_blit_memtoscreen_8(x, y, w, h) video_blit_memtoscreen_8_monitor(x, y, w, h, monitor_index_global) #define video_blit_complete() video_blit_complete_monitor(monitor_index_global) #define video_wait_for_blit() video_wait_for_blit_monitor(monitor_index_global) diff --git a/src/video/vid_cga.c b/src/video/vid_cga.c index b68f093e1..3cd581488 100644 --- a/src/video/vid_cga.c +++ b/src/video/vid_cga.c @@ -354,6 +354,9 @@ cga_poll(void *p) Composite_Process(cga->cgamode, border, x >> 2, buffer32->line[(cga->displine << 1)]); Composite_Process(cga->cgamode, border, x >> 2, buffer32->line[(cga->displine << 1) + 1]); + } else { + video_process_8(x, cga->displine << 1); + video_process_8(x, (cga->displine << 1) + 1); } cga->sc = oldsc; @@ -448,19 +451,11 @@ cga_poll(void *p) } if (enable_overscan) { - if (cga->composite) - video_blit_memtoscreen(0, (cga->firstline - 4) << 1, - xsize, ((cga->lastline - cga->firstline) + 8) << 1); - else - video_blit_memtoscreen_8(0, (cga->firstline - 4) << 1, - xsize, ((cga->lastline - cga->firstline) + 8) << 1); + video_blit_memtoscreen(0, (cga->firstline - 4) << 1, + xsize, ((cga->lastline - cga->firstline) + 8) << 1); } else { - if (cga->composite) - video_blit_memtoscreen(8, cga->firstline << 1, - xsize, (cga->lastline - cga->firstline) << 1); - else - video_blit_memtoscreen_8(8, cga->firstline << 1, - xsize, (cga->lastline - cga->firstline) << 1); + video_blit_memtoscreen(8, cga->firstline << 1, + xsize, (cga->lastline - cga->firstline) << 1); } } diff --git a/src/video/video.c b/src/video/video.c index ae2fcf5eb..f6cf6623a 100644 --- a/src/video/video.c +++ b/src/video/video.c @@ -535,6 +535,19 @@ video_blend_monitor(int x, int y, int monitor_index) } } +void +video_process_8_monitor(int x, int y, int monitor_index) +{ + int xx; + + for (xx = 0; xx < x; xx++) { + if (monitors[monitor_index].target_buffer->line[y][xx] <= 0xff) + monitors[monitor_index].target_buffer->line[y][xx] = monitors[monitor_index].mon_pal_lookup[monitors[monitor_index].target_buffer->line[y][xx]]; + else + monitors[monitor_index].target_buffer->line[y][xx] = 0x00000000; + } +} + void video_blit_memtoscreen_8_monitor(int x, int y, int w, int h, int monitor_index) {