From 6af04e38d7924785f7445cad3b9abefd75cf2496 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 21 Jun 2017 03:22:47 +0200 Subject: [PATCH] Fixed graphical cursor with S3 Trio64 when SVGA overscan is enabled. --- src/VIDEO/vid_s3.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/VIDEO/vid_s3.c b/src/VIDEO/vid_s3.c index 1878b3b0c..643b7f30c 100644 --- a/src/VIDEO/vid_s3.c +++ b/src/VIDEO/vid_s3.c @@ -1961,7 +1961,9 @@ void s3_hwcursor_draw(svga_t *svga, int displine) uint16_t dat[2]; int xx; int offset = svga->hwcursor_latch.x - svga->hwcursor_latch.xoff; - + int y_add = (enable_overscan && !suppress_overscan) ? 16 : 0; + int x_add = (enable_overscan && !suppress_overscan) ? 8 : 0; + if (svga->interlace && svga->hwcursor_oddeven) svga->hwcursor_latch.addr += 16; @@ -1974,9 +1976,9 @@ void s3_hwcursor_draw(svga_t *svga, int displine) if (offset >= svga->hwcursor_latch.x) { if (!(dat[0] & 0x8000)) - ((uint32_t *)buffer32->line[displine])[offset + 32] = (dat[1] & 0x8000) ? 0xffffff : 0; + ((uint32_t *)buffer32->line[displine + y_add])[offset + 32 + x_add] = (dat[1] & 0x8000) ? 0xffffff : 0; else if (dat[1] & 0x8000) - ((uint32_t *)buffer32->line[displine])[offset + 32] ^= 0xffffff; + ((uint32_t *)buffer32->line[displine + y_add])[offset + 32 + x_add] ^= 0xffffff; } offset++;