Overview of the FAST Expansion Bus¶
The FAST Pinball Expansion Bus is a new & modern platform for add lights and motion to pinball machines. This bus is used in new machines (based on the FAST Modern Platform) as well as used to add interactive mods to classic machines (via the FAST Retro Platform.)
The FAST Expansion Bus uses a tree-based topology to connect one (or more) Expansion boards. Each expansion board adds LEDs, servos, or other devices into the pinball machine. Here's an example diagram showing the Expansion Bus in a modern machine powered by a FAST Neuron Controller:
The diagram above does not show power. All FAST Expansion boards have 0.156" 12V power input headers, and they use this voltage to both power themselves and to power all the devices attached to the board. Expansion boards generate other voltages they need locally on the board (5V for LEDs, 6V for servos, etc.). This is what allowed us to remove the 5V power supply in FAST modern machines, and to simplify power requirements across the board.
In practice, the expansion boards will be located throughout your machine, with each being nearby the devices it's driving. The only "long haul" cables are the Cat-5 Expansion Bus and 12V power cables.
In a complete machine, the expansion bus and expansion boards might be arranged like this: (click to zoom)
The FAST Expansion Bus is supported on all current FAST Pinball Controllers, including modern and retro platforms. An add-on "hat" for the Nano Controller adds Expansion Bus capability to the Nano as well.
Expansion Bus in retro machines: the ultimate mod platform!¶
By adding Expansion Bus capabilities to our Retro Platform controllers, mod makers can create the richest and most interactive mods possible without worrying about the underlying details of how their mods get power, or how they receive events and state information from the pinball machine. All FAST Pinball Retro controllers broadcast realtime "events" from the running classic 1.0 game code, allowing mods to respond and interact in new and very specific ways.
Limitations of traditional mod interactivity¶
While there are plenty of great non-interactive mods for pinball machines, people love mods that interact with the player and the game. This has presented a challenge historically, as there was no simple and consistent way to extract game state information from a running machine that the mod could respond to.
Traditional mod interactivity used one of the three following techniques:
- The mod clamps on to control lines to watch the hardware (drivers, lamps, and/or switches)
- Sniffing the audio command bus
- Scanning the display content
Not only are these methods limited, they require a fair amount of processing and complexity in the mod itself.
The FAST Expansion Bus: A new model for interactivity¶
To address this, we asked ourselves, "What would enable mod makers to create the richest mods?" We figured the solution was to go to the headwaters of what's driving everything--the pinball controller which is running the game code.
For classic games running the FAST Retro Platform, since the FAST Controller is running the emulation, it has a birds-eye view into everything that's happening in the game and can access the full state of the machine. This enables rich and non-obvious state detection, (such as "the current player just overtook the grand champion”). The FAST Controller converts these events to the FAST Expansion Bus and sends them out as standard events that can be consumed and acted on by any mod.
For any "2.0" games (running on a classic machine), or for any new games (running on the FAST Modern Platform), any mods connected via the expansion bus are addressable just like any other standard pinball machine hardware directly via the game code.
FAST Expansion Bus Architecture¶
There are three layers to the Expansion Bus architecture:
- FAST Platform Controller, with the EXP bus port
- One (or more) expansion boards, which connect to the EXP bus (either directly on the platform controller or daisy-chained to each other). Expansion boards can directly control certain devices (varies depending on the board) and also can connect to additional small breakout boards to control more things.
- One (or more) breakout boards, tiny boards that plug into expansion boards to directly control devices. (You can design your own breakout boards too.)
The following diagram shows the Expansion Bus architecture from a high level:
The backbone of the FAST Expansion Bus are the expansion boards. Every expansion board has an RJ-45 jack which connects to the EXP port on either the controller or another expansion board. Every controller has two EXP ports, and the larger expansion boards have two as well, and you can daisy chain them as needed. Unlike the FAST I/O Loop, the EXP bus is not a ring and does not need to be a complete loop.
There are different sized expansion boards which have different capabilities designed for different roles in a machine. The idea is that you pick which board you need based on its size and capabilities.
All breakout boards have microprocessors on them, and they are all "intelligent" in that they communicate with the FAST platform controller to announce themselves, share what capabilities they have, what's plugged in, etc.
We are currently planning for the following types of expansion boards:
- 128 RGB LEDs
- 4 servos
- 256 RGB LEDs
Drive Select Relay Board¶
The drive select relay board is a great example of the type of custom boards that can be created for the FAST Expansion Bus. This board is tiny and simple. You plug it in to a driver output in an existing classic machine that's been enhanced with a FAST Retro Platform controller. It operates in a passive, pass-through mode that does not affect control of the existing driver.
However this board has the ability to plug in a second driver, and that second driver can be "selected" by sending a signal to the board via the EXP bus which then flips a relay to connect that driver output to a different driver.
Why would you want this? This is how you add an autoplunger to an existing classic game that didn't have one.
The challenge in this case is that since the classic "1.0" original game ROMs don't know about the (new) autoplunger, that code needs to work as originally written. But for 2.0 / new game code, it needs to be able to use the autoplunger. By using this board, the new driver is presented to the system where it can be accessed just like any other driver. (The platform handles flipping the relay automatically.)
So you can get a 1.0 / classic game which functions as originally designed while also getting support for a new driver to be added which can be used by the 2.0 game code.
The final component of the FAST Expansion Bus are the breakout boards. Breakout boards are small, purpose-build boards which interact or control some type of real-world thing. Examples of types of breakout boards that exist (or that could exist) include:
- Servo controllers
- Stepper controller
- LED controllers (for WS2812 or APA102 serial RGB LEDs, or in the future, for other types of LEDs)
- Flashers (extra bright, higher current LEDs)
- Motors, or, anything else you can think up?
If you're building a homebrew or prototyping a machine, you'll most likely use a combination of expansion boards and breakout boards to get the specific control functionality you need. If you are going to take a machine into production, then we'll work with you to design a custom board which has the specific functionality you need so you don't end up with unneeded complexity and extra parts.
The Expansion Bus is smart¶
Since the FAST Expansion boards have microprocessors on them, they are intelligent and have the ability to know what breakout boards are connected and what capabilities each breakout board has. Game code can query the EXP bus via the controller to find out what's connected and installed and can auto-configure the game code to use whatever it finds. If it sees something newer, it can trigger a software update notification, etc.
Let's look at some example scenarios to illustrate how the FAST Expansion Bus can be used in the real world.
So, for example, let’s say you make toppers. You can get a FAST Expansion board and build it into your topper. Connecting and integrating it into a machine will just require the use to plug in Cat-5 cable and 12V power (which could come from an external 12V supply with a barrel connector plugged into the service outlet). Because the expansion board has a processor, the system can identify what the topper is and make its capabilities available to the game code.
Since the topper contains a FAST Expansion board with a processor, this means that just plugging in power without a pinball machine connection can still allow the topper to do something cool. (Think of this like "desktop" mode, or "display shelf mode").
Then if the use plugs the topper into a machine with a FAST Retro controller that's running the original 1.0 game code, the topper can interact with the game via the events which are sent out over the EXP bus via the Cat-5 cable to the expansion board in the topper.
Finally, for 2.0 modern games, the game write can talk to the topper directly just like anything else in the machine.
The same could be true for mods that are under the glass. If a mod maker builds a dancing robot that lights up and moves its arms, they could incorporate the small servo and LED breakout boards into their robot mod. Plug it in to just power, and maybe it dances generically. Plug it into a 1.0 machine and it can receive events from the EXP bus and interact with the game, and plug it into a machine running 2.0 modern code and it can do whatever the programmer wants. Just like the topper, the system can query what's there, and if it's something new that it's never seen before, it can prompt the user for an update.
The FAST Expansion Bus is not yet available to the public. In the meantime, if you make mods, and you'd like more information about the FAST Expansion Bus, or you'd like some boards to start building into your mods, reach out to us! (You can email me, Brian.)
N or > jump the next page, P or < for previous, search with S or ?