int wow_interrupt(void) { int res,i,next; if (!osd_skip_this_frame()) wow_update_line(Machine->scrbitmap,CurrentScan); next = (CurrentScan + 1) % MAX_INT_PER_FRAME; for (i = 0;i < 8;i++) colors[next][i] = colors[CurrentScan][i]; for (i = 0;i < 4;i++) sparkle[next][i] = sparkle[CurrentScan][i]; colorsplit[next] = colorsplit[CurrentScan]; CurrentScan = next; /* Scanline interrupt enabled ? */ res = ignore_interrupt(); if ((InterruptFlag & 0x08) && (CurrentScan == NextScanInt)) res = interrupt(); return res; }
static void interrupt_common(void) { int i,next; if (!osd_skip_this_frame()) wow_update_line(Machine->scrbitmap,CurrentScan); next = (CurrentScan + 1) % MAX_INT_PER_FRAME; for (i = 0;i < 8;i++) colors[next][i] = colors[CurrentScan][i]; for (i = 0;i < 4;i++) sparkle[next][i] = sparkle[CurrentScan][i]; colorsplit[next] = colorsplit[CurrentScan]; CurrentScan = next; }