VGA RAMDAC does not update palette until all three elements are written. Fixes Windows 3.x EGA driver when run on a VGA card.
This commit is contained in:
parent
12232fd7b8
commit
0a5e80325a
2 changed files with 6 additions and 5 deletions
|
|
@ -133,16 +133,16 @@ void svga_out(uint16_t addr, uint8_t val, void *p)
|
|||
switch (svga->dac_pos)
|
||||
{
|
||||
case 0:
|
||||
svga->vgapal[svga->dac_write].r = val & 63;
|
||||
svga->pallook[svga->dac_write] = makecol32(svga->vgapal[svga->dac_write].r * 4, svga->vgapal[svga->dac_write].g * 4, svga->vgapal[svga->dac_write].b * 4);
|
||||
svga->dac_r = val & 63;
|
||||
svga->dac_pos++;
|
||||
break;
|
||||
case 1:
|
||||
svga->vgapal[svga->dac_write].g = val & 63;
|
||||
svga->pallook[svga->dac_write] = makecol32(svga->vgapal[svga->dac_write].r * 4, svga->vgapal[svga->dac_write].g * 4, svga->vgapal[svga->dac_write].b * 4);
|
||||
svga->dac_g = val & 63;
|
||||
svga->dac_pos++;
|
||||
break;
|
||||
case 2:
|
||||
svga->vgapal[svga->dac_write].r = svga->dac_r;
|
||||
svga->vgapal[svga->dac_write].g = svga->dac_g;
|
||||
svga->vgapal[svga->dac_write].b = val & 63;
|
||||
svga->pallook[svga->dac_write] = makecol32(svga->vgapal[svga->dac_write].r * 4, svga->vgapal[svga->dac_write].g * 4, svga->vgapal[svga->dac_write].b * 4);
|
||||
svga->dac_pos = 0;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@ typedef struct svga_t
|
|||
|
||||
uint8_t dac_mask, dac_status;
|
||||
int dac_read, dac_write, dac_pos;
|
||||
|
||||
int dac_r, dac_g;
|
||||
|
||||
uint8_t cgastat;
|
||||
|
||||
uint8_t plane_mask;
|
||||
|
|
|
|||
Loading…
Reference in a new issue