TL: Modify a driver's trigger¶
FAST Serial Protocol: Overview & First Steps
This documentation section is about the FAST Serial Protocol (FSP) commands, which are the low-level commands a host computer sends to a FAST board. Most FAST Pinball makers do not need to know about these details, since the pinball game framework (such as the Mission Pinball Framework) handles this communication for you.
If you're writing your own game framework, read the overview of how FSP works and how to connect first.
TL: command is valid for FAST Neuron and Retro controllers. The FAST Nano Controller uses the command
TN: instead, but everything else is the same.
TL: command modifies how a driver is triggered. Or, in simpler terms, it's how you manually fire a driver you already configured, or how you disable a driver between balls, etc.
This command only works for existing drivers which have been previously configured using the
DL: command. (If you're not familiar with the
DL: command, read about it first, including the section on how FAST drivers work.)
Once configured, a driver's "trigger" is whatever causes it to activate. (The activation itself, such a pulse, latch, flip-flop, etc., is configured as part of the
TL: command changes the trigger, which in a practical sense includes:
- Manually fire a driver (eject a ball, pulse a magnet, enable a motor, reset targets)
- Disconnect a driver from its autofire switch (disable pops, slings, and flippers during tilt)
- Connects a driver to its autofire switch (enable flippers on ball start)
- Changes the switch a driver uses for autofire actions (reversed flipper "drunk mode")
All of these actions could be used by sending a new driver config via the
DL: command, however, using the
TL: command is preferred.
The main reason for this is since the
DL: command destroys the existing driver object, any running timers (cool down, rapid fire, pwm times) or transitions (switch debouncing) in process are hard killed, and the driver is completely reset. (So for example if you applied a new DL: command to a flipper driver while the player was holding the button it, the flipper would deactivate since it was killed and then reactivate once the new one got set up.) The
TL: command just changes the trigger for an existing running driver, so all the timers and other processes stay intact.
TL: command is much faster.
FAST driver number, zero-based, in hex. (Remember all values in the FAST Serial Protocol are in hex.)
Used to manually trigger this driver, or to enable/disable physical switch control
- 0 = Auto, clears manual control and goes back to whatever was configured via
- 1 = Tap the driver (eject a ball, reset drop target, fire the knocker)
- 2 = Turn the driver off (disable for tilt, after game, turn off a motor, etc.)
- 3 = Turn the driver on (turn on a motor)
Some practical examples:
A pop bumper, you would configure using the
DL: command to be an autofire pulse triggered by its activation switch. Then when you needed to temporarily disable the autofire nature of that pop bumper, like during a tilt or between games, you would use the
TL: command along with a CONTROL value of
2 to manually turn the driver off, and then again with
0 to set the driver back to the autofire control.
Or for a VUK eject, you'd configure it using the
DL: command for a pulse mode but not tied to an autofire switch, since it's only software-controlled. Then whenever you wanted to fire it, you'd use the
TL: command along with a CONTROL value of
1 to tap the driver.
Technically-speaking, this CONTROL value temporarily overrides portions of the TRIGGER bitmask for a driver which has been previously configured via the
DL: command. Here's that TRIGGER bitmask from the
DL: command documentation:
BIT 7 6 5 4 3 2 1 0 [DISABLE_SW][MANUAL][INV_SW2][INV_SW1][ONE_SHOT][NOT USED][NOT USED][DRV_ENA]
And here's how the various
TL: CONTROL modes modify this bitmask for the driver.
- 0 = Auto, clears bit 6 (MANUAL) and 7 (DISABLE_SW)
- 1 = Manual tap, sets bit 3 (ONE_SHOT)
- 2 = Manual off, sets bit 7 (DISABLE_SW), clears bit 6 (MANUAL)
- 3 = Manual on, sets bit 6 (MANUAL) and 7 (DISABLE_SW)
Changes the physical switch associated with a driver's autofire configuration. This value will completely replace and overwrite whatever switch value was sent via the original
DL: command. To change back to the original switch, send another
TL: command with the original switch numbers.
This value is the FAST switch number, zero-based, hex.
TL:10,00,16<CR> change the switch that controls Driver 0x10 to switch 0x16. Simple.
In practical use, this could be used to implement a "drunk flipper" mode where the flippers and switches are inverted. You'd just use this command to reconfigure the drivers for the right flipper to use the left flipper button and vice versa.
Let's start with a pop bumper. You might create its driver object with the following command:
This will pulse the pop bumper on driver 0x10 hex for 20ms when switch 0x15 triggers. After this event, allow a rest time of 80ms.
To disable this pop bumper, like during tilt or when the game ends, use the command:
This will manually turn off the driver. To re-enable the physical switch, like when the game starts, use:
If you need to manually fire the pop bumper, like for ball search or the coil test menu, you would use:
Documentation Feedback? Requests? Confused?
Hi! I'm Brian, and I'm responsible for the documentation at FAST Pinball. If you have any feedback, requests, corrections, ideas, or any other thoughts about this documentation, please let me know! You can email me at firstname.lastname@example.org. Thanks!
N or > jump the next page, P or < for previous, search with S or ?