Outhole feeder
mechanism.outhole
Drain_Hit adds a drained ball to the retained BallStack. Output 31 is its SolIn path, moving the ball from the manual's outhole position into the three-ball trough.
2 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.
117 placements · 5 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 playfield19 virtual, 17 unused, 12 internal nonvisual, 10 cabinet or service, 1 dip switch — 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.
Sequential addresses, grouped in columns of eight.
Outside the matrix-7, -6 — dedicated, diagnostic or flipper-column addresses. See the table below.
| # | Name | Device ID | Role | Wiring | Evidence |
|---|---|---|---|---|---|
| -7 | Black Button / Advance | switch.diagnostic-7 | service.diagnostic | validated | |
| -6 | Green Button / Up-Down | switch.diagnostic-6 | service.diagnostic | validated | |
| 1 | Plumb Tilt | switch.matrix-1 | cabinet.tilt | GRN-BRN WHT-BRN CPU Board | validated |
| 2 | Unused Switch 2 | switch.matrix-2 | GRN-BRN WHT-RED CPU Board | validated | |
| 3 | Credit Button | switch.matrix-3 | cabinet.start | GRN-BRN WHT-ORN CPU Board | validated |
| 4 | Right Coin | switch.matrix-4 | cabinet.coin | GRN-BRN WHT-YEL CPU Board | validated |
| 5 | Center Coin | switch.matrix-5 | cabinet.coin | GRN-BRN WHT-GRN CPU Board | validated |
| 6 | Left Coin | switch.matrix-6 | cabinet.coin | GRN-BRN WHT-BLU CPU Board | validated |
| 7 | Slam Tilt | switch.matrix-7 | cabinet.slam-tilt | GRN-BRN WHT-VIO CPU Board | validated |
| 8 | Unused Switch 8 | switch.matrix-8 | GRN-BRN WHT-GRY CPU Board | validated | |
| 9 | Unused Switch 9 | switch.matrix-9 | GRN-RED WHT-BRN CPU Board | validated | |
| 10 | Outhole | switch.matrix-10 | outhole | GRN-RED WHT-RED CPU Board | validated |
| 11 | Trough #1 | switch.matrix-11 | trough.position-1 | GRN-RED WHT-ORN CPU Board | validated |
| 12 | Trough #2 | switch.matrix-12 | trough.position-2 | GRN-RED WHT-YEL CPU Board | validated |
| 13 | Trough #3 | switch.matrix-13 | trough.position-3 | GRN-RED WHT-GRN CPU Board | validated |
| 14 | Shooter Lane | switch.matrix-14 | shooter-lane | GRN-RED WHT-BLU CPU Board | validated |
| 15 | Left Flipper EOS | switch.matrix-15 | flipper.left.eos | GRN-RED WHT-VIO CPU Board | conflicted |
| 16 | Right Flipper EOS | switch.matrix-16 | flipper.right.eos | GRN-RED WHT-GRY CPU Board | conflicted |
| 17 | Laser Kick | switch.matrix-17 | laser-kick | GRN-ORN WHT-BRN CPU Board | validated |
| 18 | Left Return | switch.matrix-18 | GRN-ORN WHT-RED CPU Board | validated | |
| 19 | Unused Switch 19 | switch.matrix-19 | GRN-ORN WHT-ORN CPU Board | validated | |
| 20 | Left Green Target | switch.matrix-20 | GRN-ORN WHT-YEL CPU Board | validated | |
| 21 | Center Green Target | switch.matrix-21 | GRN-ORN WHT-GRN CPU Board | validated | |
| 22 | Right Green Target | switch.matrix-22 | GRN-ORN WHT-BLU CPU Board | validated | |
| 23 | Bottom Left Star Rollover | switch.matrix-23 | GRN-ORN WHT-VIO CPU Board | conflicted | |
| 24 | Spots Laser Kick Target | switch.matrix-24 | GRN-ORN WHT-GRY CPU Board | validated | |
| 25 | Top Left Spinner | switch.matrix-25 | spinner.left | GRN-YEL WHT-BRN CPU Board | validated |
| 26 | "S" Lane | switch.matrix-26 | GRN-YEL WHT-RED CPU Board | validated | |
| 27 | "U" Lane | switch.matrix-27 | GRN-YEL WHT-ORN CPU Board | validated | |
| 28 | "B" Lane | switch.matrix-28 | GRN-YEL WHT-YEL CPU Board | validated | |
| 29 | Left Drop Target | switch.matrix-29 | drop-bank.position-1 | GRN-YEL WHT-GRN CPU Board | validated |
| 30 | Center Drop Target | switch.matrix-30 | drop-bank.position-2 | GRN-YEL WHT-BLU CPU Board | validated |
| 31 | Right Drop Target | switch.matrix-31 | drop-bank.position-3 | GRN-YEL WHT-VIO CPU Board | validated |
| 32 | Right Spinner | switch.matrix-32 | spinner.right | GRN-YEL WHT-GRY CPU Board | validated |
| 33 | Left Yellow Target | switch.matrix-33 | GRN-BLK WHT-BRN CPU Board | validated | |
| 34 | Center Yellow Target | switch.matrix-34 | GRN-BLK WHT-RED CPU Board | validated | |
| 35 | Right Yellow Target | switch.matrix-35 | GRN-BLK WHT-ORN CPU Board | validated | |
| 36 | Right Star Rollover | switch.matrix-36 | GRN-BLK WHT-YEL CPU Board | conflicted | |
| 37 | Left 50 Point Switch | switch.matrix-37 | GRN-BLK WHT-GRN CPU Board | validated | |
| 38 | Left Blue Target | switch.matrix-38 | GRN-BLK WHT-BLU CPU Board | validated | |
| 39 | Center Blue Target | switch.matrix-39 | GRN-BLK WHT-VIO CPU Board | validated | |
| 40 | Right Blue Target | switch.matrix-40 | GRN-BLK WHT-GRY CPU Board | validated | |
| 41 | Left Kicker #1 | switch.matrix-41 | left-lock.position-2 | GRN-BLU WHT-BRN CPU Board | validated |
| 42 | Left Kicker #2 | switch.matrix-42 | left-lock.position-1 | GRN-BLU WHT-RED CPU Board | validated |
| 43 | Vertical Up Kicker | switch.matrix-43 | vertical-up-kicker | GRN-BLU WHT-ORN CPU Board | validated |
| 44 | Center Kicker #1 | switch.matrix-44 | center-lock.position-2 | GRN-BLU WHT-YEL CPU Board | validated |
| 45 | Center Kicker #2 | switch.matrix-45 | center-lock.position-1 | GRN-BLU WHT-GRN CPU Board | validated |
| 46 | Ramp | switch.matrix-46 | GRN-BLU WHT-BLU CPU Board | validated | |
| 47 | Unused Switch 47 | switch.matrix-47 | GRN-BLU WHT-VIO CPU Board | validated | |
| 48 | Unused Switch 48 | switch.matrix-48 | GRN-BLU WHT-GRY CPU Board | validated | |
| 49 | Left Thumper Bumper | switch.matrix-49 | pop-bumper.left | GRN-VIO WHT-BRN CPU Board | validated |
| 50 | Right Thumper Bumper | switch.matrix-50 | pop-bumper.right | GRN-VIO WHT-RED CPU Board | validated |
| 51 | Center Thumper Bumper | switch.matrix-51 | pop-bumper.center | GRN-VIO WHT-ORN CPU Board | validated |
| 52 | Left Slingshot | switch.matrix-52 | slingshot.left | GRN-VIO WHT-YEL CPU Board | validated |
| 53 | Right Slingshot | switch.matrix-53 | slingshot.right | GRN-VIO WHT-GRN CPU Board | validated |
| 54 | Right Outlane | switch.matrix-54 | GRN-VIO WHT-BLU CPU Board | validated | |
| 55 | Right Return | switch.matrix-55 | GRN-VIO WHT-VIO CPU Board | validated | |
| 56 | Right 50 Point Switch | switch.matrix-56 | GRN-VIO WHT-GRY CPU Board | validated | |
| 57 | Unused Switch 57 | switch.matrix-57 | GRN-GRY WHT-BRN CPU Board | validated | |
| 58 | Unused Switch 58 | switch.matrix-58 | GRN-GRY WHT-RED CPU Board | validated | |
| 59 | Unused Switch 59 | switch.matrix-59 | GRN-GRY WHT-ORN CPU Board | validated | |
| 60 | Unused Switch 60 | switch.matrix-60 | GRN-GRY WHT-YEL CPU Board | validated | |
| 61 | Unused Switch 61 | switch.matrix-61 | GRN-GRY WHT-GRN CPU Board | validated | |
| 62 | Unused Switch 62 | switch.matrix-62 | GRN-GRY WHT-BLU CPU Board | validated | |
| 63 | Unused Switch 63 | switch.matrix-63 | GRN-GRY WHT-VIO CPU Board | validated | |
| 64 | Unused Switch 64 | switch.matrix-64 | GRN-GRY WHT-GRY CPU Board | validated |
Everything the ROM can energise, grouped the way a table author builds it.
| # | Name | Device ID | Kind | Wiring | Evidence |
|---|---|---|---|---|---|
| 10 | Left/Right Coil Relay | coil.driver-10 | Relay | Q29 CPU Board / PPB | validated |
| 12 | Unused Solenoid 12 | coil.driver-12 | Coil | Q27 CPU Board / PPB | validated |
| 13 | Unused Solenoid 13 | coil.driver-13 | Coil | Q26 CPU Board / PPB | validated |
| 16 | Trough | coil.driver-16 | Coil | Q23 CPU Board / PPB | validated |
| 17 | Center Thumper Bumper | coil.driver-17 | Coil | Q8 CPU Board / PPB | conflicted |
| 18 | Left Slingshot | coil.driver-18 | Coil | Q10 CPU Board / PPB | validated |
| 19 | Left Thumper Bumper | coil.driver-19 | Coil | Q11 CPU Board / PPB | validated |
| 20 | Unused SP6 Driver | coil.driver-20 | Coil | Q13 CPU Board / PPB | validated |
| 21 | Right Slingshot | coil.driver-21 | Coil | Q12 CPU Board / PPB | validated |
| 22 | Right Thumper Bumper | coil.driver-22 | Coil | Q9 CPU Board / PPB | conflicted |
| 25 | Laser Kicker | coil.driver-25 | Coil | Q46 CPU Board / PPB | conflicted |
| 26 | Left Kickback | coil.driver-26 | Coil | Q45 CPU Board / PPB | conflicted |
| 27 | Vertical Up Kicker | coil.driver-27 | Coil | Q44 CPU Board / PPB | conflicted |
| 28 | Center Kickback | coil.driver-28 | Coil | Q43 CPU Board / PPB | conflicted |
| 29 | 3-Bank Drop Target Reset | coil.driver-29 | Coil | Q42 CPU Board / PPB | conflicted |
| 30 | Knocker | coil.driver-30 | Coil | Q41 CPU Board / PPB | conflicted |
| 31 | Outhole | coil.driver-31 | Coil | Q40 CPU Board / PPB | conflicted |
| 32 | Sinking Ship | coil.driver-32 | Coil | Q39 CPU Board / PPB | conflicted |
| # | Name | Device ID | Wiring | Evidence |
|---|---|---|---|---|
| 1 | Destroyer Hotdog | coil.driver-1 | Q46 CPU Board / PPB | conflicted |
| 2 | Release Torpedo Hotdog | coil.driver-2 | Q45 CPU Board / PPB | conflicted |
| 3 | Flagship Hotdog | coil.driver-3 | Q44 CPU Board / PPB | conflicted |
| 4 | Aircraft Carrier Hotdog | coil.driver-4 | Q43 CPU Board / PPB | conflicted |
| 5 | Special Hotdog | coil.driver-5 | Q42 CPU Board / PPB | conflicted |
| 6 | Cruiser Hotdog | coil.driver-6 | Q41 CPU Board / PPB | conflicted |
| 7 | Scope | coil.driver-7 | Q40 CPU Board / PPB | conflicted |
| 8 | Insert Top | coil.driver-8 | Q39 CPU Board / PPB | conflicted |
| 9 | Left Pair | coil.driver-9 | Q30 CPU Board / PPB | validated |
| 14 | Center Pair | coil.driver-14 | Q25 CPU Board / PPB | validated |
| 15 | Right Pair | coil.driver-15 | Q24 CPU Board / PPB | validated |
Sequential addresses, grouped in columns of eight.
| # | Name | Device ID | Wiring | Evidence |
|---|---|---|---|---|
| 1 | Lockball :2 (2) | lamp.matrix-1 | CPU Board | candidate |
| 2 | Spot Laser Kick | lamp.matrix-2 | CPU Board | candidate |
| 3 | Destroy Fleet 100K | lamp.matrix-3 | CPU Board | candidate |
| 4 | Destroy Fleet 25K Green | lamp.matrix-4 | CPU Board | candidate |
| 5 | Destroy Fleet 25K Blue | lamp.matrix-5 | CPU Board | candidate |
| 6 | Destroy Fleet 25K Yellow | lamp.matrix-6 | CPU Board | candidate |
| 7 | Top Left Playfield 2X | lamp.matrix-7 | CPU Board | candidate |
| 8 | Release Torpedoes Hotdog (2) | lamp.matrix-8 | CPU Board | candidate |
| 9 | "S" Lane | lamp.matrix-9 | CPU Board | candidate |
| 10 | "U" Lane | lamp.matrix-10 | CPU Board | candidate |
| 11 | "B" Lane | lamp.matrix-11 | CPU Board | candidate |
| 12 | Extra Ball Triangle | lamp.matrix-12 | CPU Board | candidate |
| 13 | Flagship 25K Clear | lamp.matrix-13 | CPU Board | candidate |
| 14 | Flagship 50K Yellow | lamp.matrix-14 | CPU Board | candidate |
| 15 | Flagship 100K Orange | lamp.matrix-15 | CPU Board | candidate |
| 16 | Insert 2 Torpedo | lamp.matrix-16 | CPU Board | candidate |
| 17 | Top Right Playfield 2X | lamp.matrix-17 | CPU Board | candidate |
| 18 | 5K When Lit | lamp.matrix-18 | CPU Board | candidate |
| 19 | Yellow Arrow :1 | lamp.matrix-19 | CPU Board | candidate |
| 20 | Yellow Arrow :2 | lamp.matrix-20 | CPU Board | candidate |
| 21 | Yellow Arrow :3 | lamp.matrix-21 | CPU Board | candidate |
| 22 | Aircraft Carrier Hotdog | lamp.matrix-22 | CPU Board | candidate |
| 23 | Lockball :1 (2) | lamp.matrix-23 | CPU Board | candidate |
| 24 | Insert 1 Torpedo (2) | lamp.matrix-24 | CPU Board | conflicted |
| 25 | Ramp 20K Clear | lamp.matrix-25 | CPU Board | candidate |
| 26 | Ramp 30K Yellow | lamp.matrix-26 | CPU Board | candidate |
| 27 | Ramp 40K Green | lamp.matrix-27 | CPU Board | candidate |
| 28 | Ramp Hold Bonus Orange | lamp.matrix-28 | CPU Board | candidate |
| 29 | Ramp Extra Ball Amber | lamp.matrix-29 | CPU Board | candidate |
| 30 | Ramp Hotdog Special | lamp.matrix-30 | CPU Board | candidate |
| 31 | Periscope Left (2) | lamp.matrix-31 | CPU Board | candidate |
| 32 | Periscope Right (2) | lamp.matrix-32 | CPU Board | candidate |
| 33 | Green Arrow :1 | lamp.matrix-33 | CPU Board | candidate |
| 34 | Green Arrow :2 | lamp.matrix-34 | CPU Board | candidate |
| 35 | Green Arrow :3 | lamp.matrix-35 | CPU Board | candidate |
| 36 | Destroyer Hotdog | lamp.matrix-36 | CPU Board | candidate |
| 37 | Blue Arrow :1 | lamp.matrix-37 | CPU Board | candidate |
| 38 | Blue Arrow :2 | lamp.matrix-38 | CPU Board | candidate |
| 39 | Blue Arrow :3 | lamp.matrix-39 | CPU Board | candidate |
| 40 | Cruiser Hotdog | lamp.matrix-40 | CPU Board | candidate |
| 41 | Shield Playfield 2X | lamp.matrix-41 | CPU Board | candidate |
| 42 | Blue 10K | lamp.matrix-42 | CPU Board | candidate |
| 43 | Green 10K | lamp.matrix-43 | CPU Board | candidate |
| 44 | Yellow 10K | lamp.matrix-44 | CPU Board | candidate |
| 45 | Blue 20K | lamp.matrix-45 | CPU Board | candidate |
| 46 | Green 20K | lamp.matrix-46 | CPU Board | candidate |
| 47 | Yellow 20K | lamp.matrix-47 | CPU Board | candidate |
| 48 | Right Return | lamp.matrix-48 | CPU Board | candidate |
| 49 | Laser Kick | lamp.matrix-49 | CPU Board | candidate |
| 50 | Green 30K | lamp.matrix-50 | CPU Board | candidate |
| 51 | Yellow 30K | lamp.matrix-51 | CPU Board | candidate |
| 52 | 2X | lamp.matrix-52 | CPU Board | candidate |
| 53 | 3X | lamp.matrix-53 | CPU Board | candidate |
| 54 | 5X | lamp.matrix-54 | CPU Board | candidate |
| 55 | Fire Again | lamp.matrix-55 | CPU Board | candidate |
| 56 | Right Outlane | lamp.matrix-56 | CPU Board | candidate |
| 57 | Jackpot 100K Shield | lamp.matrix-57 | CPU Board | candidate |
| 58 | Blue 40K | lamp.matrix-58 | CPU Board | candidate |
| 59 | Green 40K | lamp.matrix-59 | CPU Board | candidate |
| 60 | Yellow 40K | lamp.matrix-60 | CPU Board | candidate |
| 61 | Blue 30K | lamp.matrix-61 | CPU Board | candidate |
| 62 | Left Special | lamp.matrix-62 | CPU Board | candidate |
| 63 | Left Return | lamp.matrix-63 | CPU Board | candidate |
| 64 | Release Balls | lamp.matrix-64 | CPU Board | candidate |
| # | Name | Device ID | Role | Wiring | Evidence |
|---|---|---|---|---|---|
| 11 | General Illumination Relay | coil.driver-11 | playfield.general-illumination | Q28 CPU Board / PPB | conflicted |
| # | Name | Device ID | Evidence |
|---|---|---|---|
| 24 | Unused Solenoid 24 | coil.driver-24 | validated |
| 33 | Inert Solenoid Address 33 | coil.driver-33 | validated |
| 34 | Inert Solenoid Address 34 | coil.driver-34 | validated |
| 35 | Inert Solenoid Address 35 | coil.driver-35 | validated |
| 36 | Inert Solenoid Address 36 | coil.driver-36 | validated |
| 37 | Inert Solenoid Address 37 | coil.driver-37 | validated |
| 38 | Inert Solenoid Address 38 | coil.driver-38 | validated |
| 39 | Inert Solenoid Address 39 | coil.driver-39 | validated |
| 40 | Inert Solenoid Address 40 | coil.driver-40 | validated |
| 41 | Inert Solenoid Address 41 | coil.driver-41 | validated |
| 42 | Inert Solenoid Address 42 | coil.driver-42 | validated |
| 43 | Inert Solenoid Address 43 | coil.driver-43 | validated |
| 44 | Inert Solenoid Address 44 | coil.driver-44 | validated |
| 45 | Synthetic Right Flipper Power | coil.driver-45 | conflicted |
| 46 | Synthetic Right Flipper Hold | coil.driver-46 | conflicted |
| 47 | Synthetic Left Flipper Power | coil.driver-47 | conflicted |
| 48 | Synthetic Left Flipper Hold | coil.driver-48 | conflicted |
| 49 | Simulation Ball Shooter | coil.driver-49 | validated |
| 50 | Reserved Solenoid 50 | coil.driver-50 | validated |
| # | Name | Device ID | Evidence |
|---|---|---|---|
| 0 | Jumper W7 (function undocumented) Dip | dip.jumper-w7 | observed |
Logical assemblies with their actuators, sensors and observed behaviour. Click a chip to jump to the address it refers to.
mechanism.outhole
Drain_Hit adds a drained ball to the retained BallStack. Output 31 is its SolIn path, moving the ball from the manual's outhole position into the three-ball trough.
mechanism.ball-trough
The retained BallStack initializes three balls across switches 13, 12 and 11. Output 16 invokes SolOut and kicks through BallRelease toward the shooter lane.
mechanism.laser-kick
The retained callback fires and retracts Plunger1 on output 25; SW17 reports the Laser Kick contact. The manual independently names 01R Laser Kicker, but the script does not expose pulse timing.
mechanism.left-lock
LLKICK destroys the incoming table ball and adds it to a BallStack whose two staged positions are switches 42 then 41. Output 26 invokes SolOut through Kicker2.
mechanism.vertical-up-kicker
VUK_Hit starts a timer that asserts switch 43. Output 27 recreates and raises the ball, then kicks it at 130 degrees and clears switch 43. The manual assembly supplies the coil/plunger/spring construction.
mechanism.center-lock
RLKICK adds the ball to a two-position BallStack at switches 45 then 44. Output 28 invokes SolOut through Kicker1 with KickBalls=2.
mechanism.three-bank
Each target reports its own switch. Output 29 starts the retained reset animation and calls DropSol_On to return all three targets.
mechanism.ship-tilt
Output 32 starts SinkShip_Timer, which rocks Ship through a fourteen-step RotY sequence and returns it to zero. The manual's 500-5084-00 assembly shows the 30-800 coil pulling a linked, spring-returned ship mounting plate carrying the periscope lens.
mechanism.left-flipper
The retained left callback moves one lower-left flipper. The manual prints switch 15 as a physical EOS contact, while PinMAME and the table feed cabinet-button state there.
mechanism.right-flippers
One retained right callback moves both right flippers. The manual prints two right flipper coils sharing the cabinet-button circuit and one Right EOS matrix contact; no separate upper-right EOS address is printed.
mechanism.left-spinner
A passive spinner pulses switch 25; no CPU actuator is present.
mechanism.right-spinner
A passive spinner pulses switch 32; no CPU actuator is present.
mechanism.left-pop-bumper
The retained Bumper3 hit handler pulses switch 49. The manual's location plan and SP4 wiring identify the left thumper circuit; Data East PIA SS4 is public solenoid 19. The missing VPX SolCallback leaves its actuator placement unresolved, not its physical circuit.
mechanism.right-pop-bumper
The retained Bumper1 hit handler pulses switch 50. The manual's location plan and SP2 wiring identify the right thumper circuit; Data East PIA SS2 is public solenoid 22. The manual's SP1/SP2 description conflict remains explicit and placement remains unresolved.
mechanism.center-pop-bumper
The retained Bumper2 hit handler pulses switch 51. The manual's location plan and SP1 wiring identify the center thumper circuit; Data East PIA SS1 is public solenoid 17. The manual's SP1/SP2 description conflict remains explicit and placement remains unresolved.
mechanism.left-slingshot
The retained LeftSlingShot event pulses switch 52. The manual prints SP3 construction and Data East PIA SS3 is public solenoid 18; the literal manual cell `Left Slingsho` is normalized only for this device label. The missing VPX SolCallback leaves placement unresolved, not circuit topology.
mechanism.right-slingshot
The retained RightSlingShot event pulses switch 53. The manual prints SP5 construction and Data East PIA SS5 is public solenoid 21. The missing VPX SolCallback leaves placement unresolved, not circuit topology.
mechanism.manual-plunger
The cabinet parts illustration prints a ball-shooter assembly. The player-driven launch path crosses shooter-lane switch 14; no CPU shooter coil is claimed.
mechanism.fixed-ramp
The playfield parts illustration shows fixed ramp/wireform hardware. Switch 46 reports ramp traversal; the retained script contains no diverter or ramp motor.
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.
Pinned PinMAME groups exactly two 08/88 drivers under torp_e21: the Europe 2.1 parent and torp_a16 1.6 clone. Both use INITGAMES11(torp, GEN_DE, de_dispAlpha2, FLIP1516, SNDBRD_DE1S, 0, 0), so the ROM variants are physically identical. GEN_DE is 0x1000; custSol, swCol, lampCol and the sound-overlay field are zero. The machine-level inversion_applied_by_emulator flag is true because consumers receive normalized public states and must not invert them again. Independently, the initializer leaves the per-game wpc.invSw mask all zeroes and core.c copies it into coreGlobals.invSw. The canonical controller classification is the reviewed pinmame.dataeast profile, not Williams pinmame.system-11, so no controller-platform blocker remains.
de_dispAlpha2 contributes exactly four displays: two seven-character 16-segment rows beginning at 1 and 9 and two seven-character numeric rows beginning at 21 and 29. There are no credit/match or ball-in-play entries, so every display has a controlled cabinet/backbox not_applicable spatial record.
All 64 matrix addresses, Data East service switches -7/-6 and Jumper W7 at DIP 0 are enumerated. The manual's stars mark 1 and 3-7 as cabinet switches. Switches 15 and 16 are not starred: their cells literally print Left EOS and Right EOS, and the description list assigns both part 180-5026-00. They are physical end-of-stroke contacts, not cabinet buttons.
PinMAME's FLIP1516 expands to FLIP_SWNO(15,16). Shared core_updateSw writes left/right player-button bits into those matrix numbers and synthesizes public flipper power/hold outputs 45-48 because the game declares no CPU-controlled flipper solenoids. The retained script also writes cabinet-key state directly to Controller.Switch(15/16). That emulator/runtime meaning conflicts with the printed EOS construction and remains unresolved. The manual prints one lower-left, one lower-right and one upper-right flipper; the right cabinet circuit and retained callback move both right flippers together.
The known-working script has two additional input defects. SW23_Hit pulses 18, turning the Bottom Left Star Rollover into Left Return at runtime, and SW36_Hit pulses 26, turning the Right Star Rollover into the S lane. The manual's address semantics govern the physical records, while both executable defects remain first-class conflicts.
The manual's CPU Controlled Coil and Flash Lamp Connections page is the physical wiring authority. K1 at public 10 selects eight L/R pairs. Public 1-8 are the L bank: Destroyer, Release Torpedo, Flagship, Aircraft Carrier, Special and Cruiser hotdogs, Scope, and Insert Top. Their R partners are public 25-32: Laser Kicker, Left Kickback, Vertical Up Kicker, Center Kickback, 3-Bank Reset, Knocker, Outhole, and Sinking Ship. Public 9/14/15 are Left/Center/Right #89 pairs, 11 is the general-illumination relay, 12/13 are N.C., and 16 is the 23-840 trough coil. Public 17, 18, 19, 21 and 22 are the five fitted switch-triggered coils; public 20 is the unfitted SP6 slot; 23 is Game On; 24 is the reserved gap; 33-44 are inert for this GameData; 45-48 are synthetic flipper windings; 49/50 are simulator/reserved slots.
Torpedo Alley's own pinned s11.c block types address 9 as one #89 bulb, 11 as G.I., 14-15 as #89 bulbs, and public 25-32 as eight muxed #89 bulbs, with the comment K1 relay is solenoid #10. That makes the R mechanism bank look like lamps and leaves manual L flashers 1-8 at the default type. The source disagreement is preserved; it is not corrected by copying another Data East game's block.
The manual's Coil Test table and location plan say SP1 Center Thumper and SP2 Right Thumper, but the special-coil schematic prints SP2 Center and SP1 Right. The two agreeing manual sections supply the working labels and the swapped schematic text stays committed. The table's literal Left Slingsho cell is also retained in the excerpt and normalized only in the definition label. Crucially, the manual prints SP identities, not public addresses: pinned s11.c PIA comments identify handler indices 0-5 as SP6, SP5, SP2, SP3, SP1 and SP4; applying ssSolNo={3,4,5,1,0,2} derives public 17=SP1, 22=SP2, 18=SP3, 19=SP4, 21=SP5 and 20=SP6. Thus 20 is the unused special-driver state, not 22.
Output 11 has a separate retained-script defect. The script first assigns GIUpdate to 11, then later assigns Sol11BG to the same callback slot; the latter wins. S10, S11, S12, S13 and S23 are outside-playfield backglass proxies, so those callbacks do not relabel physical outputs 10-13/23. They do mean the retained table does not model physical GI 11 faithfully.
The table header is exactly Const cGameName="torp_e21",UseSolenoids=2,UseLamps=1,UseSync=0,UseGI=0. After whole-line comments are stripped, there is no Lampz.MassAssign, vpmMapLights, SetLamp, LampCallback, UpdateLamps or AllLamps. Instead, 63 active statements populate the shared VPM Lights(address) array for 1-23 and 25-64. With UseLamps=1, ChangedLamps consumption belongs to the shared VPM core loaded through DE.VBS, not to a loop in this table script.
The extraction contains exactly 64 Light objects named L1 through L64. Those exact names are a naming convention and remain coordinate candidates, never observed physical socket bindings. Active shared-array membership is a separate fact for 63 addresses. Lamp 24 has only a whole-line-commented assignment, so its L24 coordinate is name-only even though the manual fits Insert 1 Torpedo (2) and the extraction contains L24.
Exact table bounds are left=0 top=0 right=1000 bottom=2000; every placement uses x/1000 and y/2000. The resolver refuses any different bounds. Candidate output coordinates come only from active effect callbacks; backglass objects outside those bounds, native render helpers and unbound physical devices are excluded.
The retained script supplies causal topology. A drained ball enters switch 10/output 31, then occupies the three-ball trough at switches 13, 12 and 11; output 16 releases the front ball. The left two-position lock stages at 42/41 and ejects on 26. The center two-position lock stages at 45/44 and output 28 is configured to kick two balls. Switch 43/output 27 is a custom vertical-up-kicker sequence that raises, recreates and ejects a ball. Switches 29-31 form the three-drop bank reset by output 29. Output 25 fires the Laser Kick plunger object.
Output 32 drives the sinking-ship toy. The retained timer rocks the Ship primitive through fourteen angles and returns it to zero. Manual assembly 500-5084-00 provides the construction: a 30-800 coil, plunger/link, spring and coil bracket move a ship mounting plate carrying the periscope lens. Manual assembly 500-5067-00 similarly confirms the VUK's 23-800 coil, plunger, ball popper and return spring. These are real topology claims because script causality and construction evidence are combined.
The three pop bumpers and two slingshots have source-reconciled circuit topology: manual position/construction plus the Data East PIA map gives 49→19 (left thumper), 50→22 (right thumper), 51→17 (center thumper), 52→18 (left sling) and 53→21 (right sling). No executable SolCallback binds those outputs to table effect objects, so this does not create a physical placement claim. Passive spinners, the manual shooter and fixed ramp are recorded without invented actuators.
coverage.missing is exactly output_semantics, mechanism_behavior, polarity, recreation_notes, spatial_placement, and unresolved_conflicts. Output semantics need a PinMAME maintainer explanation or corrected torp_ typing plus a trace across both K1 states, GI 11 and lamp 24. Mechanism behavior remains conflicted where the printed EOS construction and runtime cabinet-button model disagree. Polarity needs a bench capture of cabinet buttons, EOS contacts at rest/end-of-stroke and public power/hold states. Recreation notes remain candidate while those source conflicts prevent a complete build specification. Spatial completion needs an original-machine socket/address and under-playfield actuator survey covering the playfield, insert board and backbox; the printed quantity of two for each 01L-08L flasher branch is retained, but the table exposes only one usable effect anchor for 01L-06L, two disjoint helper clusters rather than a physical center for 07L, and no active callback for 08L, so no unsupported bulb position is fabricated. Lamp addresses 1, 8, 16, 23, 24, 31 and 32 likewise retain a printed quantity of two while publishing only one candidate object coordinate. No hash-pinned Internet Archive resource or directly verifiable IPDB resource is retained, so the manual's GameEx source URL is recorded but archive/IPDB metadata is intentionally not asserted. The eight conflicts need corrected upstream evidence or independent traces that explicitly settle each disagreement. Until those exist, the record remains partial.
Every driver that resolves to this physical machine.
| ROM set | Description | Year | Parent | Hardware |
|---|---|---|---|---|
| torp_e21 | Torpedo Alley (2.1 Europe) Clone-tree parent and retained-table ROM. European 2.1 program ROMs; shared torpGameData. | 1988 | — | identical |
| torp_a16 | Torpedo Alley (1.6) US 1.6 program ROMs; same INITGAMES11 physical GameData, display layout and sound-board declaration as the parent. | 1988 | torp_e21 | identical |
Parent set: torp_e21 — 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
catalog/pinmame.json entries torp_e21 and torp_a16; src/wpc/driver.c dates both 08/88
pinmame.core.4ec52ff0ac13
src/wpc/degames.c INITGAMES11(torp, GEN_DE, de_dispAlpha2, FLIP1516, SNDBRD_DE1S, 0, 0), two ROM definitions and four-entry display array; the initializer leaves wpc.invSw zero-initialized and src/wpc/core.c lines 2455-2456 copy that zero mask into coreGlobals.invSw; src/wpc/s11.c lines 537-554 apply Data East ssSolNo={3,4,5,1,0,2}, lines 618-623 bind handler indices 0-5, and PIA comments at lines 714-715, 737-738, and 746-747 identify those handlers as SP6, SP5, SP2, SP3, SP1, and SP4; torp_ output typing, muxSol=10 and updsol supply the relay mapping; src/wpc/core.c/core.h provide FLIP_SWNO and public flipper outputs
manual.data-east.torpedo-alley.1988
68-page scan, 8,924,940 bytes; hashes.json sampled_characters=76035; retained source URL https://online.gameex.com/media/pinballx/all/addmedia/torpedo%20alley%20%28data%20east%201988%29/English%20Manual.pdf. OCR/text locates content; PDF pages 24-29, 34-38 and 66-67 were decided from 400/500 dpi renders.
vpx-table.torpedo-alley-hybrid-mod-1-1
vpxtool git:0561bb4; 1632 extracted gameitems; exact playfield bounds (0,0)-(1000,2000)
vpx-script.torpedo-alley-hybrid-mod-1-1
cGameName torp_e21; UseSolenoids=2, UseLamps=1, UseSync=0, UseGI=0; 63 active shared Lights() memberships after whole-line comment stripping; output, ball-stack, lock, VUK, drop-bank, ship and flipper causality; SW23/SW36 defects
vpx-extraction.torpedo-alley-hybrid-mod-1-1
2111 files; 156444993 bytes; algorithm: SHA-256 of the UTF-8 JSON object after removing manifest_sha256 and serializing with sorted keys, compact separators, and ensure_ascii=False.; canonical manifest SHA-256 6ba07f0ac3d1e9e2bb1e441dde4066d99033bf5e7b11b81337708b16d1afe92e
human-review.torpedo-alley-manual-renders
Contact sheet at 40 dpi; relevant pages freshly rendered with Poppler 25.12.0 at 400 dpi, with PDF pages 28-29 additionally checked at 500 dpi, on 2026-08-09. Tesseract located cells; rendered glyphs governed every mapping.
This definition still has 6 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.