From ae7c3185c9d65f6400868f1b183998db2bd5ffaf Mon Sep 17 00:00:00 2001 From: TomW Date: Thu, 18 Sep 2014 21:14:15 +0100 Subject: [PATCH] Restricted available range of attribute and sequencer registers on ViRGE, XFree86 now detects card correctly. --- src/vid_s3_virge.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vid_s3_virge.c b/src/vid_s3_virge.c index ebafeb2..ef03970 100644 --- a/src/vid_s3_virge.c +++ b/src/vid_s3_virge.c @@ -383,15 +383,23 @@ static uint8_t s3_virge_in(uint16_t addr, void *p) // if (addr != 0x3da) pclog("S3 in %04X %04X:%08X ", addr, CS, pc); switch (addr) { + case 0x3c1: + if (svga->attraddr > 0x14) + ret = 0xff; + else + ret = svga_in(addr, svga); + break; //case 0x3C6: case 0x3C7: case 0x3C8: case 0x3C9: // pclog("Read RAMDAC %04X %04X:%04X\n", addr, CS, pc); //return sdac_ramdac_in(addr); case 0x3c5: - if (svga->seqaddr >= 0x10) + if (svga->seqaddr >= 8) ret = svga->seqregs[svga->seqaddr & 0x1f]; - else + else if (svga->seqaddr <= 4) ret = svga_in(addr, svga); + else + ret = 0xff; break; case 0x3D4: