Merge pull request #3893 from iamgreaser/gm/mga-8bpp-blink-disable

Disable blink in 8bpp modes on MGA; Re-instate main 8bpp hires renderer
This commit is contained in:
Miran Grča
2023-12-16 20:59:55 +01:00
committed by GitHub
3 changed files with 9 additions and 2 deletions

View File

@@ -246,6 +246,11 @@ typedef struct svga_t {
addresses are shifted to match*/
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*/
int force_dword_mode;

View File

@@ -935,7 +935,7 @@ mystique_recalctimings(svga_t *svga)
} else {
switch (svga->bpp) {
case 8:
svga->render = svga_render_8bpp_incompatible_highres;
svga->render = svga_render_8bpp_highres;
break;
case 15:
svga->render = svga_render_15bpp_highres;
@@ -958,6 +958,8 @@ mystique_recalctimings(svga_t *svga)
if (mystique->type >= MGA_1064SG)
svga->bpp = 8;
}
svga->disable_blink = (svga->bpp > 4);
}
static void

View File

@@ -457,7 +457,7 @@ svga_render_indexed_gfx(svga_t *svga, bool highres, bool combine8bits)
uint32_t changed_offset;
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.