From cada868428f2eb74a973f2188bf31cd5dc3ebfad Mon Sep 17 00:00:00 2001 From: SarahW Date: Sat, 21 Nov 2020 20:45:56 +0000 Subject: [PATCH] Tweak accesses to S3 system control and extension registers. Fixes banking on some versions of UNIVBE (eg as used by Pro Pinball : The Web). --- src/vid_s3.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vid_s3.c b/src/vid_s3.c index f4064a9..f56ae34 100644 --- a/src/vid_s3.c +++ b/src/vid_s3.c @@ -999,7 +999,11 @@ void s3_out(uint16_t addr, uint8_t val, void *p) return; if ((svga->crtcreg == 7) && (svga->crtc[0x11] & 0x80)) val = (svga->crtc[7] & ~0x10) | (val & 0x10); - if (svga->crtcreg >= 0x20 && svga->crtcreg != 0x38 && (svga->crtc[0x38] & 0xcc) != 0x48) return; + if (svga->crtcreg >= 0x20 && svga->crtcreg != 0x38 && svga->crtcreg != 0x39 && (svga->crtc[0x38] & 0xcc) != 0x48) + { + if (!((svga->crtc[0x39] & 0xe0) == 0xa0 && svga->crtcreg >= 0x40 && svga->crtcreg <= 0x6d)) + return; + } old = svga->crtc[svga->crtcreg]; svga->crtc[svga->crtcreg] = val; switch (svga->crtcreg)