Mystique DMAPAD register doesn't act like an ILOAD mirror on DMA writes.

This commit is contained in:
SarahW 2020-03-30 21:03:59 +01:00
commit bb1f314d9c

View file

@ -2385,10 +2385,11 @@ static void run_dma(mystique_t *mystique)
reg_addr += 0x1c00;
// pclog(" DMA pri write %08x to %02x %04x %08x %08x\n", val, mystique->dma.pri_header & 0xff, reg_addr, (mystique->dma.primaddress & DMA_ADDR_MASK), (mystique->dma.primend & DMA_ADDR_MASK));
if ((reg_addr & 0x300) == 0x100)
if ((reg_addr & 0x300) == 0x100 && reg_addr != REG_DMAPAD)
mystique->blitter_submit_dma_refcount++;
mystique_accel_ctrl_write_l(reg_addr, val, mystique);
if (reg_addr != REG_DMAPAD)
mystique_accel_ctrl_write_l(reg_addr, val, mystique);
}
mystique->dma.pri_header >>= 8;
@ -2435,10 +2436,11 @@ static void run_dma(mystique_t *mystique)
reg_addr += 0x1c00;
// pclog(" DMA sec write %08x to %02x %04x %08x %08x\n", val, mystique->dma.sec_header & 0xff, reg_addr, (mystique->dma.secaddress & DMA_ADDR_MASK), (mystique->dma.secend & DMA_ADDR_MASK));
if ((reg_addr & 0x300) == 0x100)
if ((reg_addr & 0x300) == 0x100 && reg_addr != REG_DMAPAD)
mystique->blitter_submit_dma_refcount++;
mystique_accel_ctrl_write_l(reg_addr, val, mystique);
if (reg_addr != REG_DMAPAD)
mystique_accel_ctrl_write_l(reg_addr, val, mystique);
}
mystique->dma.sec_header >>= 8;