Cabinet knocker
mechanism.knocker
Solenoid 7 raps the cabinet knocker solenoid against the cabinet wall on scoring events (replay/match); it is a standard cabinet device with no playfield presence.
5 ROM sets resolve to this machine. Clones share the definition unless a hardware difference is listed.
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.
Portable roles — the consuming engine maps them to its own input actions.
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.
146 placements · 17 stacked · normalised player view · outline is nominal
Hover a marker to identify it, or click to keep it selected. Numbered markers are several devices in one spot — clicking lists them.
Not on the playfield28 virtual, 20 cabinet or service, 20 unused, 8 dip switch, 2 internal nonvisual, 1 constant — declared rather than missing.
Real evidence exists, but authoring requirements are still missing or in conflict. Verify before shipping a table.
The addresses PinMAME reports as closed. Numbers are the public API values, not matrix hardware pins.
Column × row matrix — the address is column·row.
Outside the matrix1, 2, 3, 4, 5, 6, 7, 8 — dedicated, diagnostic or flipper-column addresses. See the table below.
| # | Name | Device ID | Role | Wiring | Evidence |
|---|---|---|---|---|---|
| 1 | Left Coin Chute Button | switch.cabinet-1 | cabinet.coin.1 | J205-1Orange-Brown WPC-95 CPU board | validated |
| 2 | Center Coin Chute Button | switch.cabinet-2 | cabinet.coin.2 | J205-2Orange-Red WPC-95 CPU board | validated |
| 3 | Right Coin Chute Button | switch.cabinet-3 | cabinet.coin.3 | J205-3Orange-Black WPC-95 CPU board | validated |
| 4 | 4th Coin Chuteopt Button | switch.cabinet-4 | cabinet.coin.4 | J205-4Orange-Yellow WPC-95 CPU board | validated |
| 5 | Service Credits / Escape Button | switch.cabinet-5 | service.escape | J205-6Orange-Green WPC-95 CPU board | validated |
| 6 | Volume Down / Down Button | switch.cabinet-6 | service.down | J205-7Orange-Blue WPC-95 CPU board | validated |
| 7 | Volume Up / Up Button | switch.cabinet-7 | service.up | J205-8Orange-Violet WPC-95 CPU board | validated |
| 8 | Begin Test / Enter Button | switch.cabinet-8 | service.enter | J205-9Orange-Gray WPC-95 CPU board | validated |
| 11 | Harem Passage Microswitch | switch.matrix-11 | cabinet.launch | J206-1Green-Brown J208-1White-Brown WPC-95 CPU board | validated |
| 12 | Vanish Tunnel Microswitch | switch.matrix-12 | J206-1Green-Brown J208-2White-Red WPC-95 CPU board | validated | |
| 13 | Start Button Button | switch.matrix-13 | cabinet.start | J206-1Green-Brown J208-3White-Orange WPC-95 CPU board | validated |
| 14 | Plumb Bob Tilt Tilt | switch.matrix-14 | cabinet.tilt | J206-1Green-Brown J208-4White-Yellow WPC-95 CPU board | validated |
| 15 | Ramp Enter Microswitch | switch.matrix-15 | J206-1Green-Brown J208-5White-Green WPC-95 CPU board | validated | |
| 16 | Left Outlane Microswitch | switch.matrix-16 | J206-1Green-Brown J208-7White-Blue WPC-95 CPU board | validated | |
| 17 | Right Inlane Microswitch | switch.matrix-17 | J206-1Green-Brown J208-8White-Violet WPC-95 CPU board | validated | |
| 18 | Ball Shooter Microswitch | switch.matrix-18 | J206-1Green-Brown J208-9White-Gray WPC-95 CPU board | validated | |
| 21 | Slam Tilt Leaf | switch.matrix-21 | cabinet.slam-tilt | J206-2Green-Red J208-1White-Brown WPC-95 CPU board | validated |
| 22 | Coin Door Closed Microswitch | switch.matrix-22 | cabinet.coin-door | J206-2Green-Red J208-2White-Red WPC-95 CPU board | validated |
| 23 | Genie Standup Target Microswitch | switch.matrix-23 | J206-2Green-Red J208-3White-Orange WPC-95 CPU board | validated | |
| 25 | Bazaar Eject Microswitch | switch.matrix-25 | J206-2Green-Red J208-5White-Green WPC-95 CPU board | validated | |
| 26 | Left Inlane Microswitch | switch.matrix-26 | J206-2Green-Red J208-7White-Blue WPC-95 CPU board | validated | |
| 27 | Right Outlane Microswitch | switch.matrix-27 | J206-2Green-Red J208-8White-Violet WPC-95 CPU board | validated | |
| 28 | Left Wire Make Microswitch | switch.matrix-28 | J206-2Green-Red J208-9White-Gray WPC-95 CPU board | validated | |
| 31 | Trough EjectNC Opto | switch.matrix-31 | J206-3Green-Orange J208-1White-Brown WPC-95 CPU board | validated | |
| 32 | Trough Ball 1NC Opto | switch.matrix-32 | J206-3Green-Orange J208-2White-Red WPC-95 CPU board | validated | |
| 33 | Trough Ball 2NC Opto | switch.matrix-33 | J206-3Green-Orange J208-3White-Orange WPC-95 CPU board | validated | |
| 34 | Trough Ball 3NC Opto | switch.matrix-34 | J206-3Green-Orange J208-4White-Yellow WPC-95 CPU board | validated | |
| 35 | Trough Ball 4NC Opto | switch.matrix-35 | J206-3Green-Orange J208-5White-Green WPC-95 CPU board | validated | |
| 36 | Left Cage OptoNC Opto | switch.matrix-36 | J206-3Green-Orange J208-7White-Blue WPC-95 CPU board | validated | |
| 37 | Right Cage OptoNC Opto | switch.matrix-37 | J206-3Green-Orange J208-8White-Violet WPC-95 CPU board | validated | |
| 38 | Left Eject Microswitch | switch.matrix-38 | J206-3Green-Orange J208-9White-Gray WPC-95 CPU board | validated | |
| 41 | Ramp Made Left Microswitch | switch.matrix-41 | J206-4Green-Yellow J208-1White-Brown WPC-95 CPU board | validated | |
| 42 | Genie Target Microswitch | switch.matrix-42 | J206-4Green-Yellow J208-2White-Red WPC-95 CPU board | validated | |
| 43 | Left Loop Microswitch | switch.matrix-43 | J206-4Green-Yellow J208-3White-Orange WPC-95 CPU board | validated | |
| 44 | Inner Loop Left Microswitch | switch.matrix-44 | J206-4Green-Yellow J208-4White-Yellow WPC-95 CPU board | validated | |
| 45 | Inner Loop Right Microswitch | switch.matrix-45 | J206-4Green-Yellow J208-5White-Green WPC-95 CPU board | validated | |
| 46 | Mini Standups Microswitch | switch.matrix-46 | J206-4Green-Yellow J208-7White-Blue WPC-95 CPU board | validated | |
| 47 | Ramp Made Right Microswitch | switch.matrix-47 | J206-4Green-Yellow J208-8White-Violet WPC-95 CPU board | validated | |
| 48 | Right Captive Ball Microswitch | switch.matrix-48 | J206-4Green-Yellow J208-9White-Gray WPC-95 CPU board | validated | |
| 51 | Left Slingshot Leaf | switch.matrix-51 | J206-5Green-Black J208-1White-Brown WPC-95 CPU board | validated | |
| 52 | Right Slingshot Leaf | switch.matrix-52 | J206-5Green-Black J208-2White-Red WPC-95 CPU board | validated | |
| 53 | Left Jet Bumper Microswitch | switch.matrix-53 | J206-5Green-Black J208-3White-Orange WPC-95 CPU board | validated | |
| 54 | Right Jet Bumper Microswitch | switch.matrix-54 | J206-5Green-Black J208-4White-Yellow WPC-95 CPU board | validated | |
| 55 | Middle Jet Bumper Microswitch | switch.matrix-55 | J206-5Green-Black J208-5White-Green WPC-95 CPU board | validated | |
| 56 | Lamp Spin CCW Leaf | switch.matrix-56 | J206-5Green-Black J208-7White-Blue WPC-95 CPU board | validated | |
| 57 | Lamp Spin CW Leaf | switch.matrix-57 | J206-5Green-Black J208-8White-Violet WPC-95 CPU board | validated | |
| 58 | Left Captive Ball Microswitch | switch.matrix-58 | J206-5Green-Black J208-9White-Gray WPC-95 CPU board | validated | |
| 61 | Left Standups Microswitch | switch.matrix-61 | J206-6Green-Blue J208-1White-Brown WPC-95 CPU board | validated | |
| 62 | Right Standups Microswitch | switch.matrix-62 | J206-6Green-Blue J208-2White-Red WPC-95 CPU board | validated | |
| 63 | Top Skill Shot Microswitch | switch.matrix-63 | J206-6Green-Blue J208-3White-Orange WPC-95 CPU board | validated | |
| 64 | Middle Skill Shot Microswitch | switch.matrix-64 | J206-6Green-Blue J208-4White-Yellow WPC-95 CPU board | validated | |
| 65 | Bottom Skill Shot Microswitch | switch.matrix-65 | J206-6Green-Blue J208-5White-Green WPC-95 CPU board | validated | |
| 66 | Lock 1 (Bottom) Microswitch | switch.matrix-66 | J206-6Green-Blue J208-7White-Blue WPC-95 CPU board | validated | |
| 67 | Lock 2 (Middle) Microswitch | switch.matrix-67 | J206-6Green-Blue J208-8White-Violet WPC-95 CPU board | validated | |
| 68 | Lock 3 (Top) Microswitch | switch.matrix-68 | J206-6Green-Blue J208-9White-Gray WPC-95 CPU board | validated | |
| 71 | Not Used Matrix Position 71 | switch.matrix-71 | J206-7Green-Violet J208-1White-Brown WPC-95 CPU board | validated | |
| 72 | Not Used Matrix Position 72 | switch.matrix-72 | J206-7Green-Violet J208-2White-Red WPC-95 CPU board | validated | |
| 73 | Not Used Matrix Position 73 | switch.matrix-73 | J206-7Green-Violet J208-3White-Orange WPC-95 CPU board | validated | |
| 74 | Not Used Matrix Position 74 | switch.matrix-74 | J206-7Green-Violet J208-4White-Yellow WPC-95 CPU board | validated | |
| 75 | Not Used Matrix Position 75 | switch.matrix-75 | J206-7Green-Violet J208-5White-Green WPC-95 CPU board | validated | |
| 76 | Not Used Matrix Position 76 | switch.matrix-76 | J206-7Green-Violet J208-7White-Blue WPC-95 CPU board | validated | |
| 77 | Not Used Matrix Position 77 | switch.matrix-77 | J206-7Green-Violet J208-8White-Violet WPC-95 CPU board | validated | |
| 78 | Not Used Matrix Position 78 | switch.matrix-78 | J206-7Green-Violet J208-9White-Gray WPC-95 CPU board | validated | |
| 81 | Not Used Matrix Position 81 | switch.matrix-81 | J206-9Green-Gray J208-1White-Brown WPC-95 CPU board | validated | |
| 82 | Not Used Matrix Position 82 | switch.matrix-82 | J206-9Green-Gray J208-2White-Red WPC-95 CPU board | validated | |
| 83 | Not Used Matrix Position 83 | switch.matrix-83 | J206-9Green-Gray J208-3White-Orange WPC-95 CPU board | validated | |
| 84 | Not Used Matrix Position 84 | switch.matrix-84 | J206-9Green-Gray J208-4White-Yellow WPC-95 CPU board | validated | |
| 85 | Not Used Matrix Position 85 | switch.matrix-85 | J206-9Green-Gray J208-5White-Green WPC-95 CPU board | validated | |
| 86 | Not Used Matrix Position 86 | switch.matrix-86 | J206-9Green-Gray J208-7White-Blue WPC-95 CPU board | validated | |
| 87 | Not Used Matrix Position 87 | switch.matrix-87 | J206-9Green-Gray J208-8White-Violet WPC-95 CPU board | validated | |
| 88 | Not Used Matrix Position 88 | switch.matrix-88 | J206-9Green-Gray J208-9White-Gray WPC-95 CPU board | validated | |
| 111 | Lower Right Flipper EOS Leaf | switch.generic-111 | internal.flipper.lower.right.eos | J208-13Black-Green WPC-95 CPU board | validated |
| 112 | Lower Right Flipper ButtonNC Opto | switch.generic-112 | flipper.lower.right.button | J212-12Blue-Violet WPC-95 CPU board | validated |
| 113 | Lower Left Flipper EOS Leaf | switch.generic-113 | internal.flipper.lower.left.eos | J208-12Black-Blue WPC-95 CPU board | validated |
| 114 | Lower Left Flipper ButtonNC Opto | switch.generic-114 | flipper.lower.left.button | J212-11Blue-Gray WPC-95 CPU board | validated |
| 115 | Not Used Upper Right Flipper EOS | switch.generic-115 | internal.unused.flipper | J208-11Black-Violet WPC-95 CPU board | validated |
| 116 | Not Used Upper Right Flipper ButtonNC Opto | switch.generic-116 | internal.unused.flipper | J212-10Black-Yellow WPC-95 CPU board | validated |
| 117 | Not Used Upper Left Flipper EOS | switch.generic-117 | internal.unused.flipper | J208-10Black-Gray WPC-95 CPU board | validated |
| 118 | Not Used Upper Left Flipper ButtonNC Opto | switch.generic-118 | internal.unused.flipper | J212-9Black-Blue WPC-95 CPU board | validated |
Everything the ROM can energise, grouped the way a table author builds it.
| # | Name | Device ID | Kind | Role | Wiring | Evidence |
|---|---|---|---|---|---|---|
| 1 | Left Cage | device.left-cage | Coil | Q72 WPC-95 power driver board | validated | |
| 2 | Right Cage | device.right-cage | Coil | Q68 WPC-95 power driver board | validated | |
| 3 | Vanish Drop | device.vanish-drop | Coil | Q71 WPC-95 power driver board | validated | |
| 4 | Lock Eject | device.lock-eject | Coil | Q67 WPC-95 power driver board | validated | |
| 5 | Bazaar Eject | device.bazaar-eject | Coil | Q70 WPC-95 power driver board | validated | |
| 6 | Lock Magnet | device.lock-magnet | Coil | Q66 WPC-95 power driver board | validated | |
| 7 | Knocker | device.knocker | Coil | cabinet.knocker | Q69 WPC-95 power driver board | validated |
| 8 | Ramp Magnet Coil | device.ramp-magnet-coil | Coil | Q65 WPC-95 power driver board | validated | |
| 9 | Trough Eject | device.trough-eject | Coil | Q44 WPC-95 power driver board | validated | |
| 10 | Left Slingshot | device.left-slingshot | Coil | Q48 WPC-95 power driver board | validated | |
| 11 | Right Slingshot | device.right-slingshot | Coil | Q43 WPC-95 power driver board | validated | |
| 12 | Left Jet Bumper | device.left-jet-bumper | Coil | Q47 WPC-95 power driver board | validated | |
| 13 | Right Jet Bumper | device.right-jet-bumper | Coil | Q42 WPC-95 power driver board | validated | |
| 14 | Middle Jet Bumper | device.middle-jet-bumper | Coil | Q46 WPC-95 power driver board | validated | |
| 15 | Left Kicker | device.left-kicker | Coil | Q41 WPC-95 power driver board | validated | |
| 21 | Ramp Diverter | device.ramp-diverter | Motor | Q26 WPC-95 power driver board | validated | |
| 33 | Left Diverter Power | device.left-diverter-power | Coil | Q84YEL-VIO WPC-95 power driver board | validated | |
| 34 | Left Diverter Hold | device.left-diverter-hold | Coil | Q86ORG-VIO WPC-95 power driver board | validated | |
| 35 | Vanish Magnet | device.vanish-magnet | Coil | Q81YEL-GRY WPC-95 power driver board | validated | |
| 36 | Loop Post Diverter | device.loop-post-diverter | Coil | Q83ORG-GRY WPC-95 power driver board | validated | |
| 45 | Lower Right Flipper Power | device.lower-right-flipper-power | Coil | Q90YEL-GRN WPC-95 power driver board | validated | |
| 46 | Lower Right Flipper Hold | device.lower-right-flipper-hold | Coil | Q92ORG-GRN WPC-95 power driver board | validated | |
| 47 | Lower Left Flipper Power | device.lower-left-flipper-power | Coil | Q87YEL-BLU WPC-95 power driver board | validated | |
| 48 | Lower Left Flipper Hold | device.lower-left-flipper-hold | Coil | Q89ORG-BLU WPC-95 power driver board | validated |
| # | Name | Device ID | Wiring | Evidence |
|---|---|---|---|---|
| 16 | Left Eject Flasher | device.left-eject-flasher | Q45 WPC-95 power driver board | validated |
| 17 | Inlane Flashers | device.inlane-flashers | Q28 WPC-95 power driver board | validated |
| 18 | Final Battle Flasher | device.final-battle-flasher | Q32 WPC-95 power driver board | validated |
| 19 | Left Loop Flasher | device.left-loop-flasher | Q27 WPC-95 power driver board | validated |
| 20 | Bazaar Flasher | device.bazaar-flasher | Q31 WPC-95 power driver board | validated |
| 22 | Rub Lamp Flasher | device.rub-lamp-flasher | Q30 WPC-95 power driver board | validated |
| 23 | Magic Lamp Flashers | device.magic-lamp-flashers | Q25 WPC-95 power driver board | validated |
| 24 | Right Loop Flasher | device.right-loop-flasher | Q29 WPC-95 power driver board | validated |
| 25 | Start Tale Flashers | device.start-tale-flashers | Q16 WPC-95 power driver board | validated |
| 26 | Jet Flashers | device.jet-flashers | Q15 WPC-95 power driver board | validated |
| 27 | Top Loop Flasher | device.top-loop-flasher | Q14 WPC-95 power driver board | validated |
| 28 | Ramp Flasher | device.ramp-flasher | Q13 WPC-95 power driver board | validated |
Column × row matrix — the address is column·row.
| # | Name | Device ID | Role | Wiring | Evidence |
|---|---|---|---|---|---|
| 11 | Jewel 1 (Left) | lamp.matrix-11 | Q96 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 12 | Jewel 2 | lamp.matrix-12 | Q96 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 13 | Jewel 3 | lamp.matrix-13 | Q96 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 14 | Jewel 4 | lamp.matrix-14 | Q96 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 15 | Jewel 5 | lamp.matrix-15 | Q96 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 16 | Jewel 6 | lamp.matrix-16 | Q96 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 17 | Jewel 7 (Right) | lamp.matrix-17 | Q96 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 18 | Shoot Again | lamp.matrix-18 | Q96 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 21 | Jackpot | lamp.matrix-21 | Q100 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 22 | (G)enie | lamp.matrix-22 | Q100 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 23 | G(E)nie | lamp.matrix-23 | Q100 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 24 | Ge(N)ie | lamp.matrix-24 | Q100 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 25 | Gen(I)e | lamp.matrix-25 | Q100 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 26 | Geni(E) | lamp.matrix-26 | Q100 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 27 | Multiball | lamp.matrix-27 | Q100 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 28 | Outlane Special | lamp.matrix-28 | Q100 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 31 | Magic Carpet | lamp.matrix-31 | Q95 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 32 | Action 3 | lamp.matrix-32 | Q95 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 33 | Ramp Arrow Right | lamp.matrix-33 | Q95 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 34 | Ramp Arrow Left | lamp.matrix-34 | Q95 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 35 | Smoke 1 (Bottom) | lamp.matrix-35 | Q95 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 36 | Smoke 2 | lamp.matrix-36 | Q95 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 37 | Smoke 3 | lamp.matrix-37 | Q95 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 38 | Amulet | lamp.matrix-38 | Q95 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 41 | Smoke 6 | lamp.matrix-41 | Q99 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 42 | Smoke 7 | lamp.matrix-42 | Q99 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 43 | Smoke 8 | lamp.matrix-43 | Q99 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 44 | Smoke 9 | lamp.matrix-44 | Q99 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 45 | Smoke 10 | lamp.matrix-45 | Q99 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 46 | Smoke 11 | lamp.matrix-46 | Q99 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 47 | Smoke 12 | lamp.matrix-47 | Q99 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 48 | Smoke 13 | lamp.matrix-48 | Q99 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 51 | Smoke 14 (Top) | lamp.matrix-51 | Q94 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 52 | Lamp-15 | lamp.matrix-52 | Q94 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 53 | Lamp-30 | lamp.matrix-53 | Q94 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 54 | Lamp-60 | lamp.matrix-54 | Q94 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 55 | Smoke 4 | lamp.matrix-55 | Q94 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 56 | Smoke 5 | lamp.matrix-56 | Q94 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 57 | Shoot Star Right | lamp.matrix-57 | Q94 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 58 | Shoot Star Left | lamp.matrix-58 | Q94 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 61 | Make A Wish | lamp.matrix-61 | Q98 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 62 | (B)azaar | lamp.matrix-62 | Q98 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 63 | B(A)zaar | lamp.matrix-63 | Q98 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 64 | Ba(Z)aar | lamp.matrix-64 | Q98 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 65 | Baz(A)ar | lamp.matrix-65 | Q98 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 66 | Baza(A)r | lamp.matrix-66 | Q98 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 67 | Bazaa(R) | lamp.matrix-67 | Q98 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 68 | Center Lock | lamp.matrix-68 | Q98 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 71 | Action 2 | lamp.matrix-71 | Q93 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 72 | Left Lock | lamp.matrix-72 | Q93 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 73 | Harem Advance | lamp.matrix-73 | Q93 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 74 | Left Tiger Loop | lamp.matrix-74 | Q93 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 75 | Action 1 | lamp.matrix-75 | Q93 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 76 | Wish 1 | lamp.matrix-76 | Q93 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 77 | Wish 2 | lamp.matrix-77 | Q93 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 78 | Wish 3 | lamp.matrix-78 | Q93 column driver with Q105 row driver WPC-95 power driver board | validated | |
| 81 | Extra Ball | lamp.matrix-81 | Q97 column driver with Q104 row driver WPC-95 power driver board | validated | |
| 82 | Action 5 | lamp.matrix-82 | Q97 column driver with Q108 row driver WPC-95 power driver board | validated | |
| 83 | Right Lock | lamp.matrix-83 | Q97 column driver with Q103 row driver WPC-95 power driver board | validated | |
| 84 | Right Tiger Loop | lamp.matrix-84 | Q97 column driver with Q107 row driver WPC-95 power driver board | validated | |
| 85 | Captive Ball Right | lamp.matrix-85 | Q97 column driver with Q102 row driver WPC-95 power driver board | validated | |
| 86 | Action 4 | lamp.matrix-86 | Q97 column driver with Q106 row driver WPC-95 power driver board | validated | |
| 87 | Captive Ball Left | lamp.matrix-87 | Q97 column driver with Q101 row driver WPC-95 power driver board | validated | |
| 88 | Start Button | lamp.matrix-88 | cabinet.start | Q97 column driver with Q105 row driver WPC-95 power driver board | validated |
| # | Name | Device ID | Role | Wiring | Evidence |
|---|---|---|---|---|---|
| 0 | Illumination String 1 | gi.string-1 | cabinet.insert-panel | Q5 WPC-95 power driver board | validated |
| 1 | Illumination String 2 | gi.string-2 | cabinet.insert-panel | Q4 WPC-95 power driver board | validated |
| 2 | Illumination String 3 | gi.string-3 | cabinet.insert-panel | Q3 WPC-95 power driver board | validated |
| 3 | Illumination String 4 | gi.string-4 | Q2 WPC-95 power driver board | validated | |
| 4 | Illumination String 5 | gi.string-5 | Q1 WPC-95 power driver board | validated |
| # | 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-95 LPDC Output 37 | device.unused-wpc-95-lpdc-output-37 | internal.unused.wpc-output | validated |
| 38 | Unused WPC-95 LPDC Output 38 | device.unused-wpc-95-lpdc-output-38 | internal.unused.wpc-output | validated |
| 39 | Unused WPC-95 LPDC Output 39 | device.unused-wpc-95-lpdc-output-39 | internal.unused.wpc-output | validated |
| 40 | Unused WPC-95 LPDC Output 40 | device.unused-wpc-95-lpdc-output-40 | internal.unused.wpc-output | validated |
| 41 | Unused WPC-95 LPDC Mirror 41 | device.unused-wpc-95-lpdc-mirror-41 | internal.duplicate.lpdc-mirror | validated |
| 42 | Unused WPC-95 LPDC Mirror 42 | device.unused-wpc-95-lpdc-mirror-42 | internal.duplicate.lpdc-mirror | validated |
| 43 | Unused WPC-95 LPDC Mirror 43 | device.unused-wpc-95-lpdc-mirror-43 | internal.duplicate.lpdc-mirror | validated |
| 44 | Unused WPC-95 LPDC Mirror 44 | device.unused-wpc-95-lpdc-mirror-44 | internal.duplicate.lpdc-mirror | 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 |
| 51 | Unused Custom-Solenoid Position 51 | device.unused-custom-solenoid-position-51 | internal.unused.wpc-output | validated |
| 52 | Unused Custom-Solenoid Position 52 | device.unused-custom-solenoid-position-52 | internal.unused.wpc-output | validated |
| 53 | Unused Custom-Solenoid Position 53 | device.unused-custom-solenoid-position-53 | internal.unused.wpc-output | validated |
| 54 | Unused Custom-Solenoid Position 54 | device.unused-custom-solenoid-position-54 | internal.unused.wpc-output | validated |
| 55 | Unused Custom-Solenoid Position 55 | device.unused-custom-solenoid-position-55 | internal.unused.wpc-output | validated |
| 56 | Unused Custom-Solenoid Position 56 | device.unused-custom-solenoid-position-56 | internal.unused.wpc-output | validated |
| 57 | Unused Custom-Solenoid Position 57 | device.unused-custom-solenoid-position-57 | internal.unused.wpc-output | validated |
| 58 | Unused Custom-Solenoid Position 58 | device.unused-custom-solenoid-position-58 | internal.unused.wpc-output | validated |
| 59 | Unused Custom-Solenoid Position 59 | device.unused-custom-solenoid-position-59 | internal.unused.wpc-output | validated |
| 60 | Unused Custom-Solenoid Position 60 | device.unused-custom-solenoid-position-60 | internal.unused.wpc-output | validated |
| 61 | Unused Custom-Solenoid Position 61 | device.unused-custom-solenoid-position-61 | internal.unused.wpc-output | validated |
| 62 | Unused Custom-Solenoid Position 62 | device.unused-custom-solenoid-position-62 | internal.unused.wpc-output | validated |
| 63 | Unused Custom-Solenoid Position 63 | device.unused-custom-solenoid-position-63 | internal.unused.wpc-output | validated |
| 64 | Unused Custom-Solenoid Position 64 | device.unused-custom-solenoid-position-64 | internal.unused.wpc-output | validated |
| # | 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 | J206-2Green-Red J208-4White-Yellow WPC-95 CPU board | validated |
Logical assemblies with their actuators, sensors and observed behaviour. Click a chip to jump to the address it refers to.
mechanism.knocker
Solenoid 7 raps the cabinet knocker solenoid against the cabinet wall on scoring events (replay/match); it is a standard cabinet device with no playfield presence.
mechanism.trough
Four balls rest on trough optos 32-35, with Trough Ball 1 (32) at the eject end nearest the shooter lane and Trough Ball 4/Drain (35) at the drain entrance. Solenoid 9 (SolRelease) ejects the ball resting on 32 and pulses trough-eject opto 31 in the same event (vpmTimer.PulseSw 31). All five positions 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.
mechanism.cages
A raised cage wall traps a ball rolling through the left/right inlane opto (36/37) unless a second ball is simultaneously present in the trigger zone. The retained script's sw36_timer/sw37_timer handlers poll ball positions every 10 ms and only raise the cage (leftcage.z=0 / rightcage.z=0) once the lane is clear; solenoids 1/2 (SolSpikerLeft/SolSpikerRight) lower the cage back down (z=-69) on release. The cage optos rest closed and are normalized by PinMAME's inverted-switch mask column 3.
mechanism.vanishing-ball
The manual's "Vanishing Magnet Assembly" (TOC 2-25) makes a ball appear to disappear. Solenoid 3 (SolVanishDrop) opens a hidden trapdoor (HideVanish.Isdropped) beneath the Vanish Tunnel opto (switch 12, pulsed on entry) while solenoid 35 (SolVanishMagnet) energizes a magnet that holds the ball out of sight; releasing the magnet (HideVanish_Timer) launches the ball back into play in a random direction. All three retained table objects (VanishHole trigger, VanishMagnet trigger, HideVanish wall) cluster within one raw unit of each other, confirming a single physical assembly.
mechanism.lock
A single magnet (solenoid 6, mLockMagnet) captures and holds up to three locked balls at stacked positions Lock 1 (bottom, switch 66), Lock 2 (middle, switch 67), and Lock 3 (top, switch 68); the retained script's LockMagnet_hit/LockMagnet1_unhit handlers damp ball velocity while the magnet is energized. Solenoid 4 (SolLockRelease) kicks the stack loose (Lock1.kick) and opens two release walls (wall001/wall002) so the locked balls can return to play.
mechanism.bazaar-scoop
A ball resting on opto 25 (Bazaar Eject) is kicked back to the playfield by solenoid 5 (SolBazaarKick); the retained script raises a companion collision wall (sw25wall) while the ball is captured.
mechanism.ramp-magnet
Solenoid 8 (SolRampMagnet) energizes a magnet (RMagnet) on the Magnet Ramp Assembly that catches and holds a ball mid-ramp; releasing it nudges the ball forward (VelX=5, VelY=2). No printed switch is dedicated to this device; the manual documents its own switch and diode assembly as part of the Magnet Ramp Assembly (item 1c, A-12238) but that assembly feeds the Ramp Made Left/Right matrix switches (41/47), not a magnet-specific position sensor.
mechanism.ramp-diverter
Solenoid 21 (RampDiverter) drives a physically rotating diverter post on the Swirl Ramp Assembly (manual item 2, printed 2-42) between two end stops over several animation steps (RampDiv_Timer, RampDivPos range -21 to 1), not a simple on/off flasher despite sitting in the flasher-numbered address range.
mechanism.playfield-diverter
A two-stage power/hold coil pair (solenoids 33/34) on the Fliptronic upper-right circuit drives a playfield ball diverter gate (PlayFDiv) rather than an upper flipper -- this game has no upper flippers. The retained script scripts only the hold address (34, SolPlayFDiv via vpmSolDiverter); the power address (33) shares the same physical coil pair per the manual's J119-6 wiring bus.
mechanism.loop-post-diverter
Solenoid 36 (SolLoopDiv) raises a post (LoopPostDiverter wall) that diverts a ball at the right loop; it is wired on the same Fliptronic upper-left circuit bus (J119-8) as Vanish Magnet (solenoid 35) but is an independently scripted, unrelated device, not that circuit's power/hold partner.
mechanism.spinning-lamp-unit
The manual's "Spinning Lamp Unit Assembly" (TOC 2-23) is a freely rotating disc (table radius 60 units, centered at normalized x=0.535714 y=0.388170) that two spinner-kick posts near the shooter lane (Kicker.SpinnerKick/SpinnerKick2) set spinning when struck by a ball. The retained script's SpinnerBallTimer_Timer integrates angular speed with friction and a spring-centered wobble every 10 ms, and pulses public switch 56 (Lamp Spin CCW) or 57 (Lamp Spin CW) each time the disc's rotation crosses a position threshold, depending on spin direction. There is no PinMAME mech table or ROM-side position counter for this motion; it is a pure VPX physical simulation with no coil -- the disc is ball-driven, not motorized.
mechanism.genie
The manual's "Genie Double Target Assembly" (TOC 2-24) is a spring-loaded rocking figure (GenieP/GenieP1 primitives) struck by the ball at two collision zones (GenieTrig, GenieTrig1; a third object GenieTrig2 exists in the table but has no script handler and is inert). The retained script's UpdateGenie integrates a bounce/decay physics model on the figure's rock angle and asserts public switch 42 (Genie Target) whenever that angle exceeds 4.5 degrees -- there is no discrete trigger-hit event for the switch itself. The separate Genie Standup Target (switch 23, HitTarget sw23) is a distinct, single, ordinary standup target elsewhere on the playfield.
mechanism.slingshots
Each slingshot assembly carries a kick switch (A-17800) and a separate scored switch (A-17793, diode-attached) reported as one matrix address. The retained script's LeftSlingShot_Slingshot/RightSlingShot_Slingshot handlers pulse matrix addresses 51 and 52 and fire coils 10/11 in the same event.
mechanism.jet-bumpers
Three A-9415-2 jet bumpers with A-16443 skirt switches. The retained script's Bumper1_Hit, Bumper3_Hit, and Bumper2_Hit handlers pulse switches 53 (Left), 54 (Right), and 55 (Middle) and fire coils 12, 13, and 14 respectively, matching the printed Left/Right/Middle Jet Bumper labels (note the non-alphabetic table-object-to-address mapping: Bumper2 is the Middle jet and Bumper3 is the Right jet).
mechanism.lower-flippers
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. Tales of the Arabian Nights runs Const UseSolenoids = 2 fast flips, so the ROM drives the coils directly. There are no upper flippers; the upper-flipper Fliptronic circuits (115, 116, 117, 118) are unfitted and the printed upper-flipper solenoid circuits (33-36) drive unrelated non-flipper devices.
mechanism.left-kicker
A ball resting on switch 38 (Left Eject) is kicked back to the playfield by solenoid 15 (SolLeftKicker).
Connections that exist in copper, not in the ROM. These fire whether or not a game is running.
Working knowledge that has no schema field yet — edition differences, tuning values, pitfalls.
This is the Williams WPC-95 physical product released 1996 (WPC part-number family 547; "ARABIAN NIGHTS" models 50247-52347 per the manual's Declaration of Conformity), IPDB 3824 (candidate: sourced from the retained VPX table's own info.json description, "IPD No. 3824"; direct verification against ipdb.org was attempted this session and blocked by a Cloudflare challenge that did not clear with a headless-automation browser session -- title and manufacturer/year are independently confirmed against the manual and pinned driver, so only the bare numeric ID is unverified against the primary site). It covers the totan_* clone tree: totan_04 (0.4 prototype), totan_12, totan_13, totan_14 (parent, production 1.4/S1.1, the driver the retained script binds to), and totan_15c (2016 community "Competition MOD" ruleset built on the same 1.4/S1.1 codebase and controller addresses). Every one of these is a game-ROM revision for the same physical machine; none is virtual-only.
Evidence precedence for this definition: the retained known-working script (JPSalas 2015, flupper/rothbauerw 2019) is runtime and mechanism-causality ground truth; the Williams 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 a genuine OCR text layer, but pdftotext -layout badly garbles its multi-column tables (columns interleave, numbers shift rows), so every printed table used here was re-verified against the 300 dpi rendered pages and transcribed into external:pinmame-review-artifacts/tales-of-the-arabian-nights-1996/manual-transcription.md; the raw OCR text was used only to locate pages.
This retained table is smaller and older than the VPW mods used for several recently curated WPC games (944 extracted files, no VPW authorship credited). Its fidelity is judged honestly below: where its object set cannot support a validated placement, the device is left spatially unresolved rather than given a fabricated coordinate.
GEN_WPC95 (PINMAME_HARDWARE_GEN_WPC95 = 0x80) with wpc_dispDMD. The controller profile is pinmame.wpc-95, reused unchanged.
totanGameData's inverted-switch mask {0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} inverts column 3 bits 0-6 (31-37); the printed matrix page (2-38) shades exactly those seven cells "OPTO, TYPICALLY CLOSED" and no others. This is a rare zero-disagreement polarity sweep: every opto the manual documents (assembly part number present, switch part number blank -- the same signature the project has used on every prior WPC-95 game) is normalized by PinMAME, and nothing outside that column carries opto construction.totanGameData declares no custSol, no lampCol, and no swCol, so nothing above public address 36 (except 45-48) or lamp column 8 is populated, and the WPC-95 LPDC range (37-44) is entirely unused -- there is no motorized custom-solenoid mechanism on this machine (contrast Monster Bash's Dracula motor at 37/38+41/42).One WPC-95 numbering fact must not be lost: the printed solenoid table numbers the lower flipper circuits 29-32, while PinMAME publishes the same circuits at 45-48 (CORE_FIRSTLFLIPSOL = 45); the manual numbers are preserved as manual.address aliases. Unlike every WPC-95 game curated so far that has a repurposed upper-flipper circuit, this game's printed circuits 33-36 pass straight through to public 33-36 with no address translation, because totanGameData.hw.flippers carries FLIP_SOL(FLIP_L) only (no FLIP_UR/FLIP_UL bit): core_getSol's solNo <= 36 branch therefore falls to the generic mask = 1<<(solNo-33+4) path rather than the flipper-coil path, so a recreation binds these four addresses as plain driver-board outputs, not through any flipper abstraction.
Tales of the Arabian Nights has no auto-plunger (no solenoid is printed or scripted for it): this is a manual pull-back plunger game, and switch 18 (Ball Shooter) is simply a lane-presence sensor. Four balls rest on trough optos 32-35, with Trough Ball 1 (32) at the eject end nearest the shooter lane and Trough Ball 4 (35) at the drain entrance (switch 35 also fires the Drain handler). Solenoid 9 (SolRelease) ejects the ball on 32; the retained script pulses trough-eject opto 31 in the same event (vpmTimer.PulseSw 31), so switch 31 is a documented projection onto the Trough-Ball-1 kicker position rather than a separately placed object.
Trough optos 31-37 (the trough itself plus the left/right inlane "cage" optos, see below) are printed as optos that rest closed; PinMAME's mask covers exactly this set, so the public state is already normalized.
A raised cage wall traps a ball rolling through the left/right inlane opto (switches 36/37) unless a second ball is simultaneously present in the trigger zone. The retained script's sw36_timer/sw37_timer handlers poll ball positions every 10 ms and only raise the cage once the lane is clear; solenoids 1/2 (SolSpikerLeft/SolSpikerRight) lower the cage back down on release. This is a "hold a ball in reserve until the lane clears" gimmick, not a kicker.
The manual's "Vanishing Magnet Assembly" (TOC 2-25) makes a ball appear to disappear. Solenoid 3 (SolVanishDrop) opens a hidden trapdoor beneath the Vanish Tunnel opto (switch 12, pulsed on entry) while solenoid 35 (SolVanishMagnet) energizes a magnet that holds the ball out of sight; releasing the magnet launches the ball back into play in a random direction (HideVanish_Timer). All three retained table objects (the entry trigger, the magnet trigger, and the trapdoor wall) cluster within one raw unit of each other in the extraction, confirming they model one physical assembly.
A single magnet (solenoid 6) captures and holds up to three locked balls at stacked positions Lock 1 (bottom, switch 66), Lock 2 (middle, switch 67), and Lock 3 (top, switch 68); the retained script's LockMagnet_hit/LockMagnet1_unhit handlers damp ball velocity while the magnet is energized. Solenoid 4 (SolLockRelease) kicks the stack loose and opens two release walls so the locked balls can return to play.
A ball resting on opto 25 (Bazaar Eject) is kicked back to the playfield by solenoid 5 (SolBazaarKick); the retained script raises a companion collision wall while the ball is captured.
Solenoid 8 (SolRampMagnet) energizes a magnet on the Magnet Ramp Assembly (manual item 1, printed 2-42) that catches and holds a ball mid-ramp, then nudges it forward on release. No printed switch is dedicated to this magnet.
Solenoid 21 (Ramp Diverter) is not a flasher despite sitting in the flasher-numbered address range (17-28): the retained script's RampDiverter/RampDiv_Timer handlers animate a physically rotating diverter post on the Swirl Ramp Assembly (manual item 2) over several steps, matching the manual's own "Low Power" solenoid type and AE-30-2000 coil part number rather than a flashlamp part number.
Solenoids 33/34 (printed "Upr. Rt. Power/Hold") drive a "Left Diverter" playfield gate (PlayFDiv), not an upper flipper -- this game has no upper flippers. The retained script scripts only the hold address (34, SolPlayFDiv); the power address (33) shares the same physical coil pair per the manual's shared J119-6 wiring bus, the same power/hold-column-template pattern established on Indiana Jones: The Pinball Adventure's repurposed upper-flipper circuits. Solenoid 36 (Loop Post Diverter, SolLoopDiv) is wired on the same Fliptronic upper-left circuit bus (J119-8) as Vanish Magnet (35) but is an independent, separately scripted device, not that circuit's power/hold partner -- the printed "Power"/"Hold" column labels for 35/36 are the standard WPC flipper-circuit schematic template carried over onto two unrelated toys, not evidence of an actual power-then-hold relationship.
The manual's "Spinning Lamp Unit Assembly" (TOC 2-23) has no dedicated printed switch/solenoid table page of its own, but it is fully reconstructable from the retained script. It is a freely rotating disc (table radius 60 units, centered at normalized x=0.535714, y=0.388170 -- also the placement of solenoid 23's "Magic Lamp Flasher") that two spinner-kick posts near the shooter lane (Kicker.SpinnerKick/SpinnerKick2) set spinning when struck by a ball. SpinnerBallTimer_Timer integrates angular speed with friction and a spring-centered wobble every 10 ms, and pulses public switch 56 (Lamp Spin CCW) or 57 (Lamp Spin CW) each time the disc's simulated rotation crosses a position threshold, depending on spin direction. There is no PinMAME mech table or ROM-side position counter for this motion (totanGameData.hw.handleMech is unset, unlike Monster Bash's Dracula/Frankenstein mechanisms) -- it is a pure VPX physics simulation with no drive coil; the disc is ball-driven, not motorized. Both switches are documented projections onto the disc's own center.
The manual's "Genie Double Target Assembly" (TOC 2-24) is a spring-loaded rocking figure struck by the ball at two collision zones (GenieTrig, GenieTrig1; a third object GenieTrig2 exists in the retained table but has no script handler anywhere and is inert legacy geometry). UpdateGenie integrates a bounce/decay physics model on the figure's rock angle and asserts public switch 42 (Genie Target, printed as the SW-1A-207/SW-1A-208 double target read as one address) whenever that angle exceeds 4.5 degrees -- there is no discrete trigger-hit event for the switch itself, so it is a documented projection onto the figure (GenieP/GenieP1). The separate Genie Standup Target (switch 23, HitTarget sw23) is a distinct, single, ordinary standup target elsewhere on the playfield and must not be conflated with the double target.
Two slingshots (coils 10/11, score switches 51/52) and three A-9415-2 jet bumpers (coils 12/13/14, skirt switches 53/54/55) are standard WPC devices; the retained script's handlers pulse the matching matrix addresses and fire the matching coils in the same event. Note the non-alphabetic table-object-to-address mapping the script itself establishes: Bumper1 is the Left jet (53), Bumper2 is the Middle jet (55), and Bumper3 is the Right jet (54) -- do not assume ordinal object names follow left-to-right or the printed Left/Right/Middle order.
Switch 46 (Mini Standups) is printed with a quantity of 3 (A-18017-6), but the retained table models only two target objects (sw46, sw46b) sharing the address; the third physical target has no distinct evidenced coordinate in this table and is disclosed as a known table-fidelity gap rather than silently dropped or fabricated. Switch 61 (Left Standups) and 62 (Right Standups) are each three-target banks (A-20846-9 top, A-20499-9 middle/bottom) and the retained table models all three positions per bank with real, distinct coordinates. Switches 63/64/65 (Top/Middle/Bottom Skill Shot) and 48/58 (Right/Left Captive Ball) are ordinary passive targets with no drive coil.
Two FL-11629 flippers on Fliptronic circuits 111-114 (lower right/left, EOS then button-opto). There are no upper flippers: positions 115-118 are printed Not Used on the switch-locations parts list, and unlike Monster Bash none of them is repurposed as a switch for another device (the repurposing on this game happens entirely on the solenoid side, at printed circuits 33-36). WPC-95 reads the entire eight-position Fliptronic column through WPC_FLIPPERSW95 with a blanket hardware inversion applied regardless of fitment or physical construction (leaf vs. opto), so the public state of every one of 111-118 is already normalized.
All 64 lamp-matrix addresses are populated (no "Not Used" lamp position on this game). Address 28 (Outlane Special) is the only address the manual marks with an explicit bulb-count "(2)", and the retained table binds two genuinely separate Light objects on opposite sides of the playfield (l28 right outlane, l28a left outlane, 761 raw units apart) -- both are real, distinct placements. Every other address has a single co-located "LightNN"/f1/f16-style brightness-doubling Light object within 38 raw units (well under 4% of playfield width) of its primary lNN object; these are documented render doubles and excluded from placement, matching the manual's single-bulb parts entries. Address 88 (Start Button) has a table object (Light.l88) at Apron-surface coordinates, but it carries the unbound-default timer_interval (100) and is not a member of the InsertLights collection the runtime lamp update binds (Sub InitLights(InsertLights)), so it is provably inert -- corroborating the cabinet classification rather than contradicting it.
Solenoids 16 and 17 (Left Eject Flasher, Inlane Flasher) both print two playfield bulbs (A-17983 (2)), but the retained table models only one Light object per address; one placement is recorded and the quantity gap is disclosed rather than fabricating a second coordinate. Solenoids 25, 26, and 27 each print one playfield bulb plus one backbox "Insert Flasher" companion; only the playfield bulb receives a coordinate.
General illumination carries the definition's one unresolved conflict. The manual's own wiring table (printed 2-40) documents public GI addresses 0-2 (printed Strings 1-3) as backbox insert-panel only (#44 bulbs, J106 connectors, no Playfield column entry) and addresses 3-4 (printed Strings 4-5) as the genuine playfield strings (#555 bulbs, J105 connectors, string 5 also feeding a cabinet connection via J104). The retained script's Sub UpdateGI(no, step) disagrees: it implements only Case 2 (public address 2, the manual's backbox-only String 3), binding it to a large playfield-wide dimming effect (globalGI) applied across dozens of playfield textures and materials, while addresses 0, 1, 3, and 4 fall through with no case at all and produce zero visual effect. This is recorded as conflict.gi-string-3-playfield-binding and left unresolved: the manual's physical wiring controls this device's spatial classification (GI address 2 stays a backbox not_applicable device), and GI addresses 3/4 -- the manual's real playfield strings -- have no VPX object to validate a placement from, so their spatial key is omitted entirely rather than assigned a fabricated coordinate. Resolving this needs a LibPinMAME gameplay-harness trace of a legal totan_14 ROM observing which GI address the ROM actually varies during attract-mode playfield dimming, cross-checked against a photograph or continuity trace of the physical J105/J106 harness.
pinmame.wpc-95 controller profile unchanged; do not create a new profile for this game.Every driver that resolves to this physical machine.
| ROM set | Description | Year | Parent | Hardware |
|---|---|---|---|---|
| totan_15c | Tales of the Arabian Nights (1.5C Competition MOD / S1.1) Community "Competition MOD" 1.5C ruleset ROM (2016) built on the 1.4/S1.1 codebase; it runs on the same documented physical hardware and controller addresses as the production driver, changing only rules/scoring, so it remains a driver variant of the physical machine rather than a distinct game. | 2016 | totan_14 | compatible |
| totan_14 | Tales of the Arabian Nights (1.4 / S1.1) Williams production 1.4 game ROM shipped with the physical machine. This is the driver the retained known-working table binds to (cGameName = "totan_14"). | 1996 | — | identical |
| totan_13 | Tales of the Arabian Nights (1.3 / S1.0) Williams 1.3 game ROM; a later production firmware revision of the same physical machine with no controller-address or playfield change. | 1996 | totan_14 | identical |
| totan_12 | Tales of the Arabian Nights (1.2 / S1.0) Williams 1.2 game ROM; an earlier production firmware revision of the same physical machine with no controller-address or playfield change. | 1996 | totan_14 | identical |
| totan_04 | Tales of the Arabian Nights (0.4 Prototype / S1.0) Williams 0.4 prototype game ROM for the same physical Tales of the Arabian Nights machine; the switch matrix, lamp matrix, solenoid/flasher table, and playfield hardware are unchanged. | 1996 | totan_14 | identical |
Parent set: totan_14 — clones share this definition unless a hardware difference is noted.
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.4ec52ff0ac13
Pinned catalog driver records for the totan_* clone tree
pinmame.core.4ec52ff0ac13
src/wpc/sims/wpc/prelim/totan.c totanGameData GEN_WPC95 with wpc_dispDMD, the inverted-switch mask {0x00,0x00,0x00,0x7f,0x00,...}, FLIP_SW(FLIP_L|FLIP_U)|FLIP_SOL(FLIP_L), hw.swCol=hw.lampCol=hw.custSol=0, swStart/swTilt/swSlamTilt/swCoinDoor comSw defines, and init_totan's wpc_set_fastflip_addr(0x7b); src/wpc/core.h CORE_FIRSTUFLIPSOL=33/CORE_FIRSTLFLIPSOL=45/CORE_FIRSTCUSTSOL=51/CORE_FLIPPERSWCOL=11/CORE_CUSTSWCOL=CORE_STDSWCOLS=12; src/wpc/core.c core_getSol WPC95 33-36 generic-bit path (no FLIP_SOL(FLIP_UR)/FLIP_SOL(FLIP_UL) declared) and 37-44 LPDC 37..40/41..44 duplication (unused here, custSol=0); src/wpc/wpc.c WPC_FLIPPERSW95 blanket column inversion (always applied on GEN_WPC95 regardless of FLIP_L/FLIP_U); src/wpc/wpc.h WPC_swF1..WPC_swF8; src/libpinmame/libpinmame.h PINMAME_HARDWARE_GEN_WPC95=0x80
controller-profile.pinmame-wpc-95
WPC-95 public switch, DIP, solenoid, lamp, and five-GI address rules with the Fliptronic and LPDC mirror notes
manual.williams.tales-of-the-arabian-nights.1996
160-page OCR'd scan of the Williams Tales of the Arabian Nights operations manual (Internet Archive item Williams_Tales_of_the_Arabian_Nights_Operations_Manual). Printed pages 2-36 through 2-42 carry the lamp/switch/solenoid location parts lists and their matrix and solenoid/flasher wiring tables; page 1 carries the DIP switch country chart; Section 3 (printed 3-1 onward) carries Game Wiring and Schematics.
manual-support.williams.tales-of-the-arabian-nights.1996
Retained human transcription of every rendered manual table used by this definition, together with the rendered PNG page cache under external:pinmame-manuals/rendered/williams.tales-of-the-arabian-nights.1996/. The retained PDF carries a genuine OCR text layer, but pdftotext -layout badly garbles the multi-column tables, so every table was re-verified visually against the 300 dpi rendered pages; this transcription is the source of record.
vpx-table.totan-jpsalas-flupper-1-0
Retained known-working recreation of the physical machine by JPSalas (2015) with later work by flupper and rothbauerw (2019), released August 2019, based on 944 extracted files (no VPW authorship). Exact playfield bounds are left=0 top=0 right=952 bottom=2164; normalized coordinates are x/952 and y/2164 -- note the y divisor is 2164, not the 2162 several other curated WPC games use. Geometry authority only for named table objects; this is a smaller, older table than the VPW mods used for recently curated games, and its object set does not support a validated placement for every device (see GI addresses 3 and 4).
vpx-script.totan-jpsalas-flupper-1-0
Retained embedded script (97,833 bytes). Runtime and mechanism-causality authority: Const cGameName = "totan_14", Const UseSolenoids = 2 (fast flips), Const UseLamps = 0, the SolCallback/SolModCallback table for solenoids 1-28 and 34 plus core.vbs sLRFlipper/sLLFlipper, the Controller.Switch and vpmTimer.PulseSw switch semantics for the trough/cage/vanish/lock/Genie/Spinning-Lamp-Unit state machines, and Sub UpdateGI mapping only public GI address 2 to a playfield-wide dimming effect (GI addresses 0, 1, 3, and 4 have no case and thus no visual effect in this table).
vpx-extraction.totan-jpsalas-flupper-1-0
Canonical manifest covering every sorted relative POSIX path, byte size, and SHA-256 under extracted-vpxtool; manifest SHA-256 761846f3369203502a9083c19e46a0da046893a46df43abc734a53c61b19a04d; 944 files, 128702095 bytes, produced with vpxtool git:v0.33.3 from the retained table. Bounds are left=0 top=0 right=952 bottom=2164.
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.