From b97d525e0cc8359598fd5b190d4a73eac071eb5b Mon Sep 17 00:00:00 2001 From: SarahW Date: Sun, 5 Nov 2017 15:42:04 +0000 Subject: [PATCH] Fix 8-bit RAMDAC palette handling. --- src/vid_svga.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/vid_svga.c b/src/vid_svga.c index 6b45d84..072861f 100644 --- a/src/vid_svga.c +++ b/src/vid_svga.c @@ -151,9 +151,9 @@ void svga_out(uint16_t addr, uint8_t val, void *p) svga->dac_pos++; break; case 2: - svga->vgapal[svga->dac_write].r = svga->dac_r & 0x3f; - svga->vgapal[svga->dac_write].g = svga->dac_g & 0x3f; - svga->vgapal[svga->dac_write].b = val & 0x3f; + svga->vgapal[svga->dac_write].r = svga->dac_r; + svga->vgapal[svga->dac_write].g = svga->dac_g; + svga->vgapal[svga->dac_write].b = val; if (svga->ramdac_type == RAMDAC_8BIT) svga->pallook[svga->dac_write] = makecol32(svga->vgapal[svga->dac_write].r, svga->vgapal[svga->dac_write].g, svga->vgapal[svga->dac_write].b); else @@ -243,14 +243,20 @@ uint8_t svga_in(uint16_t addr, void *p) { case 0: svga->dac_pos++; - return svga->vgapal[svga->dac_read].r; + if (svga->ramdac_type == RAMDAC_8BIT) + return svga->vgapal[svga->dac_read].r; + return svga->vgapal[svga->dac_read].r & 0x3f; case 1: svga->dac_pos++; - return svga->vgapal[svga->dac_read].g; + if (svga->ramdac_type == RAMDAC_8BIT) + return svga->vgapal[svga->dac_read].g; + return svga->vgapal[svga->dac_read].g & 0x3f; case 2: svga->dac_pos=0; svga->dac_read = (svga->dac_read + 1) & 255; - return svga->vgapal[(svga->dac_read - 1) & 255].b; + if (svga->ramdac_type == RAMDAC_8BIT) + return svga->vgapal[(svga->dac_read - 1) & 255].b; + return svga->vgapal[(svga->dac_read - 1) & 255].b & 0x3f; } break; case 0x3CC: