From 2ef029fb058e1b711a3a02fa3adcc8b2ce1e6bc5 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sat, 5 Jul 2025 11:01:25 +0200 Subject: [PATCH] Fix one edge case of gpstatus stall. Which fixes Win3.1's Mach32 2.3 4bpp driver stalling. --- src/video/vid_ati_mach8.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index df8965caf..4bb678857 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -270,7 +270,7 @@ mach_log(const char *fmt, ...) static int mach_pixel_write(mach_t *mach) { - if (mach->accel.dp_config & 1) + if (mach->accel.dp_config & 0x01) return 1; return 0; @@ -279,7 +279,7 @@ mach_pixel_write(mach_t *mach) static int mach_pixel_read(mach_t *mach) { - if (mach->accel.dp_config & 1) + if (mach->accel.dp_config & 0x01) return 0; return 1; @@ -4303,6 +4303,10 @@ mach_accel_in_fifo(mach_t *mach, svga_t *svga, ibm8514_t *dev, uint16_t port, in dev->force_busy = 0; else if ((mono_src == 2) || (frgd_sel == 2) || (bkgd_sel == 2)) dev->force_busy = 0; + else if (!dev->accel.cmd_back) + dev->force_busy = 0; + + mach_log("2Force Busy=%d, frgdsel=%d, bkgdsel=%d, monosrc=%d, read=%d, dpconfig=%04x, back=%d.\n", dev->force_busy, frgd_sel, bkgd_sel, mono_src, mach_pixel_read(mach), mach->accel.dp_config, dev->accel.cmd_back); break; case 5: if (dev->accel.sx >= mach->accel.width)