Spectrum

Partial

Bally1981BALLYbally.spectrum.1981

3 unresolved conflicts

  • Legacy sources disagree on label: 'Ball Roll Tilt' versus 'Left Flipper Button'. binding:pinmame.input.switch/2/None
  • Legacy sources disagree on label: 'Tilt' versus 'Top Saucer Kicker'. binding:pinmame.input.switch/7/None
  • Legacy sources disagree on label: 'ROM Started' versus 'Game On Solenoid'. binding:pinmame.output.solenoid/19/None

Wire it up

what an authoring tool needs first
Bind this ROM
spectrum

4 ROM sets resolve to this machine. Clones share the definition unless a hardware difference is listed.

Controller platform
pinmame.bally

PinMAME already reports logical active state. Do not invert again in the table — normally-closed is a physical fact recorded per switch, not a runtime transform.

Displays

No display inventory recorded yet.

Address space
Switches
-7–84 (47)
Solenoids
1–19 (14)
Cabinet & flipper inputs
82flipper.lower.right84flipper.lower.left6cabinet.start9cabinet.coin.310cabinet.coin.211cabinet.coin.1

Portable roles — the consuming engine maps them to its own input actions.

Coverage

Partial

Real evidence exists, but authoring requirements are still missing or in conflict. Verify before shipping a table.

Catalog Identity
observed
Address Enumeration
candidate
Semantic Naming
candidate
Physical Wiring
candidate
Mechanisms
unknown
Variant Coverage
candidate
Recreation Knowledge
candidate
Still missing · 13
IdentityController PlatformInput EnumerationInput SemanticsOutput EnumerationOutput SemanticsDisplay InventoryMechanism InventoryMechanism BehaviorPolarityVariant DifferencesRecreation NotesProvenance

Switches

The addresses PinMAME reports as closed. Numbers are the public API values, not matrix hardware pins.

47 addresses

Switch map

Sequential addresses, grouped in columns of eight.

used unused
 
+0
+1
+2
+3
+4
+5
+6
+7
1–8
9–16
17–24
25–32
33–40
41–48
49–56
57–64
65–72
73–80
81–88
Hover or tap an address to identify it.

Outside the matrix-7, -6, -5 — dedicated, diagnostic or flipper-column addresses. See the table below.

47 shown
# Name Device ID Role Evidence
-7
Self Test
switch.self-test
candidate
-6
CPU Diagnose
switch.cpu-diagnose
candidate
-5
Sound Diagnose
switch.sound-diagnose
candidate
1
Right Flipper Button
switch.right-flipper-button
candidate
2
Ball Roll Tilt
switch.ball-roll-tilt
candidate
6
Start Button
switch.start-button
cabinet.start
candidate
7
Tilt
switch.tilt
candidate
8
Drain
switch.drain
candidate
9
Coin Button 3
switch.coin-3
cabinet.coin.3
candidate
10
Coin Button 2
switch.coin-2
cabinet.coin.2
candidate
11
Coin Button 1
switch.coin-1
cabinet.coin.1
candidate
15
Tilt
switch.tilt.15
candidate
16
Slam Tilt
switch.slam-tilt
candidate
17
Bottom Left Saucer Kicker
switch.bottom-left-saucer-kicker
candidate
18
Rollover
switch.rollover
candidate
19
Star Trigger
switch.star-trigger
candidate
20
Star Trigger
switch.star-trigger.20
candidate
21
Star Trigger
switch.star-trigger.21
candidate
22
Rollover
switch.rollover.22
candidate
23
Rollover
switch.rollover.23
candidate
24
Middle Right Saucer Kicker
switch.middle-right-saucer-kicker
candidate
25
Rollover (Triple)
switch.rollover-triple
candidate
26
Spinner
switch.spinner
candidate
27
Star Trigger
switch.star-trigger.27
candidate
28
Star Trigger
switch.star-trigger.28
candidate
29
Star Trigger
switch.star-trigger.29
candidate
30
Star Trigger
switch.star-trigger.30
candidate
31
Spinner
switch.spinner.31
candidate
32
Rollover (Triple)
switch.rollover-triple.32
candidate
33
Star Trigger
switch.star-trigger.33
candidate
34
Drop Target — Green Bank 1
switch.drop-target-green-bank-1
candidate
35
Drop Target — Green Bank 2
switch.drop-target-green-bank-2
candidate
36
Drop Target — Green Bank 3
switch.drop-target-green-bank-3
candidate
37
Drop Target — Yellow Bank 1
switch.drop-target-yellow-bank-1
candidate
38
Drop Target — Yellow Bank 2
switch.drop-target-yellow-bank-2
candidate
39
Drop Target — Yellow Bank 3
switch.drop-target-yellow-bank-3
candidate
40
Star Trigger
switch.star-trigger.40
candidate
41
Middle Left Saucer Kicker
switch.middle-left-saucer-kicker
candidate
42
Drop Target — Blue Bank 1
switch.drop-target-blue-bank-1
candidate
43
Drop Target — Blue Bank 2
switch.drop-target-blue-bank-2
candidate
44
Drop Target — Blue Bank 3
switch.drop-target-blue-bank-3
candidate
45
Drop Target — Red Bank 1
switch.drop-target-red-bank-1
candidate
46
Drop Target — Red Bank 2
switch.drop-target-red-bank-2
candidate
47
Drop Target — Red Bank 3
switch.drop-target-red-bank-3
candidate
48
Bottom Right Saucer Kicker
switch.bottom-right-saucer-kicker
candidate
82
Lower Right Flipper
switch.flipper-lower-right
flipper.lower.right
candidate
84
Lower Left Flipper
switch.flipper-lower-left
flipper.lower.left
candidate

