From 77140b874a607b3035386628cf651de566da1fd2 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Wed, 1 Apr 2020 00:40:29 +0200 Subject: [PATCH] Ported the latest Win9x MGA fix from PCem. --- src/video/vid_mga.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/video/vid_mga.c b/src/video/vid_mga.c index 26fcba896..ebfc72146 100644 --- a/src/video/vid_mga.c +++ b/src/video/vid_mga.c @@ -1860,28 +1860,28 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p) case REG_SRC0: mystique->dwgreg.src[0] = val; - if ((mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) + if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) blit_iload_write(mystique, mystique->dwgreg.src[0], 32); break; case REG_SRC1: mystique->dwgreg.src[1] = val; - if ((mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) + if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) blit_iload_write(mystique, mystique->dwgreg.src[1], 32); break; case REG_SRC2: mystique->dwgreg.src[2] = val; - if ((mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) + if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) blit_iload_write(mystique, mystique->dwgreg.src[2], 32); break; case REG_SRC3: mystique->dwgreg.src[3] = val; - if ((mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) + if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) blit_iload_write(mystique, mystique->dwgreg.src[3], 32); break; case REG_DMAPAD: - if ((mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) - blit_iload_write(mystique, mystique->dwgreg.src[0], 32); + if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD) + blit_iload_write(mystique, val, 32); break; case REG_AR0: @@ -2249,11 +2249,10 @@ run_dma(mystique_t *mystique) else reg_addr += 0x1c00; - if ((reg_addr & 0x300) == 0x100 && reg_addr != REG_DMAPAD) + if ((reg_addr & 0x300) == 0x100) mystique->blitter_submit_dma_refcount++; - if (reg_addr != REG_DMAPAD) - mystique_accel_ctrl_write_l(reg_addr, val, mystique); + mystique_accel_ctrl_write_l(reg_addr, val, mystique); } mystique->dma.pri_header >>= 8; @@ -2292,11 +2291,10 @@ run_dma(mystique_t *mystique) else reg_addr += 0x1c00; - if ((reg_addr & 0x300) == 0x100 && reg_addr != REG_DMAPAD) + if ((reg_addr & 0x300) == 0x100) mystique->blitter_submit_dma_refcount++; - if (reg_addr != REG_DMAPAD) - mystique_accel_ctrl_write_l(reg_addr, val, mystique); + mystique_accel_ctrl_write_l(reg_addr, val, mystique); mystique->dma.sec_header >>= 8; mystique->dma.sec_state = (mystique->dma.sec_state + 1) & 3;