From f43284985d8688e4cb94cf4159db11d4b86ffa0b Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sun, 28 Mar 2021 19:17:12 +0200 Subject: [PATCH] Tseng ET4000w32x changes: Fixed freezes, once and for all, on win2000 (W32p). Fixed some graphical glitches under win3.x that were caused by the FIFO (W32p). Fixed vlb flag, now it loads the VLB rom properly (W32i). Anything using the ICS ramdacs now has a svga->clock /= 2 in recalctimings (W32p rev c and W32/W32i). --- src/video/vid_et4000w32.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/video/vid_et4000w32.c b/src/video/vid_et4000w32.c index 070e9aa68..7edc112f9 100644 --- a/src/video/vid_et4000w32.c +++ b/src/video/vid_et4000w32.c @@ -444,7 +444,7 @@ et4000w32p_recalctimings(svga_t *svga) svga->render = svga_render_2bpp_highres; break; case 0x40: case 0x60: /* 256+ colours */ - if (et4000->type <= ET4000W32I) + if (et4000->type <= ET4000W32P_REVC) svga->clock /= 2; switch (svga->bpp) { @@ -871,7 +871,7 @@ et4000w32p_mmu_read(uint32_t addr, void *p) temp |= ACL_RDST; if (FIFO_FULL) temp |= ACL_WRST; - if (temp == ACL_XYST && (et4000->acl.internal.ctrl_routing & 3)) + if (temp == ACL_XYST && (et4000->acl.internal.ctrl_routing == 1 || et4000->acl.internal.ctrl_routing == 2)) temp |= ACL_RDST; } else { et4000->acl.status &= ~(ACL_XYST | ACL_SSO); @@ -1470,6 +1470,9 @@ et4000w32p_init(const device_t *info) et4000->type = info->local; + et4000->pci = (info->flags & DEVICE_PCI) ? 0x80 : 0x00; + et4000->vlb = (info->flags & DEVICE_VLB) ? 0x40 : 0x00; + switch(et4000->type) { case ET4000W32: /* ET4000/W32 */ @@ -1548,8 +1551,6 @@ et4000w32p_init(const device_t *info) et4000->svga.getclock = icd2061_getclock; break; } - et4000->pci = (info->flags & DEVICE_PCI) ? 0x80 : 0x00; - et4000->vlb = (info->flags & DEVICE_VLB) ? 0x40 : 0x00; if (info->flags & DEVICE_PCI) mem_mapping_disable(&et4000->bios_rom.mapping);