VGA can do 640x350x4 too, I think, since the same bits are there

This commit is contained in:
Jonathan Campbell 2024-11-24 19:23:46 +00:00
parent ca191ff6bc
commit fca89a72f8

View File

@ -1119,6 +1119,10 @@ static uint8_t * EGA_Draw_VGA_Planar_Xlat8_Line(Bitu vidstart, Bitu line) {
return EGA_Planar_Common_Line<MCH_EGA,uint8_t>(TempLine,vidstart,line); return EGA_Planar_Common_Line<MCH_EGA,uint8_t>(TempLine,vidstart,line);
} }
static uint8_t * VGA_Draw_VGA_Planar_Xlat8_LineOddEven(Bitu vidstart, Bitu line) {
return EGA_Planar_Common_LineOddEven<MCH_VGA,uint32_t>(TempLine,vidstart,line);
}
static uint8_t * VGA_Draw_VGA_Planar_Xlat32_Line(Bitu vidstart, Bitu line) { static uint8_t * VGA_Draw_VGA_Planar_Xlat32_Line(Bitu vidstart, Bitu line) {
return EGA_Planar_Common_Line<MCH_VGA,uint32_t>(TempLine,vidstart,line); return EGA_Planar_Common_Line<MCH_VGA,uint32_t>(TempLine,vidstart,line);
} }
@ -7310,6 +7314,12 @@ void VGA_SetupDrawing(Bitu /*val*/) {
VGA_DrawLine = VGA_Draw_2BPP_Line_as_VGA; VGA_DrawLine = VGA_Draw_2BPP_Line_as_VGA;
VGA_DrawRawLine = VGA_RawDraw_2BPP_Line_as_VGA; VGA_DrawRawLine = VGA_RawDraw_2BPP_Line_as_VGA;
} }
else if (vga.config.addr_shift >= 1/*word mode*/ && (vga.seq.clocking_mode & 0x04/*load every other clock cycle*/) &&
(vga.crtc.mode_control & 0x08/*increase memory address every other character clock*/)) {
VGA_DrawLine = VGA_Draw_VGA_Planar_Xlat8_LineOddEven;
VGA_DrawRawLine = VGA_RawDraw_VGA_Planar_Xlat32_Line;//TODO
vga.draw.blocks = (width+1u)>>1u;
}
else { else {
VGA_DrawLine = VGA_Draw_VGA_Planar_Xlat32_Line; VGA_DrawLine = VGA_Draw_VGA_Planar_Xlat32_Line;
VGA_DrawRawLine = VGA_RawDraw_VGA_Planar_Xlat32_Line; VGA_DrawRawLine = VGA_RawDraw_VGA_Planar_Xlat32_Line;