From 27c49ad8981c0d8128afb9e91c9aea5281ae8af3 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 1 Mar 2018 23:05:59 +0100 Subject: [PATCH] Committed the vid_svga.c/h changes that I forgot before. --- src/video/vid_svga.c | 39 ++++++++++++++++++++++++++++++++++++++- src/video/vid_svga.h | 4 +++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 87b273323..24459ea29 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -11,7 +11,7 @@ * This is intended to be used by another SVGA driver, * and not as a card in it's own right. * - * Version: @(#)vid_svga.c 1.0.21 2018/02/24 + * Version: @(#)vid_svga.c 1.0.22 2018/03/01 * * Authors: Sarah Walker, * Miran Grca, @@ -1430,6 +1430,27 @@ uint32_t svga_readl(uint32_t addr, void *p) return *(uint32_t *)&svga->vram[addr & svga->vram_mask]; } +void svga_writeb_linear(uint32_t addr, uint8_t val, void *p) +{ + svga_t *svga = (svga_t *)p; + + if (!svga->fast) + { + svga_write_linear(addr, val, p); + return; + } + + egawrites += 2; + + if (svga_output) pclog("Write LFBw %08X %04X\n", addr, val); + addr &= svga->decode_mask; + if (addr >= svga->vram_max) + return; + addr &= svga->vram_mask; + svga->changedvram[addr >> 12] = changeframecount; + *(uint8_t *)&svga->vram[addr] = val; +} + void svga_writew_linear(uint32_t addr, uint16_t val, void *p) { svga_t *svga = (svga_t *)p; @@ -1482,6 +1503,22 @@ void svga_writel_linear(uint32_t addr, uint32_t val, void *p) *(uint32_t *)&svga->vram[addr] = val; } +uint8_t svga_readb_linear(uint32_t addr, void *p) +{ + svga_t *svga = (svga_t *)p; + + if (!svga->fast) + return svga_read_linear(addr, p); + + egareads++; + + addr &= svga->decode_mask; + if (addr >= svga->vram_max) + return 0xff; + + return *(uint8_t *)&svga->vram[addr & svga->vram_mask]; +} + uint16_t svga_readw_linear(uint32_t addr, void *p) { svga_t *svga = (svga_t *)p; diff --git a/src/video/vid_svga.h b/src/video/vid_svga.h index db9e22a7b..bf1189ed4 100644 --- a/src/video/vid_svga.h +++ b/src/video/vid_svga.h @@ -8,7 +8,7 @@ * * Generic SVGA handling. * - * Version: @(#)vid_svga.h 1.0.8 2018/02/24 + * Version: @(#)vid_svga.h 1.0.9 2018/03/01 * * Authors: Sarah Walker, * Miran Grca, @@ -172,9 +172,11 @@ void svga_write(uint32_t addr, uint8_t val, void *p); void svga_writew(uint32_t addr, uint16_t val, void *p); void svga_writel(uint32_t addr, uint32_t val, void *p); uint8_t svga_read_linear(uint32_t addr, void *p); +uint8_t svga_readb_linear(uint32_t addr, void *p); uint16_t svga_readw_linear(uint32_t addr, void *p); uint32_t svga_readl_linear(uint32_t addr, void *p); void svga_write_linear(uint32_t addr, uint8_t val, void *p); +void svga_writeb_linear(uint32_t addr, uint8_t val, void *p); void svga_writew_linear(uint32_t addr, uint16_t val, void *p); void svga_writel_linear(uint32_t addr, uint32_t val, void *p);