]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Force-finished blitter interrupt state restore.
authorToni Wilen <twilen@winuae.net>
Tue, 24 May 2016 15:52:16 +0000 (18:52 +0300)
committerToni Wilen <twilen@winuae.net>
Tue, 24 May 2016 15:52:16 +0000 (18:52 +0300)
blitter.cpp

index 4c8ab2c7e6cdfbb23e6a5522e1827a4472e6ea78..08b5d63e3d9385b1570cff8f7ae1290213212ffe 100644 (file)
@@ -1103,6 +1103,15 @@ void decide_blitter (int hpos)
 {
        int hsync = hpos < 0;
 
+       if (hsync && blt_delayed_irq) {
+               if (blt_delayed_irq > 0)
+                       blt_delayed_irq--;
+               if (blt_delayed_irq <= 0) {
+                       blt_delayed_irq = 0;
+                       send_interrupt(6, 2 * CYCLE_UNIT);
+               }
+       }
+
        if (immediate_blits) {
                if (bltstate == BLT_done)
                        return;
@@ -1114,12 +1123,6 @@ void decide_blitter (int hpos)
        if (blit_startcycles > 0)
                do_startcycles (hpos);
 
-       if (blt_delayed_irq > 0 && hsync) {
-               blt_delayed_irq--;
-               if (!blt_delayed_irq)
-                       send_interrupt (6, 2 * CYCLE_UNIT);
-       }
-
        if (bltstate == BLT_done)
                return;
 
@@ -1784,7 +1787,7 @@ void restore_blitter_finish (void)
                if (blt_delayed_irq < 0) {
                        if (intreq & 0x0040)
                                blt_delayed_irq = 3;
-                       intreq &= 0x0040;
+                       intreq &= ~0x0040;
                }
        } else {
                last_blitter_hpos = 0;