diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index 175b5048f..101d3ae8b 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -3527,7 +3527,7 @@ s3_in(uint16_t addr, void *priv) } break; case 0x30: - return s3->id; /*Chip ID*/ + return ((svga->crtc[0x38] & 0xcc) != 0x48) ? 0xFF : s3->id; /*Chip ID*/ case 0x31: return (svga->crtc[0x31] & 0xcf) | ((s3->ma_ext & 3) << 4); case 0x35: diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index 5fa84e555..bb1b2b11e 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -751,7 +751,7 @@ s3_virge_in(uint16_t addr, void *priv) ret = virge->virge_rev; break; case 0x30: - ret = virge->virge_id; + ret = ((svga->crtc[0x38] & 0xcc) != 0x48) ? 0xFF : virge->virge_id; break; /*Chip ID*/ case 0x31: ret = (svga->crtc[0x31] & 0xcf) | ((virge->ma_ext & 3) << 4); @@ -828,6 +828,7 @@ s3_virge_recalctimings(svga_t *svga) if (virge->chip >= S3_TRIO3D2X) { svga_set_ramdac_type(svga, (svga->seqregs[0x1b] & 0x10) ? RAMDAC_8BIT : RAMDAC_6BIT); + svga->lut_map = !!(svga->seqregs[0x1b] & 0x8); } if (!svga->scrblank && svga->attr_palette_enable && (svga->crtc[0x43] & 0x80)) { /* TODO: In case of bug reports, disable 9-dots-wide character clocks in graphics modes. */ @@ -5377,6 +5378,7 @@ s3_virge_init(const device_t *info) s3_virge_hwcursor_draw, s3_virge_overlay_draw); virge->svga.hwcursor.cur_ysize = 64; + virge->svga.conv_16to32 = tvp3026_conv_16to32; if (bios_fn != NULL) { if (virge->type == S3_VIRGE_GX2)