Theatre of Magic

Partial

Bally1995WPC-SECURITYbally.theatre-of-magic.1995

1 unresolved conflict

  • The manual's own Solenoid/Flasher Table wires GI strings 1 and 2 (public PinMAME addresses 0 and 1) exclusively through Backbox-column connectors (J120) with #555 bulbs, while strings 3-5 (addresses 2-4) are wired exclusively through Playfield-column connectors (J121) with #44 bulbs -- a clean, internally consistent split on a single printed table. The retained known-working script's UpdateGI(no, step) nonetheless implements cases 0 ('top') and 1 ('bottom left') by driving genuine playfield Light collections (GITop+GIBumpers, GILeft respectively) with dozens of members each, alongside a Table1.ColorGradeImage LUT swap -- i.e. the routine reads as a stylized playfield mood-lighting/color-grade effect keyed off which GI relay is active, not a literal per-bulb wiring replica; genuine backbox/insert-panel illumination would not plausibly drive dozens of scattered playfield bulbs. This is the same class of disagreement Williams Tales of the Arabian Nights already established for its own GI address 2 (a retained script visually contradicting its own manual's backbox wiring for a different address). The manual is physical-construction ground truth for a device's spatial classification, so this definition keeps GI addresses 0 and 1 controlled not_applicable/cabinet_or_service devices despite the script's visual behavior. Unresolved: whether any production unit's backbox strings genuinely double as a visual dimming relay for playfield GI would require a LibPinMAME harness trace or a second independent manual copy; this curation defaults to the manual's own wiring table. outputs[binding.group=pinmame.output.gi,binding.device=0,1]

Wire it up

what an authoring tool needs first
Bind this ROM
tom_13

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

Controller platform
pinmame.wpc-security

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
  • 128x32 dot-matrix display128×32
Address space
Switches
1–118 (80)
Solenoids
1–50 (50)
Lamps
11–88 (64)
GI
0–4 (5)
DIP
1–8 (8)
Cabinet & flipper inputs
112flipper.lower.right.button114flipper.lower.left.button1cabinet.coin.12cabinet.coin.23cabinet.coin.34cabinet.coin.413cabinet.start14cabinet.tilt21cabinet.slam-tilt22cabinet.coin-door23cabinet.buy-in

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

Playfield

Where each address physically sits. The switch and lamp maps below show the electrical layout — this shows the same devices as the player sees them.

Playfield map

173 placements · 21 stacked · normalised player view · outline is nominal

15 Shooter Lane25 Left Outlane26 Left Return Lane27 Right Return Lane28 Right Outlane31 Trough Jam232 Trough 1 · 1 Ball Trough33 Trough 234 Trough 335 Trough 436 Subway Opto237 Spinner · 72 Spirit Award38 Right Lower Target241 Lock 1 · 34 Sub Ball Release42 Lock 243 Lock 3444 Popper · 3 Trap Door Up · 4 Subway Popper · 14 Trap Door Hold45 Left Drain Eddy47 Subway Micro48 Right Drain Eddy51 Left Bank Target51 Left Bank Target52 Captive Ball Rest53 Right Lane Enter54 Left Lane Enter855 Cube Position 4 · 56 Cube Position 1 · 57 Cube Position 2 · 58 Cube Position 3 · 17 Box Clockwise · 18 Box Counter Clockwise · 33 Cube Magnet · 85 Lamp In Cube261 Left Sling · 9 Left Sling262 Right Sling · 10 Right Sling363 Bottom Jet · 76 Right Ramp Enter · 11 Bottom Jet264 Middle Jet · 12 Middle Jet265 Top Jet · 13 Top Jet66 Top Lane 167 Top Lane 271 Center Ramp Exit73 Right Ramp Exit74 Right Ramp Exit 275 Center Ramp Enter77 Captive Ball Top78 Loop Left81 Loop Right82 Center Ramp Targets82 Center Ramp Targets283 Vanish Lock 1 · 21 Top Kickout84 Vanish Lock 285 Trunk Hit86 Right Lane Exit87 Left Lane Exit2 Magnet Diverter5 Right Drain Magnet6 Center Loop Post8 Top Diverter Post15 Left Up/Down Gate16 Right Up/Down Gate20 Return Lane Flasher20 Return Lane Flasher224 Trap Door Flasher · 3 String 424 Trap Door Flasher25 Spirit Ring Flasher26 Saw Flasher27 Jet Flasher28 Box Flasher35 Left Drain Magnet245 Lower Right Flipper Power · 46 Lower Right Flipper Hold247 Lower Left Flipper Power · 48 Lower Left Flipper Hold11 (T)heatre12 T(H)eatre13 Th(e)atre14 The(a)tre15 Thea(t)re16 Theat(r)e17 Theatr(e)18 (M)agic21 Haunted Basement22 Metamorphosis Award23 Right Spell Magic24 Spirit Ring25 Advance Clock26 Jacket Award26 Jacket Award27 M(a)gic28 Trunk Hit 331 MA(G)IC32 MAGI(C)33 Lift Trapdoor34 Center Spell Magic35 Levitate Award36 MAG(I)C37 Top Rollover 138 Top Rollover 241 Extra Ball42 Vanish43 Spell Theatre44 Jackpot45 Safe Award45 Safe Award46 Tiger Saw Award47 Start Finale48 Trunk Hit 151 Trunk Hit 252 Hurry Up53 Trunk Escape54 Lock Ball54 Lock Ball55 Hat Trick Award56 Start Illusion57 Start Multi-Ball58 Lite Vanish61 Tiger Saw62 Levitate Woman63 Grand Finale63 Grand Finale64 Trunk Escape65 Spirit Cards66 Safe Escape67 Meta-Morphisis68 Strait Jacket71 Hat Magic73 Theatre74 Multi-Ball75 Midnight76 Illusions77 Saw Multi-Ball78 Hocus Pocus81 Special81 Special86 Shoot Again2 String 32 String 322 String 3 · 2 String 322 String 3 · 2 String 322 String 3 · 2 String 322 String 3 · 2 String 32 String 32 String 32 String 32 String 32 String 323 String 4 · 3 String 423 String 4 · 3 String 43 String 423 String 4 · 3 String 43 String 43 String 4

Hover a marker to identify it, or click to keep it selected. Numbered markers are several devices in one spot — clicking lists them.

Show
Marker shape
  • emitterlights the playfield97
  • sensorsenses the ball51
  • effectmoves the ball25
  • nStackseveral devices in one spot21
141 devices shown

Not on the playfield20 cabinet or service, 20 unused, 14 virtual, 8 dip switch, 2 internal nonvisual, 1 constant — declared rather than missing.

Coverage

Partial

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

Catalog Identity
validated
Address Enumeration
validated
Semantic Naming
validated
Physical Wiring
conflicted
Mechanisms
validated
Variant Coverage
validated
Recreation Knowledge
validated
Still missing · 2
Unresolved ConflictsSpatial Placement

Switches

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

79 addresses

Switch map

Column × row matrix — the address is column·row.

used unused
 
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
11
Hover or tap an address to identify it.

Outside the matrix1, 2, 3, 4, 5, 6, 7, 8 — dedicated, diagnostic or flipper-column addresses. See the table below.

79 shown
# Name Device ID Role Wiring Evidence
1
Left Coin Chute
Button
switch.cabinet-1
cabinet.coin.1
J205-1Orange-Brown
WPC-Security CPU board
validated
2
Center Coin Chute
Button
switch.cabinet-2
cabinet.coin.2
J205-2Orange-Red
WPC-Security CPU board
validated
3
Right Coin Chute
Button
switch.cabinet-3
cabinet.coin.3
J205-3Orange-Black
WPC-Security CPU board
validated
4
4th Coin Chuteopt
Button
switch.cabinet-4
cabinet.coin.4
J205-4Orange-Yellow
WPC-Security CPU board
validated
5
Service Credits / Escape
Button
switch.cabinet-5
service.escape
J205-6Orange-Green
WPC-Security CPU board
validated
6
Volume Down / Down
Button
switch.cabinet-6
service.down
J205-7Orange-Blue
WPC-Security CPU board
validated
7
Volume Up / Up
Button
switch.cabinet-7
service.up
J205-8Orange-Violet
WPC-Security CPU board
validated
8
Begin Test / Enter
Button
switch.cabinet-8
service.enter
J205-9Orange-Gray
WPC-Security CPU board
validated
11
Not Used Matrix Position 11
switch.matrix-11
J207-1Green-Brown
J209-1White-Brown
WPC-Security CPU board
validated
12
Not Used Matrix Position 12
switch.matrix-12
J207-1Green-Brown
J209-2White-Red
WPC-Security CPU board
validated
13
Start Button
Button
switch.matrix-13
cabinet.start
J207-1Green-Brown
J209-3White-Orange
WPC-Security CPU board
validated
14
Plumb Bob Tilt
Tilt
switch.matrix-14
cabinet.tilt
J207-1Green-Brown
J209-4White-Yellow
WPC-Security CPU board
validated
15
Shooter Lane
Microswitch
switch.matrix-15
J207-1Green-Brown
J209-5White-Green
WPC-Security CPU board
validated
16
Not Used Matrix Position 16
switch.matrix-16
J207-1Green-Brown
J209-7White-Blue
WPC-Security CPU board
validated
17
Not Used Matrix Position 17
switch.matrix-17
J207-1Green-Brown
J209-8White-Violet
WPC-Security CPU board
validated
18
Not Used Matrix Position 18
switch.matrix-18
J207-1Green-Brown
J209-9White-Gray
WPC-Security CPU board
validated
21
Slam Tilt
Leaf
switch.matrix-21
cabinet.slam-tilt
J207-2Green-Red
J209-1White-Brown
WPC-Security CPU board
validated
22
Coin Door Closed
Microswitch
switch.matrix-22
cabinet.coin-door
J207-2Green-Red
J209-2White-Red
WPC-Security CPU board
validated
23
Buy-In
Button
switch.matrix-23
cabinet.buy-in
J207-2Green-Red
J209-3White-Orange
WPC-Security CPU board
validated
25
Left Outlane
Microswitch
switch.matrix-25
J207-2Green-Red
J209-5White-Green
WPC-Security CPU board
validated
26
Left Return Lane
Microswitch
switch.matrix-26
J207-2Green-Red
J209-7White-Blue
WPC-Security CPU board
validated
27
Right Return Lane
Microswitch
switch.matrix-27
J207-2Green-Red
J209-8White-Violet
WPC-Security CPU board
validated
28
Right Outlane
Microswitch
switch.matrix-28
J207-2Green-Red
J209-9White-Gray
WPC-Security CPU board
validated
31
Trough JamNC
Opto
switch.matrix-31
J207-3Green-Orange
J209-1White-Brown
WPC-Security CPU board
validated
32
Trough 1NC
Opto
switch.matrix-32
J207-3Green-Orange
J209-2White-Red
WPC-Security CPU board
validated
33
Trough 2NC
Opto
switch.matrix-33
J207-3Green-Orange
J209-3White-Orange
WPC-Security CPU board
validated
34
Trough 3NC
Opto
switch.matrix-34
J207-3Green-Orange
J209-4White-Yellow
WPC-Security CPU board
validated
35
Trough 4NC
Opto
switch.matrix-35
J207-3Green-Orange
J209-5White-Green
WPC-Security CPU board
validated
36
Subway OptoNC
Opto
switch.matrix-36
J207-3Green-Orange
J209-7White-Blue
WPC-Security CPU board
validated
37
Spinner
Other
switch.matrix-37
J207-3Green-Orange
J209-8White-Violet
WPC-Security CPU board
validated
38
Right Lower Target
Microswitch
switch.matrix-38
J207-3Green-Orange
J209-9White-Gray
WPC-Security CPU board
validated
41
Lock 1
Microswitch
switch.matrix-41
J207-4Green-Yellow
J209-1White-Brown
WPC-Security CPU board
validated
42
Lock 2
Microswitch
switch.matrix-42
J207-4Green-Yellow
J209-2White-Red
WPC-Security CPU board
validated
43
Lock 3
Microswitch
switch.matrix-43
J207-4Green-Yellow
J209-3White-Orange
WPC-Security CPU board
validated
44
Popper
Microswitch
switch.matrix-44
J207-4Green-Yellow
J209-4White-Yellow
WPC-Security CPU board
validated
45
Left Drain Eddy
Other
switch.matrix-45
J207-4Green-Yellow
J209-5White-Green
WPC-Security CPU board
validated
46
Not Used Matrix Position 46
switch.matrix-46
J207-4Green-Yellow
J209-7White-Blue
WPC-Security CPU board
validated
47
Subway Micro
Microswitch
switch.matrix-47
J207-4Green-Yellow
J209-8White-Violet
WPC-Security CPU board
validated
48
Right Drain Eddy
Other
switch.matrix-48
J207-4Green-Yellow
J209-9White-Gray
WPC-Security CPU board
validated
51
Left Bank Target
Microswitch
switch.matrix-51
J207-5Green-Black
J209-1White-Brown
WPC-Security CPU board
validated
52
Captive Ball Rest
Microswitch
switch.matrix-52
J207-5Green-Black
J209-2White-Red
WPC-Security CPU board
validated
53
Right Lane Enter
Microswitch
switch.matrix-53
J207-5Green-Black
J209-3White-Orange
WPC-Security CPU board
validated
54
Left Lane Enter
Microswitch
switch.matrix-54
J207-5Green-Black
J209-4White-Yellow
WPC-Security CPU board
validated
55
Cube Position 4NC
Opto
switch.matrix-55
J207-5Green-Black
J209-5White-Green
WPC-Security CPU board
validated
56
Cube Position 1NC
Opto
switch.matrix-56
J207-5Green-Black
J209-7White-Blue
WPC-Security CPU board
validated
57
Cube Position 2NC
Opto
switch.matrix-57
J207-5Green-Black
J209-8White-Violet
WPC-Security CPU board
validated
58
Cube Position 3NC
Opto
switch.matrix-58
J207-5Green-Black
J209-9White-Gray
WPC-Security CPU board
validated
61
Left Sling
Microswitch
switch.matrix-61
J207-6Green-Blue
J209-1White-Brown
WPC-Security CPU board
validated
62
Right Sling
Microswitch
switch.matrix-62
J207-6Green-Blue
J209-2White-Red
WPC-Security CPU board
validated
63
Bottom Jet
Leaf
switch.matrix-63
J207-6Green-Blue
J209-3White-Orange
WPC-Security CPU board
validated
64
Middle Jet
Leaf
switch.matrix-64
J207-6Green-Blue
J209-4White-Yellow
WPC-Security CPU board
validated
65
Top Jet
Leaf
switch.matrix-65
J207-6Green-Blue
J209-5White-Green
WPC-Security CPU board
validated
66
Top Lane 1
Microswitch
switch.matrix-66
J207-6Green-Blue
J209-7White-Blue
WPC-Security CPU board
validated
67
Top Lane 2
Microswitch
switch.matrix-67
J207-6Green-Blue
J209-8White-Violet
WPC-Security CPU board
validated
68
Not Used Matrix Position 68
switch.matrix-68
J207-6Green-Blue
J209-9White-Gray
WPC-Security CPU board
validated
71
Center Ramp Exit
Microswitch
switch.matrix-71
J207-7Green-Violet
J209-1White-Brown
WPC-Security CPU board
validated
72
Not Used Matrix Position 72
switch.matrix-72
J207-7Green-Violet
J209-2White-Red
WPC-Security CPU board
validated
73
Right Ramp Exit
Microswitch
switch.matrix-73
J207-7Green-Violet
J209-3White-Orange
WPC-Security CPU board
validated
74
Right Ramp Exit 2
Microswitch
switch.matrix-74
J207-7Green-Violet
J209-4White-Yellow
WPC-Security CPU board
validated
75
Center Ramp Enter
Microswitch
switch.matrix-75
J207-7Green-Violet
J209-5White-Green
WPC-Security CPU board
validated
76
Right Ramp Enter
Microswitch
switch.matrix-76
J207-7Green-Violet
J209-7White-Blue
WPC-Security CPU board
validated
77
Captive Ball Top
Microswitch
switch.matrix-77
J207-7Green-Violet
J209-8White-Violet
WPC-Security CPU board
validated
78
Loop Left
Microswitch
switch.matrix-78
J207-7Green-Violet
J209-9White-Gray
WPC-Security CPU board
validated
81
Loop Right
Microswitch
switch.matrix-81
J207-9Green-Gray
J209-1White-Brown
WPC-Security CPU board
validated
82
Center Ramp Targets
Microswitch
switch.matrix-82
J207-9Green-Gray
J209-2White-Red
WPC-Security CPU board
validated
83
Vanish Lock 1
Microswitch
switch.matrix-83
J207-9Green-Gray
J209-3White-Orange
WPC-Security CPU board
validated
84
Vanish Lock 2
Microswitch
switch.matrix-84
J207-9Green-Gray
J209-4White-Yellow
WPC-Security CPU board
validated
85
Trunk Hit
Other
switch.matrix-85
J207-9Green-Gray
J209-5White-Green
WPC-Security CPU board
validated
86
Right Lane Exit
Microswitch
switch.matrix-86
J207-9Green-Gray
J209-7White-Blue
WPC-Security CPU board
validated
87
Left Lane Exit
Microswitch
switch.matrix-87
J207-9Green-Gray
J209-8White-Violet
WPC-Security CPU board
validated
88
Not Used Matrix Position 88
switch.matrix-88
J207-9Green-Gray
J209-9White-Gray
WPC-Security CPU board
validated
111
Lower Right Flipper EOS
Leaf
switch.generic-111
internal.flipper.lower.right.eos
J906-1Black-Green
WPC-Security CPU board
validated
112
Lower Right Flipper Button
Opto
switch.generic-112
flipper.lower.right.button
J905-1Black-Violet
WPC-Security CPU board
validated
113
Lower Left Flipper EOS
Leaf
switch.generic-113
internal.flipper.lower.left.eos
J906-3Black-Blue
WPC-Security CPU board
validated
114
Lower Left Flipper Button
Opto
switch.generic-114
flipper.lower.left.button
J905-2Black-Gray
WPC-Security CPU board
validated
115
Not Used Upper Right Flipper EOS
switch.generic-115
internal.unused.flipper
J906-4Black-Violet
WPC-Security CPU board
validated
116
Not Used Upper Right Flipper Button
switch.generic-116
internal.unused.flipper
J905-3Black-Yellow
WPC-Security CPU board
validated
117
Not Used Upper Left Flipper EOS
switch.generic-117
internal.unused.flipper
J906-5Black-Gray
WPC-Security CPU board
validated
118
Not Used Upper Left Flipper Button
switch.generic-118
internal.unused.flipper
J905-5Black-Blue
WPC-Security CPU board
validated

Controlled devices

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

Coils, magnets & motors

30
30 shown
# Name Device ID Kind Role Wiring Evidence
1
Ball Trough
device.ball-trough Coil
Q82
WPC-Security power driver board
validated
2
Magnet Diverter
device.magnet-diverter Coil
Q80
WPC-Security power driver board
validated
3
Trap Door Up
device.trap-door-up Coil
Q78
WPC-Security power driver board
validated
4
Subway Popper
device.subway-popper Coil
Q76
WPC-Security power driver board
validated
5
Right Drain Magnet
device.right-drain-magnet Coil
Q64
WPC-Security power driver board
validated
6
Center Loop Post
device.center-loop-post Coil
Q66
WPC-Security power driver board
validated
7
Knocker
device.knocker Coil
cabinet.backbox
Q68
WPC-Security power driver board
validated
8
Top Diverter Post
device.top-diverter-post Coil
Q70
WPC-Security power driver board
validated
9
Left Sling
device.left-sling Coil
Q58
WPC-Security power driver board
validated
10
Right Sling
device.right-sling Coil
Q56
WPC-Security power driver board
validated
11
Bottom Jet
device.bottom-jet Coil
Q54
WPC-Security power driver board
validated
12
Middle Jet
device.middle-jet Coil
Q52
WPC-Security power driver board
validated
13
Top Jet
device.top-jet Coil
Q50
WPC-Security power driver board
validated
14
Trap Door Hold
device.trap-door-hold Coil
Q48
WPC-Security power driver board
validated
15
Left Up/Down Gate
device.left-up-down-gate Coil
Q46
WPC-Security power driver board
validated
16
Right Up/Down Gate
device.right-up-down-gate Coil
Q44
WPC-Security power driver board
validated
17
Box Clockwise
device.box-clockwise Motor
Q42
WPC-Security power driver board
validated
18
Box Counter Clockwise
device.box-counter-clockwise Motor
Q40
WPC-Security power driver board
validated
19
Not Used Solenoid Position 19
device.not-used-solenoid-position-19 Coil
Q38
WPC-Security power driver board
validated
21
Top Kickout
device.top-kickout Coil
Q28
WPC-Security power driver board
validated
22
Not Used Solenoid Position 22
device.not-used-solenoid-position-22 Coil
Q30
WPC-Security power driver board
validated
23
Not Used Solenoid Position 23
device.not-used-solenoid-position-23 Coil
Q34
WPC-Security power driver board
validated
33
Cube Magnet
device.cube-magnet Coil
Q2Yel-Vio
WPC-Security power driver board
validated
34
Sub Ball Release
device.sub-ball-release Coil
Q7
WPC-Security power driver board
validated
35
Left Drain Magnet
device.left-drain-magnet Coil
Q1Yel-Gry
WPC-Security power driver board
validated
36
Not Used Upper Left Flipper Hold
device.not-used-upper-left-flipper-hold Coil
Q5
WPC-Security power driver board
validated
45
Lower Right Flipper Power
device.lower-right-flipper-power Coil
Q4Yel-Grn
WPC-Security power driver board
validated
46
Lower Right Flipper Hold
device.lower-right-flipper-hold Coil
Q11Org-Grn
WPC-Security power driver board
validated
47
Lower Left Flipper Power
device.lower-left-flipper-power Coil
Q3Yel-Blu
WPC-Security power driver board
validated
48
Lower Left Flipper Hold
device.lower-left-flipper-hold Coil
Q9Org-Blu
WPC-Security power driver board
validated

Flashers

6
6 shown
# Name Device ID Wiring Evidence
20
Return Lane Flasher
device.return-lane-flasher
Q36
WPC-Security power driver board
validated
24
Trap Door Flasher
device.trap-door-flasher
Q32
WPC-Security power driver board
validated
25
Spirit Ring Flasher
device.spirit-ring-flasher
Q26
WPC-Security power driver board
validated
26
Saw Flasher
device.saw-flasher
Q24
WPC-Security power driver board
validated
27
Jet Flasher
device.jet-flasher
Q22
WPC-Security power driver board
validated
28
Box Flasher
device.box-flasher
Q20
WPC-Security power driver board
validated

Lamps

64

Lamp map

Column × row matrix — the address is column·row.

used unused
 
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
Hover or tap an address to identify it.
64 shown
# Name Device ID Role Wiring Evidence
11
(T)heatre
lamp.matrix-11
Q98 column driver with Q90 row driver
WPC-Security power driver board
validated
12
T(H)eatre
lamp.matrix-12
Q98 column driver with Q89 row driver
WPC-Security power driver board
validated
13
Th(e)atre
lamp.matrix-13
Q98 column driver with Q88 row driver
WPC-Security power driver board
validated
14
The(a)tre
lamp.matrix-14
Q98 column driver with Q87 row driver
WPC-Security power driver board
validated
15
Thea(t)re
lamp.matrix-15
Q98 column driver with Q86 row driver
WPC-Security power driver board
validated
16
Theat(r)e
lamp.matrix-16
Q98 column driver with Q85 row driver
WPC-Security power driver board
validated
17
Theatr(e)
lamp.matrix-17
Q98 column driver with Q84 row driver
WPC-Security power driver board
validated
18
(M)agic
lamp.matrix-18
Q98 column driver with Q83 row driver
WPC-Security power driver board
validated
21
Haunted Basement
lamp.matrix-21
Q97 column driver with Q90 row driver
WPC-Security power driver board
validated
22
Metamorphosis Award
lamp.matrix-22
Q97 column driver with Q89 row driver
WPC-Security power driver board
validated
23
Right Spell Magic
lamp.matrix-23
Q97 column driver with Q88 row driver
WPC-Security power driver board
validated
24
Spirit Ring
lamp.matrix-24
Q97 column driver with Q87 row driver
WPC-Security power driver board
validated
25
Advance Clock
lamp.matrix-25
Q97 column driver with Q86 row driver
WPC-Security power driver board
validated
26
Jacket Award
lamp.matrix-26
Q97 column driver with Q85 row driver
WPC-Security power driver board
validated
27
M(a)gic
lamp.matrix-27
Q97 column driver with Q84 row driver
WPC-Security power driver board
validated
28
Trunk Hit 3
lamp.matrix-28
Q97 column driver with Q83 row driver
WPC-Security power driver board
validated
31
MA(G)IC
lamp.matrix-31
Q96 column driver with Q90 row driver
WPC-Security power driver board
validated
32
MAGI(C)
lamp.matrix-32
Q96 column driver with Q89 row driver
WPC-Security power driver board
validated
33
Lift Trapdoor
lamp.matrix-33
Q96 column driver with Q88 row driver
WPC-Security power driver board
validated
34
Center Spell Magic
lamp.matrix-34
Q96 column driver with Q87 row driver
WPC-Security power driver board
validated
35
Levitate Award
lamp.matrix-35
Q96 column driver with Q86 row driver
WPC-Security power driver board
validated
36
MAG(I)C
lamp.matrix-36
Q96 column driver with Q85 row driver
WPC-Security power driver board
validated
37
Top Rollover 1
lamp.matrix-37
Q96 column driver with Q84 row driver
WPC-Security power driver board
validated
38
Top Rollover 2
lamp.matrix-38
Q96 column driver with Q83 row driver
WPC-Security power driver board
validated
41
Extra Ball
lamp.matrix-41
Q95 column driver with Q90 row driver
WPC-Security power driver board
validated
42
Vanish
lamp.matrix-42
Q95 column driver with Q89 row driver
WPC-Security power driver board
validated
43
Spell Theatre
lamp.matrix-43
Q95 column driver with Q88 row driver
WPC-Security power driver board
validated
44
Jackpot
lamp.matrix-44
Q95 column driver with Q87 row driver
WPC-Security power driver board
validated
45
Safe Award
lamp.matrix-45
Q95 column driver with Q86 row driver
WPC-Security power driver board
validated
46
Tiger Saw Award
lamp.matrix-46
Q95 column driver with Q85 row driver
WPC-Security power driver board
validated
47
Start Finale
lamp.matrix-47
Q95 column driver with Q84 row driver
WPC-Security power driver board
validated
48
Trunk Hit 1
lamp.matrix-48
Q95 column driver with Q83 row driver
WPC-Security power driver board
validated
51
Trunk Hit 2
lamp.matrix-51
Q94 column driver with Q90 row driver
WPC-Security power driver board
validated
52
Hurry Up
lamp.matrix-52
Q94 column driver with Q89 row driver
WPC-Security power driver board
validated
53
Trunk Escape
lamp.matrix-53
Q94 column driver with Q88 row driver
WPC-Security power driver board
validated
54
Lock Ball
lamp.matrix-54
Q94 column driver with Q87 row driver
WPC-Security power driver board
validated
55
Hat Trick Award
lamp.matrix-55
Q94 column driver with Q86 row driver
WPC-Security power driver board
validated
56
Start Illusion
lamp.matrix-56
Q94 column driver with Q85 row driver
WPC-Security power driver board
validated
57
Start Multi-Ball
lamp.matrix-57
Q94 column driver with Q84 row driver
WPC-Security power driver board
validated
58
Lite Vanish
lamp.matrix-58
Q94 column driver with Q83 row driver
WPC-Security power driver board
validated
61
Tiger Saw
lamp.matrix-61
Q93 column driver with Q90 row driver
WPC-Security power driver board
validated
62
Levitate Woman
lamp.matrix-62
Q93 column driver with Q89 row driver
WPC-Security power driver board
validated
63
Grand Finale
lamp.matrix-63
Q93 column driver with Q88 row driver
WPC-Security power driver board
validated
64
Trunk Escape
lamp.matrix-64
Q93 column driver with Q87 row driver
WPC-Security power driver board
validated
65
Spirit Cards
lamp.matrix-65
Q93 column driver with Q86 row driver
WPC-Security power driver board
validated
66
Safe Escape
lamp.matrix-66
Q93 column driver with Q85 row driver
WPC-Security power driver board
validated
67
Meta-Morphisis
lamp.matrix-67
Q93 column driver with Q84 row driver
WPC-Security power driver board
validated
68
Strait Jacket
lamp.matrix-68
Q93 column driver with Q83 row driver
WPC-Security power driver board
validated
71
Hat Magic
lamp.matrix-71
Q92 column driver with Q90 row driver
WPC-Security power driver board
validated
72
Spirit Award
lamp.matrix-72
Q92 column driver with Q89 row driver
WPC-Security power driver board
validated
73
Theatre
lamp.matrix-73
Q92 column driver with Q88 row driver
WPC-Security power driver board
validated
74
Multi-Ball
lamp.matrix-74
Q92 column driver with Q87 row driver
WPC-Security power driver board
validated
75
Midnight
lamp.matrix-75
Q92 column driver with Q86 row driver
WPC-Security power driver board
validated
76
Illusions
lamp.matrix-76
Q92 column driver with Q85 row driver
WPC-Security power driver board
validated
77
Saw Multi-Ball
lamp.matrix-77
Q92 column driver with Q84 row driver
WPC-Security power driver board
validated
78
Hocus Pocus
lamp.matrix-78
Q92 column driver with Q83 row driver
WPC-Security power driver board
validated
81
Special
lamp.matrix-81
Q91 column driver with Q90 row driver
WPC-Security power driver board
validated
82
Not Used Lamp Position 82
lamp.matrix-82
Q91 column driver with Q89 row driver
WPC-Security power driver board
validated
83
Not Used Lamp Position 83
lamp.matrix-83
Q91 column driver with Q88 row driver
WPC-Security power driver board
validated
84
Not Used Lamp Position 84
lamp.matrix-84
Q91 column driver with Q87 row driver
WPC-Security power driver board
validated
85
Lamp In Cube
lamp.matrix-85
Q91 column driver with Q86 row driver
WPC-Security power driver board
validated
86
Shoot Again
lamp.matrix-86
Q91 column driver with Q85 row driver
WPC-Security power driver board
validated
87
Buy-In
lamp.matrix-87
cabinet.buy-in
Q91 column driver with Q84 row driver
WPC-Security power driver board
validated
88
Start Button
lamp.matrix-88
cabinet.start
Q91 column driver with Q83 row driver
WPC-Security power driver board
validated

General illumination

5
5 shown
# Name Device ID Role Wiring Evidence
0
String 1
gi.string-1
cabinet.backbox
Q18
WPC-Security power driver board
validated
1
String 2
gi.string-2
cabinet.backbox
Q10
WPC-Security power driver board
validated
2
String 3
gi.string-3
Q14
WPC-Security power driver board
validated
3
String 4
gi.string-4
Q16
WPC-Security power driver board
validated
4
String 5
gi.string-5
Q12
WPC-Security power driver board
validated

Virtual & other outputs

14
14 shown
# Name Device ID Role Evidence
29
WPC J111 General-Purpose State Bit A
device.wpc-j111-general-purpose-state-bit-a
internal.wpc-state
validated
30
WPC J111 General-Purpose State Bit B
device.wpc-j111-general-purpose-state-bit-b
internal.wpc-state
validated
31
PinMAME Fast-Flip Game-On State
device.pinmame-fast-flip-game-on-state
internal.wpc-state
validated
32
Unused WPC State Channel 32
device.unused-wpc-state-channel-32
internal.wpc-state
validated
37
Unused WPC Output 37
device.unused-wpc-output-37
internal.unused.wpc-output
validated
38
Unused WPC Output 38
device.unused-wpc-output-38
internal.unused.wpc-output
validated
39
Unused WPC Output 39
device.unused-wpc-output-39
internal.unused.wpc-output
validated
40
Unused WPC Output 40
device.unused-wpc-output-40
internal.unused.wpc-output
validated
41
Unused WPC Output 41
device.unused-wpc-output-41
internal.unused.wpc-output
validated
42
Unused WPC Output 42
device.unused-wpc-output-42
internal.unused.wpc-output
validated
43
Unused WPC Output 43
device.unused-wpc-output-43
internal.unused.wpc-output
validated
44
Unused WPC Output 44
device.unused-wpc-output-44
internal.unused.wpc-output
validated
49
PinMAME Simulator Ball-Shooter Channel
device.pinmame-simulator-ball-shooter-channel
internal.unused.wpc-output
validated
50
Reserved WPC Output 50
device.reserved-wpc-output-50
internal.unused.wpc-output
validated

Configuration & other inputs

9 shown
# Name Device ID Kind Wiring Evidence
1
CPU DIP 1 (country/option configuration bit)
Dip
switch.dip-1 DIP switch
validated
2
CPU DIP 2 (country/option configuration bit)
Dip
switch.dip-2 DIP switch
validated
3
CPU DIP 3 (country/option configuration bit)
Dip
switch.dip-3 DIP switch
validated
4
CPU DIP 4 (country/option configuration bit)
Dip
switch.dip-4 DIP switch
validated
5
CPU DIP 5 (country/option configuration bit)
Dip
switch.dip-5 DIP switch
validated
6
CPU DIP 6 (country/option configuration bit)
Dip
switch.dip-6 DIP switch
validated
7
CPU DIP 7 (country/option configuration bit)
Dip
switch.dip-7 DIP switch
validated
8
CPU DIP 8 (country/option configuration bit)
Dip
switch.dip-8 DIP switch
validated
24
Always Closed
Other
switch.matrix-24 Constant
J207-2Green-Red
J209-4White-Yellow
WPC-Security CPU board
validated

Mechanisms

Logical assemblies with their actuators, sensors and observed behaviour. Click a chip to jump to the address it refers to.

Four-ball trough and ball release

mechanism.trough

Kicker

Balls drain into the OutHole and are kicked down the chain toward Trough 4 (35, drain end) through Trough 3/2 to Trough 1 (32, eject end nearest the shooter). Solenoid 1 (SolRelease) kicks the ball resting on switch 32 toward the shooter lane. All five positions (Trough Jam 31 plus Trough 1-4 32-35) are printed optos that rest closed (column 3 of the inverted-switch mask), so a recreation asserts the public switch when a ball is present.

Manual shooter lane

mechanism.shooter-lane

Other

Theatre of Magic has a player-pulled spring plunger (a single retained Plunger table object; the manual's Solenoid/Flasher Table has no auto-plunger entry and swShooter=15 is the only shooter-lane switch). The ball ejected from the trough rests on shooter-lane switch 15 until the player pulls the plunger.

Motorized rotating Magic Trunk with internal ball lock and cube magnet

mechanism.trunk

Motorized

The headline mechanism: a single DC gearmotor (A-19782 Magic Trunk Motor Assembly, manual page 1-50 teardown diagram) rotates the trunk box through solenoids 17 (clockwise) and 18 (counter-clockwise). The retained script's TrunkTimer_Timer tracks one continuous TrunkAngle counter (TrunkSpeed = 0.12 degrees per millisecond, clamped 0-270) and asserts the corresponding Cube Position opto only while the trunk is within +/-15 degrees of that face's rotational home: switch 56 (Cube Position 1) near 0 degrees, switch 55 (Cube Position 4) near 90, switch 58 (Cube Position 3) near 180, switch 57 (Cube Position 2) near 270 -- all four assert together while the trunk is in transit between any two detents. A mechanical stop collar (manual Fig. 1) limits physical travel. Cube Magnet (solenoid 33, a repurposed Fliptronic Upper-Right-Power circuit) holds a ball inside the rotating box; while held, the retained script repositions the ball every tick to follow the trunk's own rotation (the 'vanishing ball' effect), and the eddy-current Trunk Hit sensor (switch 85, in front of the trunk) is only reachable/droppable while the trunk sits at the 270-degree (Cube Position 2 / switch 57) face (sw85.IsDropped = NOT Controller.Switch(57)).

Rear subway, ball lock, and trap door

mechanism.subway-lock

Kicker

A ball shot into the rear trunk entrance travels the subway (opto 36, microswitch 47) and is released onto Lock 1 (solenoid 34, Sub Ball Release, a repurposed Fliptronic Upper-Right-Hold circuit) where it progresses through Lock 1/2/3 (switches 41/42/43) toward the Trap Door assembly. Solenoid 3/14 (Trap Door Up/Hold) raises the trap door to admit a ball to the right ramp; Solenoid 4 (Subway Popper) kicks the ball resting on the Popper switch (44) back onto the playfield.

Vanish Lock captive-ball kickout

mechanism.vanish-lock

Kicker

Switches 83/84 (Vanish Lock 1/2) count up to two balls held at a captive lock. Solenoid 21 (Top Kickout) kicks the held ball(s) back to the playfield; the retained script's SolTopKickout reads sw83.ballcntover/sw84.ballcntover to choose a one-ball or two-ball kickout sound and releases the trunk's cube magnet (TrunkMagnets 0) in the same event.

Static captive ball (Left Bank Target / Captive Ball Rest)

mechanism.captive-ball

Other

A ball rests captive behind the Left Bank Target (2) standups (switch 51) and can be struck to rock against Captive Ball Rest (52) and Captive Ball Top (77). This production assembly is static -- it has no drive motor. It is distinct from the prototype-only motorized 'Tiger Saw' spinning-disc prop (solenoid 19), which the retained script's own comment marks 'VPM controlled (only in prototypes)' and this definition leaves unfitted for the production machine (see the unused-solenoid note on device 19).

Left and right drain magnets with eddy sensors

mechanism.magnetic-outlanes

Other

Two eddy-current sensors (manual page 1-45, 'Auto Magna-Save Eddy (Hocus Pocus)') detect the ball in each outlane without a mechanical switch; solenoids 5 and 35 (Right/Left Drain Magnet, the latter a repurposed Fliptronic Upper-Left-Power circuit) energize to hold or redirect the ball, giving an automatic outlane save.

Magnet diverter, loop post, top diverter post, and up/down gates

mechanism.diverters-and-gates

Gate

Solenoid 2 (Magnet Diverter, script callback SolSpiritRing) diverts a ball at the ramp/loop junction; solenoid 6 (Center Loop Post) and solenoid 8 (Top Diverter Post) raise/lower posts that route a ball between the inner and outer loops; solenoids 15/16 (Left/Right Up/Down Gate) admit a ball into a loop or lane while blocking return travel, driven through the retained script's SolGate3/SolGate1 handlers.

Cabinet knocker

mechanism.knocker

Other

Solenoid 7 (Knocker) is a fitted cabinet/backbox coil (assembly B-10686-1) that raps the cabinet on replay/match awards, per the retained script's SolKnocker callback. Unlike Williams Monster Bash, this machine ships with a real knocker coil on this circuit.

Drives

Left and right slingshots

mechanism.slingshots

Other

Standard slingshot kickers; the retained script's LeftSlingshot_Slingshot and RightSlingshot_Slingshot handlers pulse matrix addresses 61 and 62 and fire coils 9/10 in the same event.

Three-bumper jet nest

mechanism.jet-bumpers

Other

Three SW-11A-37 jet bumpers. The retained script's Bumper3_Hit/Bumper2_Hit/Bumper1_Hit handlers pulse switches 63, 64, and 65 and fire coils 11, 12, and 13 respectively, matching printed Bottom/Middle/Top Jet.

Lower flipper pair

mechanism.lower-flippers

Other

Two FL-11629 flippers on Fliptronic circuits. Each flipper has a separate power and hold winding: the ROM energizes the power winding on the cabinet button opto (112 right, 114 left), then drops to the hold winding once the end-of-stroke leaf switch (111 right, 113 left) closes. There are no upper flippers; the upper-flipper Fliptronic circuits (33-36, 115-118) are unfitted or repurposed for non-flipper coils.

Direct wiring

Connections that exist in copper, not in the ROM. These fire whether or not a game is running.

Recreation notes

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

Coverage
partial — complete physical I/O inventory, WPC-Security bindings, mechanism causality (headline rotating trunk, subway lock, vanish lock, captive ball), driver-variant boundary, and recreation behavior validated; spatial placement and physical wiring conflicted pending the GI-string conflict and one unresolvable GI address below

Identity and evidence precedence

This is the Bally WPC-Security physical product released 1995, IPDB 2358. The retained operations manual (part number 16-50039-101, "FINAL", March 1995, Midway Manufacturing Company) confirms Bally/1995 identity on its own title page independent of any VPX table metadata. It covers the twelve-driver tom_* clone tree: tom_13 (parent, production 1.3X), tom_06/tom_061 (0.6A/0.61A prototypes), tom_10f/tom_101f (1.0/1.01 French), tom_12/tom_12a/tom_121 (1.2-series revisions), tom_13c (2019 competition mod), tom_13f (2005 French rebuild), and tom_14h/tom_14hb (2005 "1.4 Home version" and its coin-play variant). Every one of these is a game-ROM revision for the same physical machine, registered through PinMAME's identical CORE_CLONEDEF(tom, <ver>, 13, ...) macro sharing one init_tom/tomGameData struct — the driver registration itself structurally proves there is no controller-address difference between any two tom_* drivers.

Evidence precedence for this definition: the retained known-working script is runtime and mechanism-causality ground truth; the Bally operations manual controls physical construction, part numbers, wiring, polarity, quantities, and device presence; pinned PinMAME controls controller generation, public address topology, and display metadata; the retained VPX geometry supplies normalized coordinates. The retained manual PDF carries an OCR text layer (Adobe Acrobat "Paper Capture"), but every printed table used here was independently verified against a 300 dpi render of the same page and transcribed into external:pinmame-review-artifacts/theatre-of-magic-1995/manual-transcription.md; the OCR text was never treated as authoritative on its own — multi-column tables in this manual garble under plain extraction exactly as warned.

ROM binding hazard: production firmware vs. the retained script's bound driver

The retained table's own script reads Const cGameName = "tom_14hb" '1.3x arcade rom - with credits. tom_14hb is genuinely cataloged by pinned PinMAME — it is not a fabricated identity — but it is not the machine's production firmware. Pinned src/wpc/driver.c dates every clone: tom_06/tom_061 "03/95 B" (prototype), tom_10f/tom_101f/tom_12/tom_12a/tom_121 "04/95 B", tom_13/tom_13f "08/95 B" (the newest 1995-dated revision, and the parent of the clone tree with no clone_of), and tom_14h/tom_14hb "10/96 B" carrying the driver.c comment "Theatre of Magic (1.4 Home version)" / "(1.4 Home version Coin Play)" — i.e. a post-arcade-run software revision for home conversions, not the shipped arcade firmware. This definition therefore binds tom_13 as the primary/production firmware, consistent with it being both the newest 1995-dated arcade revision and the clone-tree parent PinMAME itself treats as canonical.

Whether the retained script's choice of tom_14hb introduces any switch, coil, or lamp semantic difference from tom_13 was checked structurally rather than assumed: tom.c declares exactly one tomGameData struct and one init_tom function, and every CORE_CLONEDEF(tom, <ver>, 13, ...) entry (including 14h/14hb) shares them via the identical name/name machine-driver pair PinMAME's GAMEX macro expands to. There is no per-clone override anywhere in the driver. This proves the controller-address map, inverted-switch mask, flipper declaration, and mechanism hooks are byte-identical across every tom_* ROM; the only differences between revisions are ROM-internal game rules (ruleset changes, ghost-image fixes, localization, "Tiger Saw"/"Magic Post" feature toggles — see below). No conflicts entry was required for electrical semantics as a result; tom_14hb is recorded purely as a driver variant with physical_compatibility: "identical".

Controller platform and address topology

GEN_WPCSECURITY (PINMAME_HARDWARE_GEN_WPCSECURITY = 0x20, "Security chip, World Cup Soccer 3/94 - Jackbot 10/95") with wpc_dispDMD. No existing controller profile matched this generation (wpc-95, wpc-dcs, and wpc-fliptronic are all distinct hardware-generation bits), so this curation introduced controllers/pinmame/wpc-security.json, derived entirely from pinned source rather than by analogy. Electrically it is identical to WPC-DCS/WPC-Fliptronic (no integrated LPDC board, so 37-44 are simply unused; Fliptronic upper-flipper circuits 33-36 are freely repurposable when a driver declares no FLIP_SOL(FLIP_UR)/FLIP_SOL(FLIP_UL) bit) — GENWPC_HASWPC95 = GEN_WPC95 | GEN_WPC95DCS excludes GEN_WPCSECURITY. The only generation-specific difference is GENWPC_HASPIC = GEN_WPCSECURITY | GEN_WPC95 | GEN_WPC95DCS, which routes the internal switch-column-select register through an emulated security-PIC handshake (wpc_pic_r/wpc_pic_w) instead of the plain column reader WPC-DCS/Fliptronic use — this changes how the emulator scans the matrix internally but not the public address space or its normalization. Any future WPC-Security game should reuse this profile unchanged.

  • Switches: dedicated coin-door D1-D8 (public 1-8), matrix 11-88 as drive column then return row, Fliptronic 111-118.
  • Solenoids: physical drivers 1-18 and 21 (standard coils, motor, and flasher-bank positions); 20 and 24-28 (flashers/gen-purpose); Fliptronic upper-flipper circuits 33-35 repurposed for the trunk's Cube Magnet, Sub Ball Release, and Left Drain Magnet with no address translation (tomGameData.hw.flippers = FLIP_SW(FLIP_L) | FLIP_SOL(FLIP_L), no FLIP_UR/FLIP_UL bit); Fliptronic lower-flipper circuits 45-48; PinMAME state channels 29-32; 37-44 wholly unused (no LPDC on this generation).
  • Lamps: 8x8 matrix 11-88, all addresses populated except 82/83/84 (Not Used).
  • GI: five strings on public addresses 0-4.

Switch-matrix opto sweep: zero disagreement

Every cell shaded "OPTO, TYPICALLY CLOSED" on the printed switch matrix (page 2-42) — column 3 rows 1-6 (31-36, the trough/subway optos) and column 5 rows 5-8 (55-58, the trunk's Cube Position optos) — is covered exactly by pinned PinMAME's tomGameData inverted-switch mask {0x00,0x00,0x00,0x3f,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00} (column-index 3 = 0x3f = bits 0-5; column-index 5 = 0xF0 = bits 4-7). No shaded cell is left unnormalized and no unshaded cell is normalized: column 3 rows 7-8 (37 Spinner, 38 Right Lower Target) and column 4 (41-48, Lock/Popper/Eddy row) carry no shading and no mask bits. This is the same clean result Bally The Addams Family and Bally Kiss already produced on this project, and is the opposite outcome from Williams Monster Bash's Dracula-position conflict.

Three switches (45 Left Drain Eddy, 48 Right Drain Eddy, 85 Trunk Hit) are eddy-current proximity sensors, not optos: manual page 1-45 ("Eddy Sensor Calibration") states "Theatre of Magic uses Eddy Current Sensors to detect the pinball without the use of a mechanical switch. One eddy device can be found in the front of the trunk [85]. The other two are located in the outlane areas [45, 48]." These carry switch_type: "other" with the construction documented in physical.notes, matching the WPC-DCS-generation Star Trek: TNG proximity-sensor precedent (switch_type has no proximity enum value).

Fliptronic block: a manual self-contradiction resolved by the parts list

The switch-matrix wiring page (2-42) labels F5-F8 "Upper Right/Left Flipper EOS/Opto" with real-sounding descriptions, but the switch-locations parts list (2-43) prints F5, F6, F7, and F8 as Not Used with no part number — the same block as matrix positions 11, 12, 16, 17, 18. Per project policy ("prefer the parts list over the matrix page for labels"), and matching tomGameData.hw.flippers = FLIP_SW(FLIP_L) | FLIP_SOL(FLIP_L) (no upper-flipper bit at all), F5-F8 are recorded unused; the matrix page's text is disclosed in physical.notes as a stale generic Fliptronic-II-board template rather than modeled as fitted hardware.

The headline mechanism: the motorized rotating trunk

A single DC gearmotor (A-19782 Magic Trunk Motor Assembly, illustrated in the manual's page 1-50 teardown diagram: Molded Trunk, Motor Bracket, Stop Collar, Opto Board, Opto Interrupter) rotates the trunk box through solenoids 17 (solTrunkMotorCW) and 18 (solTrunkMotorCCW). The retained script's TrunkTimer_Timer tracks one continuous TrunkAngle counter (TrunkSpeed = 0.12 degrees/ms, clamped 0-270) and asserts each Cube Position opto only while the trunk sits within +/-15 degrees of that face's rotational home: switch 56 (Cube Position 1) near 0 degrees, switch 55 (Cube Position 4) near 90, switch 58 (Cube Position 3) near 180, switch 57 (Cube Position 2) near 270 — all four assert together while the trunk is in transit between any two detents, and each individually de-asserts only at its own parked position. Because there is no fixed playfield sensor object for any of the four (they live on the trunk's own internal "Opto Board"), all four are documented projections onto the rotating trunk's own table-object center (Primitive Trunk/Trunk1/Trunk2), the same allowance Williams Monster Bash's Dracula-position optos and Williams Star Trek: TNG's idol-wheel optos already established.

Solenoid 33 (Cube Magnet, a repurposed Fliptronic Upper-Right-Power circuit) holds a ball inside the rotating box; while held, the retained script repositions the ball every tick to follow the trunk's own rotation angle — the table's "vanishing ball" magic effect. The eddy-current Trunk Hit target (switch 85, positioned in front of the trunk) is only droppable while the trunk is parked at the 270-degree face (sw85.IsDropped = NOT Controller.Switch(57)), gating a ball-routing choice by the mechanism's rotational state.

The spinning subway and ball lock

A ball shot into the rear trunk entrance travels the subway (opto 36, then microswitch 47) and is released by solenoid 34 (Sub Ball Release, a repurposed Fliptronic Upper-Right-Hold circuit) onto Lock 1 (switch 41), progressing through Lock 2/3 (42/43) toward the Trap Door assembly (solenoids 3/14, switches shared with the trap door open/hold states). Solenoid 4 (Subway Popper) kicks the ball resting on the Popper switch (44) back onto the playfield. The 37 Spinner switch sits along this same inner path (matrix column 3 row 7, not shaded — it is a plain leaf spinner, not an opto, despite sitting in the same printed column as the trough/subway optos).

The captive-ball spinning disc: production vs. prototype

Two distinct captive-ball features exist in the retained evidence, and they must not be conflated. The production assembly is static: a ball rests captive behind the Left Bank Target (2) standups (switch 51) and can be struck to rock against Captive Ball Rest (52) and Captive Ball Top (77); it has no drive motor and its part numbers (A-18059-15, standard leaf switches) show no motorized construction. Separately, the retained script implements a motorized "Tiger Saw" spinning-disc prop (a rotating Saw/SawGold/SawGoldTeeth primitive, driven by solenoid 19 through SolTigerSaw/CPC_Timer) gated behind a table-author toggle TigerSaw, which defaults on (TigerSaw = 1) in this retained table. The script's own comment on the SolTigerSaw assignment reads '****** VPM controlled (only in prototypes). This is the script author's own admission that the motorized disc is prototype-only hardware — consistent with the printed Solenoid/Flasher Table marking address 19 NOT USED (with the driver transistor and connections still populated, i.e. a wired-but-unpopulated position, not a missing circuit) and with pinned PinMAME's own tom_06/tom_061 "prototype" clone descriptions. This definition therefore records solenoid 19 unused for the production 1.3X machine it binds, fully disclosing the prototype toggle and its default state in physical.notes.

The optional "Magic Post" (Center Post)

Solenoids 23 and 36 present a similar, independently-resolved pattern. The Solenoid/Flasher Table prints both NOT USED, but the Solenoid/Flashlamp Locations page assigns solenoid 23 a real bulb and assembly ("Save Post Flasher", #89/A-17803) — a genuine internal manual contradiction. The retained script resolves it directly: SolCallback(23) and SolCallback(36) ("Magic Post Flasher (***)" / "Magic Post Up/Down (***)") are implemented only when a table-author toggle CenterPost is enabled, and CenterPost = 0 (off) by default in this retained table — agreeing with the Solenoid/Flasher Table's NOT USED rather than the Locations page's "Save Post Flasher". Both solenoids are recorded unused on the production machine, with the disagreement disclosed in physical.notes; this is a documented field/factory-optional post feature, not a data error.

Lamps, flashers, and general illumination

All lamp-matrix addresses are populated except 82/83/84 (Not Used). Five addresses drive two bulbs each — 26 "Jacket Award", 45 "Safe Award", 54 "Lock Ball", 63 "Grand Finale", and 81 "Special" — and the retained table binds both bulbs of each pair at genuinely distinct playfield positions (several are left/right mirrored pairs, e.g. 81/81a sit at nearly identical y and mirrored x, consistent with a symmetric outlane-special insert printed on both sides). Lamp 85 ("Lamp In Cube") rides inside the rotating trunk; the retained script repositions its Light object every tick to follow Trunk.RotZ, so it is a documented projection onto the trunk's own table-object center rather than a fixed coordinate. Lamps 87/88 are the illuminated Buy-In/Start cabinet pushbuttons.

General illumination is where this machine's clearest unresolved conflict lives. The manual's own Solenoid/Flasher Table wires GI strings 1 and 2 (public PinMAME addresses 0 and 1) exclusively through Backbox-column connectors (J120) with #555 bulbs, while strings 3-5 (addresses 2-4) are wired exclusively through Playfield-column connectors (J121) with #44 bulbs — a clean, internally consistent split on one printed table. The retained script's UpdateGI(no, step) nonetheless implements cases 0 ("top") and 1 ("bottom left") by driving genuine large playfield Light collections (GITop+GIBumpers, GILeft) alongside a Table1.ColorGradeImage LUT swap — the routine reads as a stylized mood-lighting/color-grade effect keyed off which GI relay is active, not a literal per-bulb wiring replica; real backbox/insert-panel illumination would not plausibly drive dozens of scattered playfield bulbs. This is the same class of disagreement Williams Tales of the Arabian Nights already established for its own GI address 2 (a script visually contradicting its manual's backbox wiring). Per that precedent, the manual wins for spatial classification: GI addresses 0 and 1 are recorded not_applicable/cabinet_or_service despite the script's visual behavior, and the disagreement is a first-class conflict.gi-strings-1-2-backbox-vs-script-playfield-binding. GI addresses 2 and 3 (strings 3 and 4) are genuinely playfield per both sources and use the retained table's GIRight/GIMiddle emitter collections. GI address 4 (string 5) is playfield per the manual, but UpdateGI implements no case 4 at all, so no VPX object binds a coordinate to it; its definition entry carries no spatial key rather than a fabricated placement, the same honest-omission pattern Williams Star Trek: TNG established for three unresolvable lamps.

Other standard devices

Two slingshots (coils 9/10, score switches 61/62) and three SW-11A-37 jet bumpers (coils 11/12/13, switches 63/64/65 — Bottom/Middle/Top Jet) are standard WPC devices; the retained script's LeftSlingshot_Slingshot/RightSlingshot_Slingshot and Bumper3_Hit/Bumper2_Hit/Bumper1_Hit handlers pulse the matching matrix addresses and fire the matching coils in the same event. Solenoid 6 (Center Loop Post) and solenoid 8 (Top Diverter Post) route a ball between the inner and outer loops; solenoids 15/16 (Left/Right Up/Down Gate) admit a ball into a loop while blocking return travel. Two eddy-current outlane sensors (45/48) pair with the Right/Left Drain Magnets (solenoids 5/35, the latter a third repurposed Fliptronic circuit — Upper-Left-Power) for an automatic outlane save ("Hocus Pocus" per the manual's eddy-calibration diagram). The manual documents a player-pulled spring plunger (no auto-plunger solenoid is printed; the retained table carries a single Plunger object), unlike several later WPC-95 games in this project that use an auto-plunger kicker.

Author construction checklist

  • Build the four-ball trough with the drain at Trough 4, the spring-plunger shooter lane, both slingshots, three jet bumpers, the motorized rotating trunk with its Cube Magnet and four position optos, the subway/lock chain feeding the trap door, the Vanish Lock captive-ball kickout, the static Left Bank Target captive ball, and the two eddy-current outlane magnets.
  • Preserve opto polarity for 31-36 and 55-58; PinMAME already normalizes every printed opto on this machine (zero disagreement), so do not invert any of them again.
  • Bind switches 45/48/85 as eddy-current proximity sensors, not optos or leaf switches.
  • Treat Fliptronic circuits 33-35 (Cube Magnet, Sub Ball Release, Left Drain Magnet) as repurposed non-flipper coils with no address translation; do not model them as flipper hardware.
  • Leave solenoid 19 (prototype Tiger Saw motor) and solenoids 23/36 (optional Magic Post) unfitted on the production machine, but disclose their retained-script toggles verbatim.
  • Bind GI addresses 0/1 as backbox devices per the manual despite the script's playfield-collection behavior; bind GI 2/3 as playfield; leave GI 4 unplaced.
  • Bind every dedicated switch 1-8, every matrix position 11-88 including the printed Not Used positions, Fliptronic 111-118 with 115-118 explicitly not installed, the eight CPU DIP bits, solenoids 1-50, lamps 11-88, GI 0-4, and the 128x32 DMD.

Sources

  • manual.bally.theatre-of-magic.1995: Bally Theatre of Magic operations manual, part number 16-50039-101, SHA-256 ef9348415031e5d851b3c46454a0df0178f7a2066223d54a42db0d6708e56d92.
  • manual-support.bally.theatre-of-magic.1995: retained human transcription, SHA-256 c7a4dd783f33e63413bc33b9dcdf99c7381f80e82eb84017cf0b2a1354d6b9fb.
  • vpx-script.tom-2-4: retained known-working embedded script, SHA-256 596c926f27c1782819a0184566f083a161be362fec7a3bbc634a9138d97b47c3, binding tom_14hb (a non-production driver variant; the primary firmware binding is tom_13).
  • vpx-table.tom-2-4: retained table "Theatre of Magic (Bally 1995) 2.4.vpx", SHA-256 5f8bb3e0493c408484e475516e2f2c3d84b3487dcfb63eb231bca2c40b531253, bounds left=0 top=0 right=952 bottom=2594.1 (unusually tall; normalized with x/952, y/2594.1, not the y/2162 divisor used by every standard-height WPC game curated so far).
  • pinmame.core.4ec52ff0ac133: src/wpc/sims/wpc/full/tom.c and the WPC-Security core/solenoid/flipper handling at the pinned revision.

ROM sets

Every driver that resolves to this physical machine.

ROM set Description Year Parent Hardware
tom_13cTheatre of Magic (1.3XC Competition MOD)
2019 "1.3XC Competition MOD" community ruleset patch built from the 1.3X production ROM (pinned tom.c comment: "based on 1.3X, NOT the Tiger saw rev. 1.4H, but it includes Tiger saw support"). Same physical hardware and addresses as tom_13.
2019tom_13identical
tom_14hbTheatre of Magic (1.4H Coin Play)
2005 "1.4 Home version Coin Play" game ROM, a coin-mechanism variant of tom_14h. This is the driver the retained script binds (cGameName = "tom_14hb", commented "1.3x arcade rom - with credits" by the table author), but it is not the machine's production firmware -- see the hazard note above. It shares the identical controller-address map with every other tom_* driver; no conflicts entry is required for switch, coil, or lamp semantics because PinMAME's own driver registration (one tomGameData struct, one init_tom, for every clone) structurally rules out an address-level difference between the bound driver and the production ROM.
2005tom_13identical
tom_14hTheatre of Magic (1.4H)
2005 "1.4 Home version" game ROM (driver.c "10/96 B", i.e. a post-arcade-run software revision; NOT the shipped arcade firmware). Registered through the identical CORE_CLONEDEF/init_tom path as tom_13, so the controller-address map is unchanged; only ROM-internal rules differ.
2005tom_13identical
tom_13fTheatre of Magic (1.3 French)
2005 French-localized rebuild of the 1.3 production ROM; no controller-address change.
2005tom_13identical
tom_121Theatre of Magic (1.21X LED Ghost Fix)
Bally 1.21X game ROM with an LED ghost-image fix; no controller-address change.
1995tom_13identical
tom_101fTheatre of Magic (1.01 French LED Ghost Fix)
Bally 1.01 French-localized game ROM with an LED ghost-image fix; no controller-address change.
1995tom_13identical
tom_061Theatre of Magic (0.61A LED Ghost Fix)
Bally 0.61A prototype game ROM with an LED ghost-image fix; no controller-address change.
1995tom_13identical
tom_13Theatre of Magic (1.3X)
Bally production 1.3X game ROM shipped with the physical machine (pinned driver.c dates it "08/95 B", the newest of the six 1995-dated revisions and the parent of the clone tree). This is the primary firmware binding for this definition.
1995identical

Parent set: tom_13 — 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.

  • PinMAME catalog

    BSD-3-Clause

    pinmame.catalog.4ec52ff0ac13

    Pinned catalog driver records for the tom_* clone tree

    by
    PinMAME contributors
    rev
    4ec52ff0ac13
  • PinMAME source

    BSD-3-Clause

    pinmame.core.4ec52ff0ac13

    src/wpc/sims/wpc/full/tom.c tomGameData GEN_WPCSECURITY with wpc_dispDMD, the inverted-switch mask {0x00,0x00,0x00,0x3f,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00}, FLIP_SW(FLIP_L)|FLIP_SOL(FLIP_L) (no upper-flipper bit), swStart/swTilt/swSlamTilt/swCoinDoor defines, sBallTrough..sLeftDrainMagnet solenoid defines (33-35 in the driver-specific 33-36 range, no FLIP_SOL(FLIP_UR)/FLIP_SOL(FLIP_UL) so no flipper remap applies), tom_handleMech/tom_getMech (TrunkPos 0-359 in TOM_TRUNKTICKS=2 degree steps, TOM_SWCLOSEDDEGREE=20 degree windows at 0/90/180/270, magnetTicks countdown from TOM_MAGNETTICKSINIT=30), CORE_GAMEDEF(tom,13,...)/CORE_CLONEDEF(tom,<ver>,13,...) for every clone sharing one init_tom/tomGameData struct; src/wpc/gen.h GEN_WPCSECURITY=U64(0x20); src/wpc/wpc.c GENWPC_HASFLIPTRON/GENWPC_HASWPC95/GENWPC_HASPIC masks and the WPC_FLIPPERS/WPC_SWROWREAD dispatch; src/wpc/core.h WPC solenoid/switch numbering; src/wpc/core.c core_getSol/core_getSw dispatch; src/wpc/driver.c dated driver comments (tom_13 "08/95 B", tom_14h/tom_14hb "10/96 B ... Home version"); src/libpinmame/libpinmame.h PINMAME_HARDWARE_GEN_WPCSECURITY=0x20

    by
    PinMAME contributors
    rev
    4ec52ff0ac13
  • Human review

    BSD-3-Clause

    controller-profile.pinmame-wpc-security

    WPC-Security public switch, DIP, solenoid, lamp, and five-GI address rules (identical addressing to WPC-DCS/WPC-Fliptronic; the security PIC only changes the internal matrix-scan handshake, not the public address space)

    internal:controllers/pinmame/wpc-security.json
    by
    PinMAME contributors
    rev
    repository
  • Operator manual

    manual.bally.theatre-of-magic.1995

    158-page Bally Theatre of Magic operations manual (part number 16-50039-101, FINAL, March 1995, Midway Manufacturing Company). Printed page 2 carries a clean duplicate of the DIP switch chart and the full Solenoid/Flasher Table; printed pages 2-40 through 2-45 carry the lamp/switch/solenoid location parts lists and matrix/wiring tables a second time; printed page 1-45 carries Eddy Sensor Calibration; printed page 1-50 carries the Magic Trunk teardown diagram; Section 3 (3-1 onward) carries Game Wiring and Schematics a third time with component-level circuit detail. The PDF carries an OCR text layer (Adobe Acrobat Paper Capture) that was verified against 300 dpi page renders rather than trusted directly.

    external:pinmame-manuals/by-machine/bally.theatre-of-magic.1995/archive-arcademanual_Theatre_of_Magic_OPS/Theatre_of_Magic_OPS.pdf
    by
    Bally Pinball / Midway Manufacturing Company
    sha256
    ef9348415031…
  • Human review

    manual-support.bally.theatre-of-magic.1995

    Retained human transcription of every rendered manual table used by this definition, verified against 300 dpi page renders regardless of the retained PDF's OCR text layer, together with the rendered PNG page cache under external:pinmame-manuals/rendered/bally.theatre-of-magic.1995/.

    external:pinmame-review-artifacts/theatre-of-magic-1995/manual-transcription.md
    by
    pinmame-game-defs curation
    rev
    2026-08-07
    sha256
    c7a4dd783f33…
  • VPX table

    vpx-table.tom-2-4

    Retained known-working table, version 2.4. Exact playfield bounds are left=0 top=0 right=952 bottom=2594.1 -- unusually tall, so normalized coordinates are x/952 and y/2594.1, not the y/2162 divisor used by every standard-height WPC table curated so far. Geometry authority only for named table objects.

    external:pinmame-vpx-sources/bally/theatre-of-magic-1995/source/Theatre%20of%20Magic%20%28Bally%201995%29%202.4.vpx
    by
    table authors
    sha256
    5f8bb3e0493c…
  • VPX script

    vpx-script.tom-2-4

    Retained embedded script (207,444 bytes). Runtime and mechanism-causality authority: cGameName = "tom_14hb" (see the ROM-binding hazard note in the curator), the SolCallback table for solenoids 1-28 and 33-35 plus core.vbs sLLFlipper/sLRFlipper, the TrunkTimer_Timer trunk-rotation state machine, the trough/subway/lock/vanish-lock switch handlers, UpdateLamps' lamp-object bindings, and UpdateGI's GI-collection bindings.

    external:pinmame-vpx-sources/bally/theatre-of-magic-1995/extracted-vpxtool/script.vbs
    by
    table authors
    sha256
    596c926f27c1…
  • VPX table

    vpx-extraction.tom-2-4

    Canonical manifest covering every sorted relative POSIX path, byte size, and SHA-256 under extracted-vpxtool; manifest SHA-256 2db2ef0933b9738ff48e79e3ca6f2332e97e5457321f711d4b8430d4f0c6cc45; 1994 files, 151153328 bytes, produced with vpxtool git:v0.33.3 from the retained table. Bounds are left=0 top=0 right=952 bottom=2594.1.

    external:pinmame-vpx-sources/bally/theatre-of-magic-1995/extracted-vpxtool.manifest.json
    by
    vpxtool extraction

Something wrong or missing?

This definition still has 2 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.