VOGONS


First post, by taiken7

User metadata
Rank Member
Rank
Member

Not sure how the core development team is doing with vesa,
so I completed, the "_VGA_PIXEL_DOUBLE" clipping implementation;

(I was also hoping Harekiet might elaborate on
"something in VBE2.0 support is screwing up .."
VESA support in CVS builds)

------------------------ INT10_MODES.CPP:

if (mode<256) {
++ vga.draw.vesa=0;
if (mode & 128) {
clearmem=false;
mode-=128;
}
} else {
/* Check for special vesa mode bits */
mode&=0xfff;
++ vga.draw.vesa=1;
}

...

/* Maximum scanline / Underline Location */
if (CurMode->special & _LINE_DOUBLE) max_scanline|=0x80;
++ /* Pixel doubling check */
++ if (vga.draw.vesa && (CurMode->special & _VGA_PIXEL_DOUBLE))
++ vga.draw.special=1; else vga.draw.special=0;

------------------------ VGA_DRAW.CPP:

...

++ // Double pixels for VESA modes
++ if (vga.draw.special&vga.draw.vesa) {width=width/2;}

if (( width != vga.draw.width) || (height != vga.draw.height) || (pitch != vga.draw.pitch)) {
PIC_RemoveEvents(VGA_BlankTimer);
vga.draw.width=width;

...

------------------------ VGA.H:

typedef struct {
bool resizing;
Bitu width;
Bitu height;
Bitu pitch;
Bitu blank;
Bitu scaleh;
++ bool vesa,special; // VESA modes & Pixel doubling support
bool double_width;
bool double_height;
Bitu lines;
Bit8u font_height;
Bit8u font[64*1024];
Bitu font1_start;
Bitu font2_start;
Bitu rows,cols;
struct {
Bit8u sline,eline;
Bit8u count,delay;
Bit8u enabled;
} cursor;
} VGA_Draw;