diff --git a/src/include/86box/vid_svga.h b/src/include/86box/vid_svga.h index 9fbe4c7fe..14883f315 100644 --- a/src/include/86box/vid_svga.h +++ b/src/include/86box/vid_svga.h @@ -22,6 +22,7 @@ #define FLAG_ADDR_BY8 2 #define FLAG_EXT_WRITE 4 #define FLAG_LATCH8 8 +#define FLAG_NOSKEW 16 typedef struct { diff --git a/src/video/vid_et4000w32.c b/src/video/vid_et4000w32.c index 2c04b454e..b3eb235bd 100644 --- a/src/video/vid_et4000w32.c +++ b/src/video/vid_et4000w32.c @@ -1312,6 +1312,7 @@ void *et4000w32p_init(const device_t *info) et4000->svga.clock_gen = et4000->svga.ramdac; et4000->svga.getclock = stg_getclock; + et4000->svga.adv_flags |= FLAG_NOSKEW; break; case ET4000W32_DIAMOND: diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 0e1511af4..0298c3f36 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -445,7 +445,7 @@ svga_recalctimings(svga_t *svga) svga->interlace = 0; - svga->ma_latch = ((svga->crtc[0xc] << 8) | svga->crtc[0xd]) + ((svga->crtc[8] & 0x60) >> 5); + svga->ma_latch = ((svga->crtc[0xc] << 8) | svga->crtc[0xd]); svga->ca_adj = 0; svga->rowcount = svga->crtc[9] & 31; @@ -459,6 +459,8 @@ svga_recalctimings(svga_t *svga) svga->hdisp *= (svga->seqregs[1] & 1) ? 16 : 18; } else { svga->render = svga_render_text_80; + if (!(svga->adv_flags & FLAG_NOSKEW)) + svga->ma_latch += ((svga->crtc[8] & 0x60) >> 5); svga->hdisp *= (svga->seqregs[1] & 1) ? 8 : 9; } svga->hdisp_old = svga->hdisp;