static INTERRUPT_GEN(mirco_vblank) { locals.vblankCount++; if (!(locals.vblankCount % 2)) { coreGlobals.solenoids = locals.solenoids; } core_updateSw(TRUE); // flippers are directly driven by solenoids }
static INTERRUPT_GEN(by8035_vblank) { /*------------------------------- / copy local data to interface /--------------------------------*/ locals.vblankCount += 1; /*-- lamps --*/ if ((locals.vblankCount % 1) == 0) { memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memset(coreGlobals.tmpLampMatrix, 0, sizeof(coreGlobals.tmpLampMatrix)); } /*-- solenoids --*/ if ((locals.vblankCount % 1) == 0) { coreGlobals.solenoids = locals.solenoids; locals.solenoids = coreGlobals.pulsedSolState; } /*-- display --*/ if ((locals.vblankCount % 1) == 0) { memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments)); memset(locals.segments, 0, sizeof(locals.segments)); } core_updateSw(TRUE); }
static INTERRUPT_GEN(EFO_vblank) { static int vblankCount; memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); if ((vblankCount % 12) == 0) { memset(coreGlobals.tmpLampMatrix, 0, sizeof(coreGlobals.tmpLampMatrix)); } vblankCount++; core_updateSw(TRUE); }
static INTERRUPT_GEN(vblank) { /*------------------------------- / copy local data to interface /--------------------------------*/ memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments)); coreGlobals.solenoids = locals.solenoids; core_updateSw(0); }
/*------------------------------- / copy local data to interface /--------------------------------*/ static INTERRUPT_GEN(SLEIC_vblank) { locals.vblankCount++; /*-- lamps --*/ if ((locals.vblankCount % SLEIC_LAMPSMOOTH) == 0) memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); /*-- solenoids --*/ coreGlobals.solenoids = locals.solenoids; core_updateSw(TRUE); }
static INTERRUPT_GEN(joctronic_vblank) { static int count; int i; if (count > 2) { for (i = 0; i < 8; i++) { coreGlobals.segments[40 + i].w = locals.segments[i].w; locals.segments[i].w = 0; } } count = (count + 1) % 4; core_updateSw(TRUE); // game enables flippers directly }
static INTERRUPT_GEN(s11_vblank) { /*------------------------------- / copy local data to interface /--------------------------------*/ locals.vblankCount += 1; /*-- lamps --*/ if ((locals.vblankCount % S11_LAMPSMOOTH) == 0) { memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memset(coreGlobals.tmpLampMatrix, 0, sizeof(coreGlobals.tmpLampMatrix)); } /*-- solenoids --*/ if (locals.ssEn) { // set gameon and special solenoids int ii; locals.solenoids |= CORE_SOLBIT(S11_GAMEONSOL); /*-- special solenoids updated based on switches --*/ for (ii = 0; ii < 6; ii++) { if (core_gameData->sxx.ssSw[ii] && core_getSw(core_gameData->sxx.ssSw[ii])) locals.solenoids |= CORE_SOLBIT(CORE_FIRSTSSSOL+ii); } } #ifdef FIXMUX // mux translation moved #else if ((core_gameData->sxx.muxSol) && (locals.solenoids & CORE_SOLBIT(core_gameData->sxx.muxSol))) { if (core_gameData->hw.gameSpecific1 & S11_RKMUX) locals.solenoids = (locals.solenoids & 0x00ff8fef) | ((locals.solenoids & 0x00000010)<<20) | ((locals.solenoids & 0x00007000)<<13); else locals.solenoids = (locals.solenoids & 0x00ffff00) | (locals.solenoids<<24); } #endif locals.solsmooth[locals.vblankCount % S11_SOLSMOOTH] = locals.solenoids; #if S11_SOLSMOOTH != 2 # error "Need to update smooth formula" #endif coreGlobals.solenoids = locals.solsmooth[0] | locals.solsmooth[1]; coreGlobals.solenoids2 = locals.extSol << 8; locals.solenoids = coreGlobals.pulsedSolState; locals.extSol = locals.extSolPulse; /*-- display --*/ if ((locals.vblankCount % S11_DISPLAYSMOOTH) == 0) { memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments)); memcpy(locals.segments, locals.pseg, sizeof(locals.segments)); coreGlobals.diagnosticLed = locals.diagnosticLed; locals.diagnosticLed = 0; } core_updateSw(locals.ssEn); }
static INTERRUPT_GEN(vblank) { locals.vblankCount++; /*------------------------------- / copy local data to interface /--------------------------------*/ memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments)); if (++locals.dispCount > 15) { locals.dispCount = 0; memset(locals.segments, 0, sizeof(locals.segments)); } if (locals.solenoids & 0xffff) { coreGlobals.solenoids = locals.solenoids; locals.vblankCount = 1; } if ((locals.vblankCount % 4) == 0) coreGlobals.solenoids = locals.solenoids; core_updateSw(core_getSol(17)); }
static INTERRUPT_GEN(se_vblank) { /*------------------------------- / copy local data to interface /--------------------------------*/ selocals.vblankCount = (selocals.vblankCount+1) % 16; /*-- lamps --*/ if ((selocals.vblankCount % SE_LAMPSMOOTH) == 0) { memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memset(coreGlobals.tmpLampMatrix, 0, 10); } /*-- solenoids --*/ coreGlobals.solenoids2 = (coreGlobals.solenoids2 & 0xfff0) | selocals.flipsol; selocals.flipsol = selocals.flipsolPulse; if ((selocals.vblankCount % SE_SOLSMOOTH) == 0) { coreGlobals.solenoids = selocals.solenoids; selocals.solenoids = coreGlobals.pulsedSolState; } /*-- display --*/ if ((selocals.vblankCount % SE_DISPLAYSMOOTH) == 0) { coreGlobals.diagnosticLed = selocals.diagnosticLed; selocals.diagnosticLed = 0; } core_updateSw(TRUE); /* flippers are CPU controlled */ }
static INTERRUPT_GEN(taito_vblank) { //------------------------------- // copy local data to interface //------------------------------- TAITOlocals.vblankCount += 1; // -- solenoids -- if ((TAITOlocals.vblankCount % TAITO_SOLSMOOTH) == 0) { coreGlobals.solenoids = TAITOlocals.solenoids; } // -- lamps -- if ((TAITOlocals.vblankCount % TAITO_LAMPSMOOTH) == 0) { memcpy(coreGlobals.lampMatrix, TAITOlocals.lampMatrix, sizeof(coreGlobals.lampMatrix)); } // -- display -- if ((TAITOlocals.vblankCount % TAITO_DISPLAYSMOOTH) == 0) { memcpy(coreGlobals.segments, TAITOlocals.segments, sizeof coreGlobals.segments); } // sol 18 is the play relay core_updateSw(core_getSol(18)); }
static INTERRUPT_GEN(vblank) { memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix)); memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments)); coreGlobals.solenoids = locals.solenoids; core_updateSw(core_getSol(25)); }
static INTERRUPT_GEN(mephisto_vblank) { core_updateSw(TRUE); }
static INTERRUPT_GEN(spectra_vblank) { core_updateSw(core_getSol(11)); }