Disable blink in 8bpp modes on MGA; Re-instate main 8bpp hires renderer
I don't actually know if 8bpp blink is a thing on a Matrox Millennium, but the video BIOS seems to act like it's not.
This commit is contained in:
@@ -246,6 +246,11 @@ typedef struct svga_t {
|
|||||||
addresses are shifted to match*/
|
addresses are shifted to match*/
|
||||||
int packed_chain4;
|
int packed_chain4;
|
||||||
|
|
||||||
|
/*Disable 8bpp blink mode - some cards support it, some don't, it's a weird mode
|
||||||
|
If mode 13h appears in a reddish-brown background (0x88) with dark green text (0x8F),
|
||||||
|
you should set this flag when entering that mode*/
|
||||||
|
int disable_blink;
|
||||||
|
|
||||||
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
|
/*Force CRTC to dword mode, regardless of CR14/CR17. Required for S3 enhanced mode*/
|
||||||
int force_dword_mode;
|
int force_dword_mode;
|
||||||
|
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ mystique_recalctimings(svga_t *svga)
|
|||||||
} else {
|
} else {
|
||||||
switch (svga->bpp) {
|
switch (svga->bpp) {
|
||||||
case 8:
|
case 8:
|
||||||
svga->render = svga_render_8bpp_incompatible_highres;
|
svga->render = svga_render_8bpp_highres;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
svga->render = svga_render_15bpp_highres;
|
svga->render = svga_render_15bpp_highres;
|
||||||
@@ -958,6 +958,8 @@ mystique_recalctimings(svga_t *svga)
|
|||||||
if (mystique->type >= MGA_1064SG)
|
if (mystique->type >= MGA_1064SG)
|
||||||
svga->bpp = 8;
|
svga->bpp = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
svga->disable_blink = (svga->bpp > 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ svga_render_indexed_gfx(svga_t *svga, bool highres, bool combine8bits)
|
|||||||
uint32_t changed_offset;
|
uint32_t changed_offset;
|
||||||
|
|
||||||
const bool blinked = svga->blink & 0x10;
|
const bool blinked = svga->blink & 0x10;
|
||||||
const bool attrblink = ((svga->attrregs[0x10] & 0x08) != 0);
|
const bool attrblink = (!svga->disable_blink) && ((svga->attrregs[0x10] & 0x08) != 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The following is likely how it works on an IBM VGA - that is, it works with its BIOS.
|
The following is likely how it works on an IBM VGA - that is, it works with its BIOS.
|
||||||
|
|||||||
Reference in New Issue
Block a user