From 17cae8a2d77bc210b43c5d6bac2b611d8df04c41 Mon Sep 17 00:00:00 2001 From: TomW Date: Wed, 5 Nov 2014 18:17:39 +0000 Subject: [PATCH] Implemented 256kb wrapping on S3 cards. --- src/vid_s3.c | 6 ++++-- src/vid_s3_virge.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/vid_s3.c b/src/vid_s3.c index c7da015..ecc9f51 100644 --- a/src/vid_s3.c +++ b/src/vid_s3.c @@ -152,9 +152,11 @@ void s3_out(uint16_t addr, uint8_t val, void *p) { case 0x31: s3->ma_ext = (s3->ma_ext & 0x1c) | ((val & 0x30) >> 4); - svga->vrammask = /*(val & 8) ? */s3->vram_mask/* : 0x3ffff*/; break; - + case 0x32: + svga->vrammask = (val & 0x40) ? 0x3ffff : s3->vram_mask; + break; + case 0x50: switch (svga->crtc[0x50] & 0xc1) { diff --git a/src/vid_s3_virge.c b/src/vid_s3_virge.c index 88fc257..b83e014 100644 --- a/src/vid_s3_virge.c +++ b/src/vid_s3_virge.c @@ -291,7 +291,9 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p) { case 0x31: virge->ma_ext = (virge->ma_ext & 0x1c) | ((val & 0x30) >> 4); - svga->vrammask = (val & 8) ? 0x3fffff : 0x3ffff; + break; + case 0x32: + svga->vrammask = (val & 0x40) ? 0x3ffff : ((virge->memory_size << 20) - 1); break; case 0x50: