Overview
Legacy evidence identifies this candidate as Bally (1986). 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/bally.json#/coils/1: Unbound legacy outputs recordc_flipper_lower_rightwas retained as a migration note only.platforms/bally.json#/coils/2: Unbound legacy outputs recordc_flipper_lower_leftwas retained as a migration note only.platforms/bally.json#/coils/3: Unbound legacy outputs recordc_flipper_upper_rightwas retained as a migration note only.platforms/bally.json#/coils/4: Unbound legacy outputs recordc_flipper_upper_leftwas retained as a migration note only.games/specfor.json#/switches/0._inferred_type: targetgames/specfor.json#/switches/0._note: Pulsed via vpmTimer.PulseSw 1games/specfor.json#/switches/1._inferred_type: targetgames/specfor.json#/switches/1._note: Pulsed via vpmTimer.PulseSw 2games/specfor.json#/switches/2._inferred_type: targetgames/specfor.json#/switches/2._note: Pulsed via vpmTimer.PulseSw 3. Also triggers wire ramp on/off based on ball direction.games/specfor.json#/switches/3._inferred_type: rubbergames/specfor.json#/switches/3._note: Pulsed via vpmTimer.PulseSw 4 from sw4Rubber1-5_Hitgames/specfor.json#/switches/4._note: Activated by LeftMagnaSave keygames/specfor.json#/switches/5._note: Activated by RightMagnaSave keygames/specfor.json#/switches/6._note: Drain switch — ball enters here, kicked to trough by SolDrain (Mult14 when L3=1)games/specfor.json#/switches/7._inferred_type: rollovergames/specfor.json#/switches/8._inferred_type: rollovergames/specfor.json#/switches/9._inferred_type: standup_targetgames/specfor.json#/switches/9._note: Hit via STHit 16games/specfor.json#/switches/10._inferred_type: standup_targetgames/specfor.json#/switches/10._note: Hit via STHit 17games/specfor.json#/switches/11._inferred_type: standup_targetgames/specfor.json#/switches/11._note: Hit via STHit 18games/specfor.json#/switches/12._inferred_type: standup_targetgames/specfor.json#/switches/12._note: Hit via STHit 19games/specfor.json#/switches/13._inferred_type: standup_targetgames/specfor.json#/switches/13._note: Hit via STHit 20games/specfor.json#/switches/14._inferred_type: standup_targetgames/specfor.json#/switches/14._note: Hit via STHit 21games/specfor.json#/switches/15._inferred_type: standup_targetgames/specfor.json#/switches/15._note: Hit via STHit 22games/specfor.json#/switches/16._inferred_type: kickergames/specfor.json#/switches/16._note: Ball locks in saucer. Kicked out by Mult10 (sol 10) when L3=1.games/specfor.json#/switches/17._inferred_type: rollovergames/specfor.json#/switches/18._inferred_type: bumpergames/specfor.json#/switches/18._note: Bumper1 — pulsed via vpmTimer.PulseSw(25)games/specfor.json#/switches/19._inferred_type: bumpergames/specfor.json#/switches/19._note: Bumper2 — pulsed via vpmTimer.PulseSw(26)games/specfor.json#/switches/20._inferred_type: bumpergames/specfor.json#/switches/20._note: Bumper3 — pulsed via vpmTimer.PulseSw(27)games/specfor.json#/switches/24._inferred_type: standup_targetgames/specfor.json#/switches/24._note: Hit via STHit 33games/specfor.json#/switches/25._inferred_type: standup_targetgames/specfor.json#/switches/25._note: Hit via STHit 34games/specfor.json#/switches/26._inferred_type: standup_targetgames/specfor.json#/switches/26._note: Hit via STHit 35games/specfor.json#/switches/27._inferred_type: standup_targetgames/specfor.json#/switches/27._note: Hit via STHit 36games/specfor.json#/switches/28._inferred_type: drop_targetgames/specfor.json#/switches/28._note: Hit via DTHit 38. Reset by Mult14 (sol 14) when L3=1.games/specfor.json#/switches/29._inferred_type: drop_targetgames/specfor.json#/switches/29._note: Hit via DTHit 40. Reset by sol 11 (DTRaise40), dropped by sol 12 (DTDrop40).games/specfor.json#/switches/30._inferred_type: rollovergames/specfor.json#/switches/31._inferred_type: rollovergames/specfor.json#/switches/31._note: Two VPX triggers (sw42a, sw42b) both map to ROM switch 42. Ball velocity dampened on exit.games/specfor.json#/switches/32._inferred_type: standup_targetgames/specfor.json#/switches/32._note: Hit via STHit 43games/specfor.json#/switches/33._inferred_type: standup_targetgames/specfor.json#/switches/33._note: Hit via STHit 44 with TargetBouncer appliedgames/specfor.json#/switches/34._inferred_type: drop_targetgames/specfor.json#/switches/34._note: Hit via DTHit 45. Part of 3-target inline bank (sw45-47). Reset by Mult6 (sol 6) when L3=1.games/specfor.json#/switches/35._inferred_type: drop_targetgames/specfor.json#/switches/35._note: Hit via DTHit 46. Part of 3-target inline bank (sw45-47). Reset by Mult6 (sol 6) when L3=1.games/specfor.json#/switches/36._inferred_type: drop_targetgames/specfor.json#/switches/36._note: Hit via DTHit 47. Part of 3-target inline bank (sw45-47). Reset by Mult6 (sol 6) when L3=1.games/specfor.json#/switches/37._inferred_type: targetgames/specfor.json#/switches/37._note: Pulsed via vpmTimer.PulseSw 48games/specfor.json#/coils/0._vbscript_callback: SolLBumpergames/specfor.json#/coils/0._inferred_type: bumpergames/specfor.json#/coils/0._note: Fires Bumper1games/specfor.json#/coils/1._vbscript_callback: SolRBumpergames/specfor.json#/coils/1._inferred_type: bumpergames/specfor.json#/coils/1._note: Fires Bumper2games/specfor.json#/coils/2._vbscript_callback: SolMBumpergames/specfor.json#/coils/2._inferred_type: bumpergames/specfor.json#/coils/2._note: Fires Bumper3games/specfor.json#/coils/3._vbscript_callback: Mult6games/specfor.json#/coils/3._inferred_type: multiplexedgames/specfor.json#/coils/3._note: When L3=1: resets inline drop targets sw45-47. When L3=0: controls bright lights group 101. Bally -35 multiplexed solenoid.games/specfor.json#/coils/4._vbscript_callback: Mult7games/specfor.json#/coils/4._inferred_type: multiplexedgames/specfor.json#/coils/4._note: When L3=1: drops sw45 (bottom inline target). When L3=0: controls bright lights group 102.games/specfor.json#/coils/5._vbscript_callback: Mult8games/specfor.json#/coils/5._inferred_type: multiplexedgames/specfor.json#/coils/5._note: When L3=1: drops sw46 (middle inline target). When L3=0: controls bright lights group 103.games/specfor.json#/coils/6._vbscript_callback: Mult9games/specfor.json#/coils/6._inferred_type: multiplexedgames/specfor.json#/coils/6._note: When L3=1: drops sw47 (top inline target). When L3=0: controls bright lights group 104.games/specfor.json#/coils/7._vbscript_callback: Mult10games/specfor.json#/coils/7._inferred_type: multiplexedgames/specfor.json#/coils/7._note: When L3=1: kicks ball from saucer (sw23). When L3=0: controls bright lights group 105.games/specfor.json#/coils/8._vbscript_callback: DTRaise40games/specfor.json#/coils/8._inferred_type: drop_target_resetgames/specfor.json#/coils/8._note: Raises drop target sw40games/specfor.json#/coils/9._vbscript_callback: DTDrop40games/specfor.json#/coils/9._inferred_type: drop_target_dropgames/specfor.json#/coils/9._note: Drops drop target sw40games/specfor.json#/coils/10._vbscript_callback: Mult14games/specfor.json#/coils/10._inferred_type: multiplexedgames/specfor.json#/coils/10._note: When L3=1: resets single capture drop target sw38. When L3=0: SolDrain — kicks ball from outhole (sw8) to trough.games/specfor.json#/coils/11._vbscript_callback: Mult15games/specfor.json#/coils/11._inferred_type: multiplexedgames/specfor.json#/coils/11._note: When L3=1: SolRelease — releases ball from trough (sw30). When L3=0: fires knocker solenoid.games/specfor.json#/coils/12._vbscript_callback: SolGameOngames/specfor.json#/coils/12._inferred_type: game_ongames/specfor.json#/coils/13._note: SolCallback assigned to empty stringgames/specfor.json#/lamps/72._note: GI string — controlled via LM_GI_l60agames/specfor.json#/lamps/73._note: GI string — controlled via LM_GI_l61agames/specfor.json#/lamps/74._note: GI string — controlled via LM_GI_l62agames/specfor.json#/lamps/75._note: GI string — controlled via LM_GI_l63agames/specfor.json#/lamps/76._note: GI string — controlled via LM_GI_l76agames/specfor.json#/lamps/77._note: GI string — controlled via LM_GI_l77agames/specfor.json#/lamps/78._note: GI string — controlled via LM_GI_l78games/specfor.json#/lamps/79._note: GI string — controlled via LM_GI_l79agames/specfor.json#/lamps/80._note: GI string — controlled via LM_GI_l91agames/specfor.json#/lamps/81._note: GI string — controlled via LM_GI_l92agames/specfor.json#/lamps/82._note: GI string — controlled via LM_GI_l93agames/specfor.json#/lamps/83._note: GI string — controlled via LM_GI_l94agames/specfor.json#/lamps/84._note: GI string — controlled via LM_GI_l100a through l100d. Represents 4 GI zones across playfield.games/specfor.json#/lamps/85._note: Solenoid-driven via Mult6 (sol 6) when L3=0. BRL group controlled by ManualLightsUpdate.games/specfor.json#/lamps/86._note: Solenoid-driven via Mult7 (sol 7) when L3=0. BRL group controlled by ManualLightsUpdate.games/specfor.json#/lamps/87._note: Solenoid-driven via Mult8 (sol 8) when L3=0. BRL group controlled by ManualLightsUpdate.games/specfor.json#/lamps/88._note: Solenoid-driven via Mult9 (sol 9) when L3=0. BRL group controlled by ManualLightsUpdate.games/specfor.json#/lamps/89._note: Solenoid-driven via Mult10 (sol 10) when L3=0. BRL group controlled by ManualLightsUpdate.games/specfor.json#/_source/confidence_notes: High confidence on switches/coils from SolCallback and sw*_Hit handlers. Uses 6803.VBS (Bally 6803 MPU). Solenoids 6-10, 14-15 are multiplexed: when L3 is lit they control drop targets/kicker/ball management, when L3 is off they control bright light relays (lamps 101-105) or knocker/outhole. swTilt is a framework constant from 6803.VBS (typically sw14 on Bally -35/6803). Lamp numbers extracted from VLM baked lighting arrays (LM_Inserts_l##). GI lamps (60-63, 76-79, 91-94, 100a-d) and BRL lamps (101-105) are solenoid-controlled bright lights. Manual trough with 3 balls (sw30-32) and outhole (sw8).
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.specfor:games/specfor.jsonat the pinned migration revision.