{
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;
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;
if (blt_delayed_irq < 0) {
if (intreq & 0x0040)
blt_delayed_irq = 3;
- intreq &= 0x0040;
+ intreq &= ~0x0040;
}
} else {
last_blitter_hpos = 0;