diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index 33f4a217e..11321dae1 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -2172,6 +2172,16 @@ s3_out(uint16_t addr, uint8_t val, void *p) } else if (svga->seqaddr == 0xa) { svga->seqregs[svga->seqaddr] = val & 0x80; return; + } else if (s3->chip >= S3_VISION964) { + if (svga->seqaddr == 0x08) { + svga->seqregs[svga->seqaddr] = val & 0x0f; + return; + } else if ((svga->seqaddr == 0x0d) && (svga->seqregs[0x08] == 0x06)) { + svga->seqregs[svga->seqaddr] = val; + svga->dpms = ((s3->chip >= S3_VISION964) && (svga->seqregs[0x0d] & 0xf0)) || (svga->crtc[0x56] & ((s3->chip >= S3_TRIO32) ? 0x06 : 0x20)); + svga_recalctimings(svga); + return; + } } break; @@ -2376,6 +2386,11 @@ s3_out(uint16_t addr, uint8_t val, void *p) } break; + case 0x56: + svga->dpms = ((s3->chip >= S3_VISION964) && (svga->seqregs[0x0d] & 0xf0)) || (svga->crtc[0x56] & ((s3->chip >= S3_TRIO32) ? 0x06 : 0x20)); + old = ~val; /* force recalc */ + break; + case 0x67: if (s3->chip >= S3_TRIO32) { switch (val >> 4) diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index bf7b64029..0752499b3 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -428,6 +428,14 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p) svga->write_bank = svga->read_bank = virge->bank << 16; else svga->write_bank = svga->read_bank = virge->bank << 14; + } else if (svga->seqaddr == 0x08) { + svga->seqregs[svga->seqaddr] = val & 0x0f; + return; + } else if ((svga->seqaddr == 0x0d) && (svga->seqregs[0x08] == 0x06)) { + svga->seqregs[svga->seqaddr] = val; + svga->dpms = (svga->seqregs[0x0d] & 0xf0) || (svga->crtc[0x56] & 0x06); + svga_recalctimings(svga); + return; } break; @@ -543,6 +551,11 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p) case 0x58: case 0x59: case 0x5a: s3_virge_updatemapping(virge); break; + + case 0x56: + svga->dpms = (svga->seqregs[0x0d] & 0xf0) || (svga->crtc[0x56] & 0x06); + old = ~val; /* force recalc */ + break; case 0x67: switch (val >> 4)