Controlled devices

Everything the ROM can energise, grouped the way a table author builds it.

Coils, magnets & motors

14
14 shown
# Name Device ID Evidence
1
Top Kicker — Kick Left
device.top-kicker-kick-left candidate
2
Top Kicker — Kick Right
device.top-kicker-kick-right candidate
3
Middle Left Kicker
device.middle-left-kicker candidate
4
Middle Right Kicker
device.middle-right-kicker candidate
5
Drain Eject / Ball Release
device.drain-eject-ball-release candidate
6
Knocker
device.knocker candidate
8
Bottom Left Kicker
device.bottom-left-kicker candidate
9
Bottom Right Kicker
device.bottom-right-kicker candidate
10
Drop Target Reset — Blue Bank
device.drop-target-reset-blue-bank candidate
11
Drop Target Reset — Green Bank
device.drop-target-reset-green-bank candidate
12
Drop Target Reset — Yellow Bank
device.drop-target-reset-yellow-bank candidate
13
Drop Target Reset — Red Bank
device.drop-target-reset-red-bank candidate
18
GI Relay
device.gi-relay candidate
19
ROM Started
device.game-on candidate

Recreation notes

Working knowledge that has no schema field yet — edition differences, tuning values, pitfalls.

Coverage
partial - source-derived recreation knowledge requiring validation

Overview

