Overview
Legacy evidence identifies this candidate as Williams (1993). The information below is preserved for recreation work but is not automatically treated as validated physical-machine fact.
Playfield devices
Switch, lamp/GI, and controlled-device candidates are in the adjacent machine definition. Source-specific implementation notes are retained below.
Custom mechanisms
No custom mechanism conclusion has been validated. Manuals, schematics, PinMAME source, and gameplay evidence still need to be checked.
Ball-state transitions
Ball paths, trough ordering, locks, kickouts, and causal transitions have not yet been normalized. Relevant source notes follow under Evidence notes.
Controller interactions
Controller callbacks and bindings are candidate evidence only until reconciled against PinMAME and physical documentation.
Service and setup information
Unknown; locate operator/service documentation.
Timing and tuning observations
Source timing values may describe a particular VPX implementation rather than physical hardware and require review.
Recreation guidance
Do not treat this partial definition as a complete authoring specification. Resolve every coverage requirement and conflict before promotion.
Evidence notes
platforms/wpc.json#/coils/1: Unbound legacy outputs recordc_flipper_lower_rightwas retained as a migration note only.platforms/wpc.json#/coils/2: Unbound legacy outputs recordc_flipper_lower_leftwas retained as a migration note only.platforms/wpc.json#/coils/3: Unbound legacy outputs recordc_flipper_upper_rightwas retained as a migration note only.platforms/wpc.json#/coils/4: Unbound legacy outputs recordc_flipper_upper_leftwas retained as a migration note only.games/drac.json#/switches/0._vbscript_name: vpmNudge.TiltSwitchgames/drac.json#/switches/0._inferred_type: cabinetgames/drac.json#/switches/0._note: Set via vpmNudge.TiltSwitch = 14games/drac.json#/switches/1._vbscript_name: sw15games/drac.json#/switches/1._inferred_type: drop_targetgames/drac.json#/switches/1._note: 3-bank drop target, DTRaise/DTDrop/DTHit via sw15games/drac.json#/switches/2._vbscript_name: sw16games/drac.json#/switches/2._inferred_type: rollovergames/drac.json#/switches/3._vbscript_name: sw17games/drac.json#/switches/3._inferred_type: rollovergames/drac.json#/switches/4._vbscript_name: Controller.Switch(22)games/drac.json#/switches/4._inferred_type: cabinetgames/drac.json#/switches/4._note: Set to 1 at init -- close coin doorgames/drac.json#/switches/5._vbscript_name: Controller.Switch(24)games/drac.json#/switches/5._inferred_type: cabinetgames/drac.json#/switches/5._note: Set to 1 at init -- keep coin door closedgames/drac.json#/switches/6._vbscript_name: sw25games/drac.json#/switches/6._inferred_type: rollovergames/drac.json#/switches/7._vbscript_name: sw26games/drac.json#/switches/7._inferred_type: rollovergames/drac.json#/switches/8._vbscript_name: sw27games/drac.json#/switches/8._inferred_type: rollovergames/drac.json#/switches/9._vbscript_name: sw28games/drac.json#/switches/9._inferred_type: rollovergames/drac.json#/switches/9._note: Triggers WireRampOff on hitgames/drac.json#/switches/10._vbscript_name: sw31games/drac.json#/switches/10._inferred_type: rollovergames/drac.json#/switches/11._vbscript_name: Controller.Switch(34)games/drac.json#/switches/11._inferred_type: cabinetgames/drac.json#/switches/11._note: Set via PlungerKey keypressgames/drac.json#/switches/12._vbscript_name: sw35games/drac.json#/switches/12._inferred_type: rollovergames/drac.json#/switches/13._vbscript_name: sw36games/drac.json#/switches/13._inferred_type: rollovergames/drac.json#/switches/13._note: Triggers leftInlaneSpeedLimitgames/drac.json#/switches/14._vbscript_name: sw37games/drac.json#/switches/14._inferred_type: rollovergames/drac.json#/switches/14._note: Triggers rightInlaneSpeedLimitgames/drac.json#/switches/15._vbscript_name: sw38games/drac.json#/switches/15._inferred_type: rollovergames/drac.json#/switches/16._vbscript_name: sw41games/drac.json#/switches/16._inferred_type: troughgames/drac.json#/switches/17._vbscript_name: sw42games/drac.json#/switches/17._inferred_type: troughgames/drac.json#/switches/18._vbscript_name: sw43games/drac.json#/switches/18._inferred_type: troughgames/drac.json#/switches/19._vbscript_name: sw44games/drac.json#/switches/19._inferred_type: troughgames/drac.json#/switches/20._vbscript_name: sw48games/drac.json#/switches/20._inferred_type: draingames/drac.json#/switches/20._note: Ball kicked to trough after 500ms delaygames/drac.json#/switches/21._vbscript_name: sw51games/drac.json#/switches/21._inferred_type: rollovergames/drac.json#/switches/22._vbscript_name: sw52games/drac.json#/switches/22._inferred_type: rollovergames/drac.json#/switches/23._vbscript_name: sw53games/drac.json#/switches/23._inferred_type: kickergames/drac.json#/switches/23._note: Castle Lock 1 -- triggers WireRampOff on unhitgames/drac.json#/switches/24._vbscript_name: sw54games/drac.json#/switches/24._inferred_type: kickergames/drac.json#/switches/25._vbscript_name: sw55games/drac.json#/switches/25._inferred_type: vukgames/drac.json#/switches/25._note: VUK -- WirerampPopper fires via SolCallback(6)games/drac.json#/switches/26._vbscript_name: sw56games/drac.json#/switches/26._inferred_type: vukgames/drac.json#/switches/26._note: VUK -- CryptPopper fires via SolCallback(5), removes magnet ballgames/drac.json#/switches/27._vbscript_name: sw57games/drac.json#/switches/27._inferred_type: kickergames/drac.json#/switches/28._vbscript_name: sw58games/drac.json#/switches/28._inferred_type: rollovergames/drac.json#/switches/28._note: Uses vpmTimer.PulseSw (momentary)games/drac.json#/switches/29._vbscript_name: Bumper2games/drac.json#/switches/29._inferred_type: bumpergames/drac.json#/switches/29._note: vpmTimer.PulseSw 61games/drac.json#/switches/30._vbscript_name: Bumper3games/drac.json#/switches/30._inferred_type: bumpergames/drac.json#/switches/30._note: vpmTimer.PulseSw 62games/drac.json#/switches/31._vbscript_name: Bumper1games/drac.json#/switches/31._inferred_type: bumpergames/drac.json#/switches/31._note: vpmTimer.PulseSw 63games/drac.json#/switches/32._vbscript_name: LeftSlingShotgames/drac.json#/switches/32._inferred_type: slingshotgames/drac.json#/switches/32._note: vpmTimer.PulseSw 64games/drac.json#/switches/33._vbscript_name: RightSlingShotgames/drac.json#/switches/33._inferred_type: slingshotgames/drac.json#/switches/33._note: vpmTimer.PulseSw 65games/drac.json#/switches/34._vbscript_name: sw66games/drac.json#/switches/34._inferred_type: standup_targetgames/drac.json#/switches/35._vbscript_name: sw67games/drac.json#/switches/35._inferred_type: standup_targetgames/drac.json#/switches/36._vbscript_name: sw68games/drac.json#/switches/36._inferred_type: standup_targetgames/drac.json#/switches/37._vbscript_name: sw71games/drac.json#/switches/37._inferred_type: vukgames/drac.json#/switches/37._note: VUK -- CastlePopper fires via SolCallback(3), removes magnet ballgames/drac.json#/switches/38._vbscript_name: sw72games/drac.json#/switches/38._inferred_type: vukgames/drac.json#/switches/38._note: VUK -- CoffinPopper fires via SolCallback(2)games/drac.json#/switches/39._vbscript_name: sw73games/drac.json#/switches/39._inferred_type: rollovergames/drac.json#/switches/40._vbscript_name: Controller.Switch(77)games/drac.json#/switches/40._inferred_type: optogames/drac.json#/switches/40._note: Set by SolRRampUp/SolRRampDown, tracks moving ramp positiongames/drac.json#/switches/41._vbscript_name: Controller.Switch(81)games/drac.json#/switches/41._inferred_type: optogames/drac.json#/switches/41._note: MagnetPos > 490 (mist motor at right end)games/drac.json#/switches/42._vbscript_name: Controller.Switch(82)games/drac.json#/switches/42._inferred_type: optogames/drac.json#/switches/42._note: Ball crossing mist magnet line detected in MistTimergames/drac.json#/switches/43._vbscript_name: Controller.Switch(83)games/drac.json#/switches/43._inferred_type: optogames/drac.json#/switches/43._note: MagnetPos < 10 (mist motor at left end)games/drac.json#/switches/44._vbscript_name: sw84games/drac.json#/switches/44._inferred_type: rollovergames/drac.json#/switches/45._vbscript_name: sw85games/drac.json#/switches/45._inferred_type: rollovergames/drac.json#/switches/45._note: Triggers WireRampOff on hitgames/drac.json#/switches/46._vbscript_name: sw86games/drac.json#/switches/46._inferred_type: standup_targetgames/drac.json#/switches/47._vbscript_name: sw87games/drac.json#/switches/47._inferred_type: standup_targetgames/drac.json#/switches/48._vbscript_name: sw88games/drac.json#/switches/48._inferred_type: standup_targetgames/drac.json#/coils/0._vbscript_name: AutoPlungergames/drac.json#/coils/0._vbscript_callback: SolCallback(1) = "AutoPlunger"games/drac.json#/coils/0._inferred_type: plungergames/drac.json#/coils/1._vbscript_name: CoffinPoppergames/drac.json#/coils/1._vbscript_callback: SolCallback(2) = "CoffinPopper"games/drac.json#/coils/1._inferred_type: vukgames/drac.json#/coils/2._vbscript_name: CastlePoppergames/drac.json#/coils/2._vbscript_callback: SolCallback(3) = "CastlePopper"games/drac.json#/coils/2._inferred_type: vukgames/drac.json#/coils/3._vbscript_name: SolRRampDowngames/drac.json#/coils/3._vbscript_callback: SolCallback(4) = "SolRRampDown"games/drac.json#/coils/3._inferred_type: divertergames/drac.json#/coils/4._vbscript_name: CryptPoppergames/drac.json#/coils/4._vbscript_callback: SolCallback(5) = "CryptPopper"games/drac.json#/coils/4._inferred_type: vukgames/drac.json#/coils/5._vbscript_name: WirerampPoppergames/drac.json#/coils/5._vbscript_callback: SolCallback(6) = "WirerampPopper"games/drac.json#/coils/5._inferred_type: vukgames/drac.json#/coils/6._vbscript_name: SolKnockergames/drac.json#/coils/6._vbscript_callback: SolCallback(7) = "SolKnocker"games/drac.json#/coils/6._inferred_type: knockergames/drac.json#/coils/7._vbscript_name: SolShooterRampgames/drac.json#/coils/7._vbscript_callback: SolCallback(8) = "SolShooterRamp"games/drac.json#/coils/7._inferred_type: divertergames/drac.json#/coils/7._note: Controls sramp2 collidable and FLRamp rotationgames/drac.json#/coils/8._vbscript_name: SolRRampUpgames/drac.json#/coils/8._vbscript_callback: SolCallback(14) = "SolRRampUp"games/drac.json#/coils/8._inferred_type: divertergames/drac.json#/coils/8._note: Raises right ramp, sets sw77=Truegames/drac.json#/coils/9._vbscript_name: SolReleasegames/drac.json#/coils/9._vbscript_callback: SolCallback(16) = "SolRelease"games/drac.json#/coils/9._inferred_type: trough_ejectgames/drac.json#/coils/10._vbscript_name: Flasher17games/drac.json#/coils/10._vbscript_callback: SolModCallback(17) = "Flasher17"games/drac.json#/coils/10._inferred_type: flashergames/drac.json#/coils/10._note: Top Right Corner Flasher (#906), Dracula Flasher (x2) (#906)games/drac.json#/coils/11._vbscript_name: Flasher18games/drac.json#/coils/11._vbscript_callback: SolModCallback(18) = "Flasher18"games/drac.json#/coils/11._inferred_type: flashergames/drac.json#/coils/11._note: Jackpot Flasher (#906), Stoker Flasher (#906)games/drac.json#/coils/12._vbscript_name: Flasher19games/drac.json#/coils/12._vbscript_callback: SolModCallback(19) = "Flasher19"games/drac.json#/coils/12._inferred_type: flashergames/drac.json#/coils/12._note: 3 Bank Flasher (#89), House Flasher (#906)games/drac.json#/coils/13._vbscript_name: Flasher20games/drac.json#/coils/13._vbscript_callback: SolModCallback(20) = "Flasher20"games/drac.json#/coils/13._inferred_type: flashergames/drac.json#/coils/13._note: Top Left Corner Flasher (#89, #906), Mina Flasher (#906)games/drac.json#/coils/14._vbscript_name: Flasher21games/drac.json#/coils/14._vbscript_callback: SolModCallback(21) = "Flasher21"games/drac.json#/coils/14._inferred_type: flashergames/drac.json#/coils/14._note: Castle Flasher (#89), Helsing Flasher (#906)games/drac.json#/coils/15._vbscript_name: Flasher22games/drac.json#/coils/15._vbscript_callback: SolModCallback(22) = "Flasher22"games/drac.json#/coils/15._inferred_type: flashergames/drac.json#/coils/15._note: Left Ramp Flasher (#906), Left Logo Flasher (#906)games/drac.json#/coils/16._vbscript_name: Flasher23games/drac.json#/coils/16._vbscript_callback: SolModCallback(23) = "Flasher23"games/drac.json#/coils/16._inferred_type: flashergames/drac.json#/coils/16._note: Right Ramp Flasher (#906), Right Logo Flasher (#906)games/drac.json#/coils/17._vbscript_name: Flasher24games/drac.json#/coils/17._vbscript_callback: SolModCallback(24) = "Flasher24"games/drac.json#/coils/17._inferred_type: flashergames/drac.json#/coils/17._note: Asylum Flasher (#89), Renfield Flasher (#906)games/drac.json#/coils/18._vbscript_name: SolDTUpgames/drac.json#/coils/18._vbscript_callback: SolCallback(25) = "SolDTUp"games/drac.json#/coils/18._inferred_type: drop_target_resetgames/drac.json#/coils/18._note: Resets sw15 drop target bank via DTRaisegames/drac.json#/coils/19._vbscript_name: Flasher26games/drac.json#/coils/19._vbscript_callback: SolModCallback(26) = "Flasher26"games/drac.json#/coils/19._inferred_type: flashergames/drac.json#/coils/19._note: Speaker panel flashergames/drac.json#/coils/20._vbscript_name: SolMistMagnetgames/drac.json#/coils/20._vbscript_callback: SolCallback(27) = "SolMistMagnet"games/drac.json#/coils/20._inferred_type: magnetgames/drac.json#/coils/20._note: Controls mist multiball magnet attractgames/drac.json#/coils/21._vbscript_name: Controller.Solenoid(28)games/drac.json#/coils/21._inferred_type: motorgames/drac.json#/coils/21._note: Read directly by MotorTimer_Timer -- no SolCallback, drives mist motor positiongames/drac.json#/coils/22._vbscript_name: solTopDivertergames/drac.json#/coils/22._vbscript_callback: SolCallback(33) = "solTopDiverter"games/drac.json#/coils/22._inferred_type: divertergames/drac.json#/coils/23._vbscript_name: SolRGategames/drac.json#/coils/23._vbscript_callback: SolCallback(34) = "SolRGate"games/drac.json#/coils/23._inferred_type: gategames/drac.json#/coils/24._vbscript_name: CastleLockPostgames/drac.json#/coils/24._vbscript_callback: SolCallback(35) = "CastleLockPost"games/drac.json#/coils/24._inferred_type: postgames/drac.json#/coils/24._note: Castle Lock Post -- controls clpost.isdroppedgames/drac.json#/coils/25._vbscript_name: SolLGategames/drac.json#/coils/25._vbscript_callback: SolCallback(36) = "SolLGate"games/drac.json#/coils/25._inferred_type: gategames/drac.json#/coils/26: Unbound legacy outputs recordsLLFlipperwas retained as a migration note only.games/drac.json#/coils/26._vbscript_name: SolLFlippergames/drac.json#/coils/26._vbscript_callback: SolCallback(sLLFlipper) = "SolLFlipper"games/drac.json#/coils/26._inferred_type: flippergames/drac.json#/coils/26._note: sLLFlipper is a WPC.VBS framework constant (typically 34 for WPC, but varies)games/drac.json#/coils/27: Unbound legacy outputs recordsLRFlipperwas retained as a migration note only.games/drac.json#/coils/27._vbscript_name: SolRFlippergames/drac.json#/coils/27._vbscript_callback: SolCallback(sLRFlipper) = "SolRFlipper"games/drac.json#/coils/27._inferred_type: flippergames/drac.json#/coils/27._note: sLRFlipper is a WPC.VBS framework constant (typically 36 for WPC, but varies)games/drac.json#/lamps/0._note: VLM lightmap LM_L_l16games/drac.json#/lamps/1._note: VLM lightmap LM_L_l17games/drac.json#/lamps/2._note: VLM lightmap LM_L_l18games/drac.json#/lamps/3._note: VLM lightmap LM_L_l21games/drac.json#/lamps/4._note: VLM lightmap LM_L_l22games/drac.json#/lamps/5._note: VLM lightmap LM_L_l23games/drac.json#/lamps/6._note: VLM lightmap LM_L_l24games/drac.json#/lamps/7._note: VLM lightmap LM_L_l25games/drac.json#/lamps/8._note: VLM lightmap LM_L_l26games/drac.json#/lamps/9._note: VLM lightmap LM_L_l27games/drac.json#/lamps/10._note: VLM lightmap LM_L_l28games/drac.json#/lamps/11._note: VLM lightmap LM_L_l31games/drac.json#/lamps/12._note: VLM lightmap LM_L_l32games/drac.json#/lamps/13._note: VLM lightmap LM_L_l33games/drac.json#/lamps/14._note: VLM lightmap LM_L_l34games/drac.json#/lamps/15._note: VLM lightmap LM_L_l35games/drac.json#/lamps/16._note: VLM lightmap LM_L_l36games/drac.json#/lamps/17._note: VLM lightmap LM_L_l37games/drac.json#/lamps/18._note: VLM lightmap LM_L_l38games/drac.json#/lamps/19._note: VLM lightmap LM_L_l41games/drac.json#/lamps/20._note: VLM lightmap LM_L_l42games/drac.json#/lamps/21._note: VLM lightmap LM_L_l43games/drac.json#/lamps/22._note: VLM lightmap LM_L_l44games/drac.json#/lamps/23._note: VLM lightmap LM_L_l45games/drac.json#/lamps/24._note: VLM lightmap LM_L_l46games/drac.json#/lamps/25._note: VLM lightmap LM_L_l47games/drac.json#/lamps/26._note: VLM lightmap LM_L_l48games/drac.json#/lamps/27._note: VLM lightmap LM_L_l51games/drac.json#/lamps/28._note: VLM lightmap LM_L_l52games/drac.json#/lamps/29._note: VLM lightmap LM_L_l54games/drac.json#/lamps/30._note: VLM lightmap LM_L_l55games/drac.json#/lamps/31._note: VLM lightmap LM_L_l56games/drac.json#/lamps/32._note: VLM lightmap LM_L_l57games/drac.json#/lamps/33._note: VLM lightmap LM_L_l58games/drac.json#/lamps/34._note: VLM lightmap LM_L_L61games/drac.json#/lamps/35._note: VLM lightmap LM_L_L62games/drac.json#/lamps/36._note: VLM lightmap LM_L_L63games/drac.json#/lamps/37._note: VLM lightmap LM_L_l64games/drac.json#/lamps/38._note: VLM lightmap LM_L_l65games/drac.json#/lamps/39._note: VLM lightmap LM_L_l66games/drac.json#/lamps/40._note: VLM lightmap LM_L_l67games/drac.json#/lamps/41._note: VLM lightmap LM_L_L68games/drac.json#/lamps/42._note: VLM lightmap LM_L_l71games/drac.json#/lamps/43._note: VLM lightmap LM_L_l72games/drac.json#/lamps/44._note: VLM lightmap LM_L_l73games/drac.json#/lamps/45._note: VLM lightmap LM_L_l74games/drac.json#/lamps/46._note: VLM lightmap LM_L_l75games/drac.json#/lamps/47._note: VLM lightmap LM_L_l76games/drac.json#/lamps/48._note: VLM lightmap LM_L_l77games/drac.json#/lamps/49._note: VLM lightmap LM_L_l78games/drac.json#/lamps/50._note: VLM lightmap LM_L_l81games/drac.json#/lamps/51._note: VLM lightmap LM_L_l82games/drac.json#/lamps/52._note: VLM lightmap LM_L_l83games/drac.json#/lamps/53._note: VLM lightmap LM_L_l84games/drac.json#/lamps/54._note: VLM lightmap LM_L_l85games/drac.json#/lamps/55._note: VLM lightmap LM_L_l86games/drac.json#/lamps/56: Unbound legacy outputs recordml1was retained as a migration note only.games/drac.json#/lamps/56._inferred_type: mist_lampgames/drac.json#/lamps/56._note: Controlled by MotorTimer_Timer based on magnet position, not ROM-drivengames/drac.json#/lamps/57: Unbound legacy outputs recordml2was retained as a migration note only.games/drac.json#/lamps/57._inferred_type: mist_lampgames/drac.json#/lamps/57._note: Script-controlled mist position indicatorgames/drac.json#/lamps/58: Unbound legacy outputs recordml3was retained as a migration note only.games/drac.json#/lamps/58._inferred_type: mist_lampgames/drac.json#/lamps/58._note: Script-controlled mist position indicatorgames/drac.json#/lamps/59: Unbound legacy outputs recordml4was retained as a migration note only.games/drac.json#/lamps/59._inferred_type: mist_lampgames/drac.json#/lamps/59._note: Script-controlled mist position indicatorgames/drac.json#/lamps/60: Unbound legacy outputs recordml5was retained as a migration note only.games/drac.json#/lamps/60._inferred_type: mist_lampgames/drac.json#/lamps/60._note: Script-controlled mist position indicatorgames/drac.json#/lamps/61: Unbound legacy outputs recordml6was retained as a migration note only.games/drac.json#/lamps/61._inferred_type: mist_lampgames/drac.json#/lamps/61._note: Script-controlled mist position indicatorgames/drac.json#/lamps/62: Unbound legacy outputs recordml7was retained as a migration note only.games/drac.json#/lamps/62._inferred_type: mist_lampgames/drac.json#/lamps/62._note: Script-controlled mist position indicatorgames/drac.json#/lamps/63: Unbound legacy outputs recordml8was retained as a migration note only.games/drac.json#/lamps/63._inferred_type: mist_lampgames/drac.json#/lamps/63._note: Script-controlled mist position indicatorgames/drac.json#/lamps/64: Unbound legacy outputs recordml9was retained as a migration note only.games/drac.json#/lamps/64._inferred_type: mist_lampgames/drac.json#/lamps/64._note: Script-controlled mist position indicatorgames/drac.json#/lamps/65: Unbound legacy outputs recordml10was retained as a migration note only.games/drac.json#/lamps/65._inferred_type: mist_lampgames/drac.json#/lamps/65._note: Script-controlled mist position indicatorgames/drac.json#/lamps/66: Unbound legacy outputs recordml11was retained as a migration note only.games/drac.json#/lamps/66._inferred_type: mist_lampgames/drac.json#/lamps/66._note: Script-controlled mist position indicatorgames/drac.json#/lamps/67: Unbound legacy outputs recordml12was retained as a migration note only.games/drac.json#/lamps/67._inferred_type: mist_lampgames/drac.json#/lamps/67._note: Script-controlled mist position indicatorgames/drac.json#/lamps/68: Unbound legacy outputs recordml13was retained as a migration note only.games/drac.json#/lamps/68._inferred_type: mist_lampgames/drac.json#/lamps/68._note: Script-controlled mist position indicatorgames/drac.json#/_source/confidence_notes: High confidence on switches and coils from direct VBScript parsing. Lamp numbers inferred from VLM lightmap array names (LM_L_lNN) and mist lamp objects (ml1-ml13). No explicit Const sw* or Const s* declarations found in table script; switch/coil numbers are hardcoded in Controller.Switch() calls and SolCallback() assignments. Flipper solenoid IDs (sLRFlipper, sLLFlipper) come from WPC.VBS framework. AllLamps collection defined in VPX editor, not script.
Unresolved questions
- Is the I/O enumeration complete for every supported physical/controller variant?
- Which inferred VPX behaviors reflect real hardware, and which are table-script conveniences?
- Are all mechanism home states, sensors, motion constraints, and ball interactions documented?
Sources
legacy.game.drac:games/drac.jsonat the pinned migration revision.