Overview
Legacy evidence identifies this candidate as Williams (1988). The information below is preserved for recreation work but is not automatically treated as validated physical-machine fact.
Playfield devices
Switch, lamp/GI, and controlled-device candidates are in the adjacent machine definition. Source-specific implementation notes are retained below.
Custom mechanisms
No custom mechanism conclusion has been validated. Manuals, schematics, PinMAME source, and gameplay evidence still need to be checked.
Ball-state transitions
Ball paths, trough ordering, locks, kickouts, and causal transitions have not yet been normalized. Relevant source notes follow under Evidence notes.
Controller interactions
Controller callbacks and bindings are candidate evidence only until reconciled against PinMAME and physical documentation.
Service and setup information
Unknown; locate operator/service documentation.
Timing and tuning observations
Source timing values may describe a particular VPX implementation rather than physical hardware and require review.
Recreation guidance
Do not treat this partial definition as a complete authoring specification. Resolve every coverage requirement and conflict before promotion.
Evidence notes
games/taxi.json#/switches/0._note: vpmNudge.TiltSwitch = 1games/taxi.json#/switches/1._note: bsTrough.InitSw first positiongames/taxi.json#/switches/2._note: bsTrough.InitSw second positiongames/taxi.json#/switches/3._note: bsTrough.InitSw third positiongames/taxi.json#/switches/4._inferred_type: saucergames/taxi.json#/switches/4._note: bsTopHole.InitKicker TopHole,13 — ball enters via TopHole_Hitgames/taxi.json#/switches/5._note: Controller.Switch set via SW14_Hit/Unhitgames/taxi.json#/switches/6._note: Controller.Switch set via SW15_Hit/Unhitgames/taxi.json#/switches/7._note: Controller.Switch set via SW16_Hit/Unhitgames/taxi.json#/switches/8._inferred_type: bumpergames/taxi.json#/switches/8._note: Pulsed via vpmTimer.PulseSw 17games/taxi.json#/switches/9._inferred_type: bumpergames/taxi.json#/switches/9._note: Pulsed via vpmTimer.PulseSw 19games/taxi.json#/switches/10._inferred_type: bumpergames/taxi.json#/switches/10._note: Pulsed via vpmTimer.PulseSw 21games/taxi.json#/switches/11._note: Controller.Switch set via SW22_Hit/Unhitgames/taxi.json#/switches/12._note: Controller.Switch set via SW23_Hit/Unhitgames/taxi.json#/switches/13._inferred_type: standup_targetgames/taxi.json#/switches/13._note: Pulsed via vpmTimer.PulseSW 24games/taxi.json#/switches/14._inferred_type: standup_targetgames/taxi.json#/switches/14._note: Pulsed via vpmTimer.PulseSW 25games/taxi.json#/switches/15._inferred_type: standup_targetgames/taxi.json#/switches/15._note: Pulsed via vpmTimer.PulseSW 26games/taxi.json#/switches/16._inferred_type: drop_targetgames/taxi.json#/switches/16._note: CenterDTBank.InitDrop — first target in center bankgames/taxi.json#/switches/17._inferred_type: drop_targetgames/taxi.json#/switches/17._note: CenterDTBank.InitDrop — second target in center bankgames/taxi.json#/switches/18._inferred_type: drop_targetgames/taxi.json#/switches/18._note: CenterDTBank.InitDrop — third target in center bankgames/taxi.json#/switches/19._inferred_type: drop_targetgames/taxi.json#/switches/19._note: RightDTBank.InitDrop — first target in right bankgames/taxi.json#/switches/20._inferred_type: drop_targetgames/taxi.json#/switches/20._note: RightDTBank.InitDrop — second target in right bankgames/taxi.json#/switches/21._inferred_type: drop_targetgames/taxi.json#/switches/21._note: RightDTBank.InitDrop — third target in right bankgames/taxi.json#/switches/22._note: Controller.Switch set via SW33_Hit/Unhit. Has animated switch arm (Primitive_SwitchArm33)games/taxi.json#/switches/23._note: Controller.Switch set via SW34_Hit/Unhit. Has animated switch arm (Primitive_SwitchArm34)games/taxi.json#/switches/24._inferred_type: saucergames/taxi.json#/switches/24._note: bsCatapult.InitKicker CatapultLaunchKicker,35 — also checked via Controller.Switch(35) in SolCatapultgames/taxi.json#/switches/25._inferred_type: saucergames/taxi.json#/switches/25._note: bsRightHole.InitKicker RightHole,36games/taxi.json#/switches/26._note: Controller.Switch set via SW37_Hit/Unhitgames/taxi.json#/switches/27._note: Controller.Switch set via SW38_Hit/Unhitgames/taxi.json#/switches/28._note: Controller.Switch set via SW39_Hit/Unhitgames/taxi.json#/switches/29._note: Controller.Switch set via SW40_Hit/Unhitgames/taxi.json#/switches/30._inferred_type: saucergames/taxi.json#/switches/30._note: bsSpinoutKicker.InitKicker SpinoutKicker,43. SW43 handled via saucer (per comment in script)games/taxi.json#/switches/31._inferred_type: standup_targetgames/taxi.json#/switches/31._note: Pulsed via vpmTimer.PulseSW 44games/taxi.json#/coils/0._vbscript_callback: bsTrough.SolIngames/taxi.json#/coils/0._inferred_type: ball_managementgames/taxi.json#/coils/0._note: Moves ball from drain into troughgames/taxi.json#/coils/1._vbscript_callback: bsTrough.SolOutgames/taxi.json#/coils/1._inferred_type: ball_managementgames/taxi.json#/coils/1._note: Kicks ball from trough to shooter lanegames/taxi.json#/coils/2._vbscript_callback: SolCatapultgames/taxi.json#/coils/2._inferred_type: kickergames/taxi.json#/coils/2._note: Fires catapult mechanism. Checks Controller.Switch(35) and calls bsCatapult.ExitSol_Ongames/taxi.json#/coils/3._vbscript_callback: CenterDTBank.SolDropUpgames/taxi.json#/coils/3._inferred_type: drop_target_resetgames/taxi.json#/coils/3._note: Resets center drop targets DT27, DT28, DT29 (sw 27-29)games/taxi.json#/coils/4._vbscript_callback: bsTopHole.SolOutgames/taxi.json#/coils/4._inferred_type: kickergames/taxi.json#/coils/4._note: Ejects ball from top hole saucer (sw13)games/taxi.json#/coils/5._vbscript_callback: RightDTBank.SolDropUpgames/taxi.json#/coils/5._inferred_type: drop_target_resetgames/taxi.json#/coils/5._note: Resets right drop targets DT30, DT31, DT32 (sw 30-32)games/taxi.json#/coils/6._vbscript_callback: SolSpinoutKickergames/taxi.json#/coils/6._inferred_type: kickergames/taxi.json#/coils/6._note: Ejects ball from spinout kicker saucer (sw43)games/taxi.json#/coils/7._vbscript_callback: bsRightHole.SolOutgames/taxi.json#/coils/7._inferred_type: kickergames/taxi.json#/coils/7._note: Ejects ball from right hole saucer (sw36)games/taxi.json#/coils/8._vbscript_callback: TopGateLeft.open =games/taxi.json#/coils/8._inferred_type: gategames/taxi.json#/coils/8._note: Opens/closes top left gate directly via property assignmentgames/taxi.json#/coils/9._vbscript_callback: Sol10games/taxi.json#/coils/9._inferred_type: gi_relaygames/taxi.json#/coils/9._note: Controls GI inserts via SetLamp 99. Also ORed with passenger insert solenoids (25-29) for insert illuminationgames/taxi.json#/coils/10._vbscript_callback: Sol11games/taxi.json#/coils/10._inferred_type: gi_relaygames/taxi.json#/coils/10._note: Inverse logic — GI is OFF when solenoid is enabled. Controls playfield textures, bumper lamps, cabinet side panels via 4-step fadinggames/taxi.json#/coils/11._inferred_type: relaygames/taxi.json#/coils/11._note: Commented out in script — SolCallback(12) not assignedgames/taxi.json#/coils/12._vbscript_callback: vpmSolSound SoundFX("ringing_bell",DOFBell),games/taxi.json#/coils/12._inferred_type: soundgames/taxi.json#/coils/12._note: Plays ringing bell sound effectgames/taxi.json#/coils/13._vbscript_callback: SolKnockergames/taxi.json#/coils/13._inferred_type: knockergames/taxi.json#/coils/14._inferred_type: flashergames/taxi.json#/coils/14._note: Commented out SolCallback — handled in LampTimer. ORed with lamp 44 as LampState(44)games/taxi.json#/coils/15._vbscript_callback: SetLamp 116,games/taxi.json#/coils/15._inferred_type: flashergames/taxi.json#/coils/15._note: Handled in LampTimer via SetLamp. Also ORed with lamp 43 as LampState(43). VPX lamp object F16games/taxi.json#/coils/16._inferred_type: bumpergames/taxi.json#/coils/16._note: Commented out in script — bumper handled by VPX directlygames/taxi.json#/coils/17._inferred_type: slingshotgames/taxi.json#/coils/17._note: Commented out in script — slingshot handled by VPX directlygames/taxi.json#/coils/18._inferred_type: bumpergames/taxi.json#/coils/18._note: Commented out in script — bumper handled by VPX directlygames/taxi.json#/coils/19._inferred_type: slingshotgames/taxi.json#/coils/19._note: Commented out in script — slingshot handled by VPX directlygames/taxi.json#/coils/20._inferred_type: bumpergames/taxi.json#/coils/20._note: Commented out in script — bumper handled by VPX directlygames/taxi.json#/coils/21._vbscript_callback: SolGameOngames/taxi.json#/coils/21._inferred_type: game_ongames/taxi.json#/coils/21._note: Enables flippers and nudge. When disabled, flippers return to start positiongames/taxi.json#/coils/22._vbscript_callback: SetLamp 125,games/taxi.json#/coils/22._inferred_type: flashergames/taxi.json#/coils/22._note: Handled in LampTimer. ORed with lamp 25 and sol 10 (GI relay)games/taxi.json#/coils/23._vbscript_callback: SetLamp 126,games/taxi.json#/coils/23._inferred_type: flashergames/taxi.json#/coils/23._note: Handled in LampTimer. ORed with lamp 26 and sol 10 (GI relay)games/taxi.json#/coils/24._vbscript_callback: SetLamp 127,games/taxi.json#/coils/24._inferred_type: flashergames/taxi.json#/coils/24._note: Handled in LampTimer. ORed with lamp 27 and sol 10 (GI relay)games/taxi.json#/coils/25._vbscript_callback: SetLamp 128,games/taxi.json#/coils/25._inferred_type: flashergames/taxi.json#/coils/25._note: Handled in LampTimer. ORed with lamp 28 and sol 10 (GI relay)games/taxi.json#/coils/26._vbscript_callback: SetLamp 129,games/taxi.json#/coils/26._inferred_type: flashergames/taxi.json#/coils/26._note: Handled in LampTimer. ORed with lamp 29 and sol 10 (GI relay)games/taxi.json#/coils/27._vbscript_callback: SetLamp 130,games/taxi.json#/coils/27._inferred_type: flashergames/taxi.json#/coils/27._note: VPX flasher object F30games/taxi.json#/coils/28._vbscript_callback: SetLamp 131,games/taxi.json#/coils/28._inferred_type: flashergames/taxi.json#/coils/28._note: VPX flasher object F31games/taxi.json#/coils/29._vbscript_callback: SetLamp 132,games/taxi.json#/coils/29._inferred_type: flashergames/taxi.json#/coils/29._note: VPX flasher object F32games/taxi.json#/lamps/0._note: Backbox lamp (desktop mode). Also L1agames/taxi.json#/lamps/1._note: Backbox lamp (desktop mode). Also L2agames/taxi.json#/lamps/2._note: Backbox lamp (desktop mode). Also L3agames/taxi.json#/lamps/3._note: Backbox lamp (desktop mode). Also L4agames/taxi.json#/lamps/4._note: Backbox lamp (desktop mode). Also L5agames/taxi.json#/lamps/5._note: Desktop mode onlygames/taxi.json#/lamps/6._note: Desktop mode onlygames/taxi.json#/lamps/7._note: Desktop mode onlygames/taxi.json#/lamps/8._note: Also L9b, p9 primitivegames/taxi.json#/lamps/9._note: Also L10b, p10 primitivegames/taxi.json#/lamps/10._note: Also L11b, p11 primitivegames/taxi.json#/lamps/11._note: Also L12b, p12 primitivegames/taxi.json#/lamps/12._note: Also L13b, p13 primitivegames/taxi.json#/lamps/13._note: Also L14b, p14 primitivegames/taxi.json#/lamps/14._note: Also L15b, p15 primitivegames/taxi.json#/lamps/15._note: Also L16b, p16 primitivegames/taxi.json#/lamps/17._note: Also L18b, p18 primitivegames/taxi.json#/lamps/18._note: Also L19b, p19 primitivegames/taxi.json#/lamps/19._note: Also L20b, p20 primitivegames/taxi.json#/lamps/20._note: Also L21b, p21 primitivegames/taxi.json#/lamps/21._note: Also L22b, p22 primitivegames/taxi.json#/lamps/22._note: Also L23b, L23C, p23 primitivegames/taxi.json#/lamps/23._note: Also L24b, p24 primitivegames/taxi.json#/lamps/24._note: Also F25 flasher. Multi-state: ORed with sol 25 (Pinbot insert) and sol 10 (GI relay)games/taxi.json#/lamps/25._note: Also L26b, p26 primitive. Multi-state: ORed with sol 26 (Drac insert) and sol 10games/taxi.json#/lamps/26._note: Also L27b, p27 primitive. Multi-state: ORed with sol 27 (Lola insert) and sol 10games/taxi.json#/lamps/27._note: Also L28b, p28 primitive. Multi-state: ORed with sol 28 (Santa insert) and sol 10games/taxi.json#/lamps/28._note: Also L29b, p29 primitive. Multi-state: ORed with sol 29 (Gorby insert) and sol 10games/taxi.json#/lamps/29._note: Also L30b, p30 primitivegames/taxi.json#/lamps/30._note: Also L31b, p31 primitivegames/taxi.json#/lamps/31._note: Also L32b, L32c, p32 primitivegames/taxi.json#/lamps/32._note: Also L33b, p33 primitivegames/taxi.json#/lamps/33._note: Also L34b, p34 primitivegames/taxi.json#/lamps/34._note: Also L35b, p35 primitivegames/taxi.json#/lamps/35._note: Also L36b, p36 primitivegames/taxi.json#/lamps/36._note: Also L37b, p37 primitivegames/taxi.json#/lamps/37._note: Also L38b, p38 primitivegames/taxi.json#/lamps/38._note: Also L39b, p39 primitivegames/taxi.json#/lamps/39._note: Also L40b, p40 primitivegames/taxi.json#/lamps/40._note: Also L41b, p41 primitivegames/taxi.json#/lamps/41._note: Also L42b, p42 primitivegames/taxi.json#/lamps/42._note: Also L43b, p43 primitive. Multi-state: ORed with sol 16 (Joyride flasher)games/taxi.json#/lamps/43._note: Also L44b, p44 primitive. Multi-state: ORed with sol 15 (Jackpot flasher)games/taxi.json#/lamps/44._note: Also L45b, p45 primitivegames/taxi.json#/lamps/45._note: Also L46b, p46 primitivegames/taxi.json#/lamps/46._note: Also L47b, p47 primitivegames/taxi.json#/lamps/47._note: Also L48b, p48 primitivegames/taxi.json#/lamps/48._note: Desktop mode onlygames/taxi.json#/lamps/49._note: Desktop mode onlygames/taxi.json#/lamps/50._note: Desktop mode onlygames/taxi.json#/lamps/51._note: Desktop mode onlygames/taxi.json#/lamps/52._note: Desktop mode onlygames/taxi.json#/lamps/53._note: Desktop mode onlygames/taxi.json#/lamps/54._note: Desktop mode onlygames/taxi.json#/lamps/55._note: Desktop mode onlygames/taxi.json#/lamps/56._note: Also L57f flasher objectgames/taxi.json#/lamps/57._note: Also L58f flasher objectgames/taxi.json#/lamps/58._note: Also L59f flasher objectgames/taxi.json#/lamps/59._note: Also L60f flasher objectgames/taxi.json#/lamps/60._note: Also L61f flasher objectgames/taxi.json#/lamps/61._note: Also L62f flasher objectgames/taxi.json#/lamps/62._note: Also L63f flasher objectgames/taxi.json#/lamps/63._note: Desktop mode onlygames/taxi.json#/_source/confidence_notes: High confidence on switches/coils from SolCallback and _Hit/_UnHit handlers. Uses S11.VBS (System 11). Trough is cvpmBallStack with 3 switches (10,11,12) and 2 balls. Saucers: RightHole (sw36), TopHole/JoyRide (sw13), Catapult (sw35), SpinoutKicker (sw43). Drop targets: center bank DT27-29 (sw27-29), right bank DT30-32 (sw30-32). Solenoids 15,17-21 are commented out — bumpers/slings handled by VPX directly. Coils 25-29 are passenger insert flashers driven via SetLamp. Coils 30-32 are ramp/spinout flashers via SetLamp. Coil 16 is Joyride flasher via SetLamp. Spinner has no switch assignment in script (sound only). Slingshot switches not explicitly assigned — handled by VPX slingshot events (no ROM switch). Flipper solenoids use S11 framework constants (sLRFlipper=46, sLLFlipper=48). GI controlled by solenoids 10 (insert GI relay) and 11 (playfield GI, inverse logic). Lamp 99 is virtual GI insert state. Lamps 116,125-132 are solenoid-driven flasher lamps (100+sol#).
Unresolved questions
- Is the I/O enumeration complete for every supported physical/controller variant?
- Which inferred VPX behaviors reflect real hardware, and which are table-script conveniences?
- Are all mechanism home states, sensors, motion constraints, and ball interactions documented?
Sources
legacy.game.taxi:games/taxi.jsonat the pinned migration revision.