Legacy evidence identifies this candidate as Bally (1981). 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 record c_flipper_lower_right was retained as a migration note only.
  • platforms/bally.json#/coils/2: Unbound legacy outputs record c_flipper_lower_left was retained as a migration note only.
  • platforms/bally.json#/coils/3: Unbound legacy outputs record c_flipper_upper_right was retained as a migration note only.
  • platforms/bally.json#/coils/4: Unbound legacy outputs record c_flipper_upper_left was retained as a migration note only.
  • games/spectrum.json#/switches/0._note: Controller.Switch(1) set via RightFlipperKey in Table1_KeyDown/KeyUp
  • games/spectrum.json#/switches/1._note: Controller.Switch(2) set via LeftFlipperKey in Table1_KeyDown/KeyUp
  • games/spectrum.json#/switches/2._note: Controller.Switch(7) on/off. Dual-direction kick: sol 1 kicks left, sol 2 kicks right.
  • games/spectrum.json#/switches/3._note: bsD cvpmBallStack. InitSaucer Drain, 8. Single ball drain — early Bally has no multi-switch trough.
  • games/spectrum.json#/switches/4._note: vpmNudge.TiltSwitch = 15
  • games/spectrum.json#/switches/5._note: Controller.Switch(17) on/off. Dual-direction kick: sol 3 kicks left, sol 4 kicks right (inferred from sub pairing).
  • games/spectrum.json#/switches/6._note: Controller.Switch on/off
  • games/spectrum.json#/switches/7._note: Controller.Switch on/off. Multiple VPX objects: sw19, sw19a, sw19b
  • games/spectrum.json#/switches/8._note: Controller.Switch on/off
  • games/spectrum.json#/switches/9._note: Controller.Switch on/off. Multiple VPX objects: sw21, sw21a, sw21b
  • games/spectrum.json#/switches/10._note: Controller.Switch on/off
  • games/spectrum.json#/switches/11._note: Controller.Switch on/off
  • games/spectrum.json#/switches/12._note: Controller.Switch(24) on/off. Dual-direction kick similar to sw7/sw17.
  • games/spectrum.json#/switches/13._note: Controller.Switch on/off. Multiple VPX objects: sw25a, sw25b, sw25c — all map to switch 25
  • games/spectrum.json#/switches/14._note: vpmTimer.PulseSw 26
  • games/spectrum.json#/switches/15._note: Controller.Switch on/off
  • games/spectrum.json#/switches/16._note: Controller.Switch on/off
  • games/spectrum.json#/switches/17._note: Controller.Switch on/off
  • games/spectrum.json#/switches/18._note: Controller.Switch on/off
  • games/spectrum.json#/switches/19._note: vpmTimer.PulseSw 31
  • games/spectrum.json#/switches/20._note: Controller.Switch on/off. Multiple VPX objects: sw32a, sw32b, sw32c — all map to switch 32
  • games/spectrum.json#/switches/21._note: Controller.Switch on/off. Multiple VPX objects: sw33, sw33a
  • games/spectrum.json#/switches/22._note: DTHit 34. Reset by sol 11 (DT_G_Reset).
  • games/spectrum.json#/switches/23._note: DTHit 35. Reset by sol 11 (DT_G_Reset).
  • games/spectrum.json#/switches/24._note: DTHit 36. Reset by sol 11 (DT_G_Reset).
  • games/spectrum.json#/switches/25._note: DTHit 37. Reset by sol 12 (DT_Y_Reset).
  • games/spectrum.json#/switches/26._note: DTHit 38. Reset by sol 12 (DT_Y_Reset).
  • games/spectrum.json#/switches/27._note: DTHit 39. Reset by sol 12 (DT_Y_Reset).
  • games/spectrum.json#/switches/28._note: Controller.Switch on/off. Multiple VPX objects: sw40, sw40a
  • games/spectrum.json#/switches/29._note: Controller.Switch(41) on/off. Dual-direction kick similar to sw7/sw17.
  • games/spectrum.json#/switches/30._note: DTHit 42. Reset by sol 10 (DT_B_Reset).
  • games/spectrum.json#/switches/31._note: DTHit 43. Reset by sol 10 (DT_B_Reset).
  • games/spectrum.json#/switches/32._note: DTHit 44. Reset by sol 10 (DT_B_Reset).
  • games/spectrum.json#/switches/33._note: DTHit 45. Reset by sol 13 (DT_R_Reset).
  • games/spectrum.json#/switches/34._note: DTHit 46. Reset by sol 13 (DT_R_Reset).
  • games/spectrum.json#/switches/35._note: DTHit 47. Reset by sol 13 (DT_R_Reset).
  • games/spectrum.json#/switches/36._note: Controller.Switch(48) on/off. Dual-direction kick similar to sw7/sw17.
  • games/spectrum.json#/coils/0._vbscript_callback: kicker_topleft
  • games/spectrum.json#/coils/0._inferred_type: ball_management
  • games/spectrum.json#/coils/0._note: Kicks ball from sw7 saucer to the left (angle 290)
  • games/spectrum.json#/coils/1._vbscript_callback: kicker_topright
  • games/spectrum.json#/coils/1._inferred_type: ball_management
  • games/spectrum.json#/coils/1._note: Kicks ball from sw7 saucer to the right (angle 70)
  • games/spectrum.json#/coils/2._vbscript_callback: kicker_midleft
  • games/spectrum.json#/coils/2._inferred_type: ball_management
  • games/spectrum.json#/coils/2._note: Kicks ball from sw41 saucer
  • games/spectrum.json#/coils/3._vbscript_callback: kicker_midright
  • games/spectrum.json#/coils/3._inferred_type: ball_management
  • games/spectrum.json#/coils/3._note: Kicks ball from sw48 saucer
  • games/spectrum.json#/coils/4._vbscript_callback: DrainSolOut
  • games/spectrum.json#/coils/4._inferred_type: ball_management
  • games/spectrum.json#/coils/4._note: bsD.SolOut — ejects ball from drain (cvpmBallStack)
  • games/spectrum.json#/coils/5._vbscript_callback: vpmSolSound SoundFX("Knocker",DOFKnocker),
  • games/spectrum.json#/coils/5._inferred_type: knocker
  • games/spectrum.json#/coils/5._note: Sound-only callback in VPX — physical knocker coil
  • games/spectrum.json#/coils/6._vbscript_callback: kicker_botleft
  • games/spectrum.json#/coils/6._inferred_type: ball_management
  • games/spectrum.json#/coils/6._note: Kicks ball from sw17 saucer
  • games/spectrum.json#/coils/7._vbscript_callback: kicker_botright
  • games/spectrum.json#/coils/7._inferred_type: ball_management
  • games/spectrum.json#/coils/7._note: Kicks ball from sw24 saucer
  • games/spectrum.json#/coils/8._vbscript_callback: DT_B_Reset
  • games/spectrum.json#/coils/8._inferred_type: drop_target_reset
  • games/spectrum.json#/coils/8._note: Resets drop targets sw42, sw43, sw44
  • games/spectrum.json#/coils/9._vbscript_callback: DT_G_Reset
  • games/spectrum.json#/coils/9._inferred_type: drop_target_reset
  • games/spectrum.json#/coils/9._note: Resets drop targets sw34, sw35, sw36
  • games/spectrum.json#/coils/10._vbscript_callback: DT_Y_Reset
  • games/spectrum.json#/coils/10._inferred_type: drop_target_reset
  • games/spectrum.json#/coils/10._note: Resets drop targets sw37, sw38, sw39
  • games/spectrum.json#/coils/11._vbscript_callback: DT_R_Reset
  • games/spectrum.json#/coils/11._inferred_type: drop_target_reset
  • games/spectrum.json#/coils/11._note: Resets drop targets sw45, sw46, sw47
  • games/spectrum.json#/coils/12._vbscript_callback: SolGI
  • games/spectrum.json#/coils/12._inferred_type: gi
  • games/spectrum.json#/coils/12._note: Enables/disables GI lighting. Iterates GI array setting state.
  • games/spectrum.json#/coils/13._vbscript_callback: vpmNudge.SolGameOn
  • games/spectrum.json#/coils/13._inferred_type: system
  • games/spectrum.json#/coils/13._note: Standard Bally game-on solenoid. Enables nudge/tilt detection.
  • games/spectrum.json#/_source/confidence_notes: High confidence on switches/coils from explicit Controller.Switch() and SolCallback assignments. No Const sw* definitions — switches identified from _Hit/_UnHit subs and Controller.Switch() calls. No NFadeL/NFadeLm/Flash/Lampz macros found — lamps use vpmMapLights AllLamps (implicit VPX light-to-lamp mapping; actual lamp IDs depend on VPX table light numbering, not extractable from script alone). Early Bally -17/-35 platform. Drain uses cvpmBallStack (not cvpmTrough) with single switch 8. Four saucer kickers (sw7, sw17, sw24, sw41, sw48) each have dual-direction kick logic. Drop targets in 4 banks of 3.

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.spectrum: games/spectrum.json at the pinned migration revision.

ROM sets

Every driver that resolves to this physical machine.

ROM set Description Year Parent Hardware
spectruaSpectrum (Free Play) 2004spectrum
spectr4aSpectrum (rev. 4 Free Play) 2004spectrum
spectrumSpectrum 1982
spectru4Spectrum (rev. 4) 1982spectrum

Parent set: spectrum — clones share this definition unless a hardware difference is noted.

Evidence

Every claim above traces to one of these. When they disagree: a known-working VPX script wins on controller addresses and causality, the manual wins on wiring and construction, pinned PinMAME wins on emulator routing and display layout.

  • Legacy definition

    legacy.game.spectrum

    games/spectrum.json; origin=vbscript-parser

    by
    pinmame-game-defs contributors
    rev
    4ea106d08072
  • Legacy definition

    legacy.platform.bally

    platforms/bally.json

    by
    pinmame-game-defs contributors
    rev
    4ea106d08072
  • PinMAME catalog

    BSD-3-Clause

    pinmame.catalog.4ec52ff0ac13

    PinmameGetGames

    by
    PinMAME contributors
    rev
    4ec52ff0ac13

Something wrong or missing?

This definition still has 13 unmet requirements, listed under Coverage above. Fixes belong in the definition itself — editing on GitHub forks it for you and opens the pull request.

Cite a source for anything you change — a manual page, a line in a working VPX script, PinMAME source, or a reading from the machine's own service menu. Claims without provenance cannot be validated.

Same platform