Hey Pinball Homebrewers!

I have had a couple people ask me about using the Total Nuclear Annihilation Numeric Score Displays in their homebrew games. Now that Pinball Life has these display assemblies in stock, I figured I would do a little tutorial on how to use these.

Powering up the display

The display assembly has a 3 pin 0.156″ header on the back. This is the main power input for the display. You will need to look at the silkscreen on this header and make a connector that supplies a solid ground and a solid +5vdc. Just make sure it is plugged in the correct orientation.

Arduino Nano

On the back of the display assembly, you will find a pre-programmed Arduino Nano ready for you to send it some instructions. This Arduino will not power up with the main power input and will need to be plugged into an active USB port to come alive. This is a Mini USB connection. Make sure when plugging this in, you use the included strain relief located by the main power input header.

Sending Data

Now into the more fun stuff. The display assembly needs to be sent some serial data from the USB to the Arduino in order to display stuff. I am going to provide some Python samples, but honestly all that is happening here is the PC is just sending the display a line of text. The Arduino will parse it, do all the heavy lifting, and display the numbers on the LED displays!

Text Format

The Arduino is looking for a text string in the following format.


A: A is the mode of the display. This can indicate whether you want the score to flash, not flash, clear the data, or flash a match (last 2 char flashing).
1 = Not Flashing, just display the score
2 = Flashing, used for current player up
3 = Clear the display
4 = Match display, will flash the last 2 characters of the score

B: B is the number of the display. This value will be between 1 and 4. This is so you can address the correct display when sending score data.

C: C is the actual score! This is a numeric value between 0 and 99999999. Do not put commas here, the Arduino will handle that.

\n: This is the terminating character so the Arduino knows it got a complete line of code.


Example 1:


In this example, the first display will receive a flashing on 100,000.

Example 2:


This example will display 200,000 solidly on display number 2.

Example 3:


This example will completely clear display number 1.

Python Code Examples

In order to send serial text strings over USB with python, I use PySerial. This will allow we to easily send this data to the display assembly.

Opening The Serial Port

    def openSerial(self):
        i = 0
        while (self.serialOpen == False and i <= 9):
                device_path = '/dev/ttyUSB' + str(i)
      'Attempting to open serial port ' + device_path)
                self.ser = serial.Serial(device_path, 115200)  # attempt to open serial port
                self.serialOpen = self.ser.is_open
      'Serial Info:')
                self.serialOpen = True
      'Attempt failed to open serial port ' + device_path)
                i = i + 1

This code will scan through the USB devices and try to connect to the Arduino. This code is probably not the best way to do it, but it has worked out well for the TNA project. 🙂

Closing The Serial Connection

    def closeSerial(self):
            self.serialOpen = False
  'Attempt failed to close serial port')
            self.serialOpen = False

Testing and Sending Data To The Display

    def testSerial(self,String="1234567"):
        self.ser.write("1:1:" + String + "\n")
        self.ser.write("1:2:" + String + "\n")
        self.ser.write("1:3:" + String + "\n")
        self.ser.write("1:4:" + String + "\n")

The above code will be how you should be able to send the data to the display assembly! This test method will send the score of 1,234,567 to all 4 displays.

I wanted to take a moment to thank Jim Askey (MyPinballs). This text string is based off of a serial data project that he did for integrating Bally displays into P-ROC games back in the day. I really liked the text format, so I kept within the same style for this, but added extra functions. Thank you Jim!

That should be all you need to get running. If you find any errors in any of this, please let me know here and I will correct it.

Thanks Everyone!

Hi Everyone! Well, another software version has dropped. This one is exciting in different ways than usual. This version has a few minor fixes, including a bit of shaker code re-writing and a weird crash was fixed during Co-Op. Now, for the exciting stuff. This version of the code has 2 different outputs that modders can use to make their mods more interactive with the game. If you are a modder and want to void your warranty, please keep reading, if not, just install the new version in the changelog below and enjoy! 😀

Backbox Drive Last Reactor Only

What the heck does that mean? Well, this new setting, if set to yes, will turn off the backbox LED unless you are on the last reactor and that last reactor is Critical. This driver can then be used to trigger other external things if you know what you are doing. This setting can be found under the Gameplay (Feature settings). Please to not connect anything to this driver that pulls over 1 amp, or you are in for a bad time.

Reactor Status Output

There is an open position on one of the PD-LED boards on TNA where people have been plugging in extra insert lights for their lit drop targets. Well, there is one position that was unused…. Until now. This LED output will send a signal from the PD-LED on one of the RGB lines of this LED output depending on the status of the current reactor.

Reactor Online/Ready will trigger the Blue channel of this LED.

Reactor Started will trigger the Green channel of this LED.

Reactor Critical will trigger the Red channel of this LED.

This output has been requested many times as people want to build more interactive mods for the game. Any modder that uses this outplut will need to make a transistor driver to do anything with this as the output is only designed to handle a 20ma load at 3vdc on each channel. If you exceed this, you risk damaging your PD-LED board and you will have to buy another for $70 USD. If you are planning on just running an LED (with no resistor) from the circuit, it can handle that no problem.


Please keep in mind that using these access points for mods is completely your own responsibility and voids your warranty on your game (I think these are up anyway). Spooky Pinball, LLC., Danesi Designs, LLC., and myself take no responsibility if you blow up a board in your game because of something hooked up incorrectly to one of these outputs. If you blow up a board, you will have to replace it yourself.

Please also keep in mind that I can answer basic questions about these outputs, but I unfortunately do not have time to help design your mod.

OK, now that the warning is out of the way, here is the changelog! Download link is at the bottom. Enjoy!

v1.4.1 - 08/15/2020 - Scott Danesi

## Bugs Fixed ##
- Fixed warnings text displaying over the top of teh Total Annihilation kill screen
- Shaker intensity calmed down a tiny bit due to popular demand
- Fixed crash when playing Co-Op with a final reactor set < 9

## Features Added / Modifications ##
- Added ability to use the Backbox LED Strip driver as a trigger for final reactor critical
- Added extra LED Driver dedicated to show only the reactor status

Download Link

Version 1.4.0 of the TNA code is now up! Check out the changelog below.

v1.4.0 - 04/10/2020 - Scott Danesi

## Bugs Fixed ##
- Modified sling logic to hopefully stop multiple hits
- Sling modifications to stop occasional sticking
- Fixed CoOp taking away reactor scores from previous players if additional players sneak in
- Fixed lag issue when replay triggered during reactor explosion
- Fixed score display dimming issue that randomly occurs
- Tilt bug fixed when ball falls into shooter lane after a tilt
- Fixed shaker not pulsing every time on ball lock
- Fixed Co-Op abort issue
- Ball search now disabled in service mode... oops
- Fixed Crash after game over in Co-Op with TA reactor < 9
- Fixed disabling coils on game abort via start button
- Fixed insert lighting issue with left targets on new ball start
- Fixed double hit on shooter switch issue
- Fixed certain settings not being saved when exiting service menu
- Shaker motor intensity fix... again.
- Fixed Super spinner activating twice on certain occasions
- Fixed lightshow logic error that would rarely lock up a lightshow when more than 1 was running at once

## Features Added / Modifications ##
- Start button now constantly on when no credits are in the machine
- Added ability to hold down up and down buttons in service mode to scroll automatically
- New multiball GI colors added to service menu for the fluorescent green plastic protectors (default now blue)
- Reworded Bonus Credit After to "Bonus Credit After X Credits" in service menu
- Beepgate Update
- Mystery Goodness
- Added support for Danesi 2.0 shoot again timer (with RGB lights)
- Added support for new clear drop LED add-on
- All lightshows cleaned up
- Added Tilt Warnings to LCD
- Added utility for clearing coin audit info
- Significant LED performance improvements
- P3-ROC Firmware update to v2.14
- 2 New attract mode lightshows!
- Updated flash speed and coloring of critical destroy targets


Hey there!!!  Another TNA code update is here!  This is a short, but good one.

I have fixed a few bugs and added what I like to call “Speed Runs” to kill each reactor.  What do I mean you ask?  The game now displays reactor uptime on the display telling you exactly how many seconds each reactor has been online for.  The timer starts as soon as the reactor start scoop has been hit and stops when the reactor is destroyed.  These speed times are stored in the high score table as “Reactor X Speed Run Champ”.  There are 10 of these.  One for each reactor and one for Total Annihilation!

Every second counts when battling these reactors so be sure to skip the reactor startup animation and be sure to skip the bonus count at the end of your ball.  Your reactor uptime pauses if another player is up, but the timer does not pause until after the bonus count.

Have fun everyone!

Change Log:
v1.2.1 – 05/22/2018 – Scott Danesi

## Bugs Fixed ##
– Skillshot light stuck on is now fixed.
– Reply info in attract mode now says replay for credit and Extra Ball when award is an extra ball
– Tilt during multiball trough issue fixed

## Features Added / Modifications ##
– Added reactor uptime champs to high score boards
– Added reactor uptime to display while reactor is running
– Random performance enhancements
– Co Op now can be enabled if you forget to enable it on adding player 1

## Download Link ##

Code Update Procedure:
WARNING: Updating code on your game will reset your audits and settings on the game after the update procedure. However, these audits and settings are automatically dumped to the USB stick as a backup for your reference. I am planning to add functionality to save audits within the game in the future.

Step 1: Download the latest “pkg” file from the link above.
Step 2: Copy the “pkg” file to a USB flash drive. Do not change the name of the file, should be named “tna-gamecode.pkg”.
Step 3: Power off the game and remove the backglass.
Step 4: Insert the USB flash drive into an open USB port on the PC located on the right side within the backbox.
Step 5: Power on the machine, a message should appear saying that the software is updating.
Step 6: Once the code update is complete, remove the USB flash drive and restart the machine.

Hey Everyone,

The wait is finally over.  I have finished up version 1.2.0 of the TNA code.  This new code update contains the new co op (all players vs. the machine) and the team vs. co op (players 1 and 3 vs. 2 and 4).  There are also a bunch of other little fixes and additions.  Please see the changelog clip below for more info.

To start a game in co op mode simply hold the start button down for a few seconds when adding player 1.  The game will flash a confirmation on the LCD and a callout saying that co op mode is enabled.  This is standard co op mode, which is all additional players are working together as a team to destroy the 9 reactors.  All scores are shared, no extra balls, replays, or high score tables are enabled.  It is your team vs. the future, that is it.

If you would like to make things a little competitive in co op mode, there is another co op type that can be selected.  This other mode is team versus co op mode.  This mode can be activated by pressing and holding the start button for a few seconds after the standard co op mode is enabled.  This mode requires 4 players and will revert back to standard co op if not enough players are added before shooting the first ball.  In this mode, players 1 and 3 will be going up against players 2 and 4.  This is also called “odds vs evens” in some tournaments.  All progress and scores are shared between each of the players within their respective teams.  Just like standard co op, no extra balls, replays, or high score tables are enabled.

As with any software release, please let us know if there are any show stopper issues on your game.  Please contact and we will get back to you asap.  Thank you and enjoy!

Change Log:
v1.2.0.00 – 04/08/2018 – Scott Danesi

## Bugs Fixed ##
– Quickshot video lag issue fixed.
– Adjusted debounce on top CORE rollovers, now will not miss hits off the upper flipper
– Fix for stuck 4x multiplier in multiball
– Lightshow stuck lamp issue fixed
– Flipper hold boost PWM patterns changed to minimize heat and noise
– Ball save issue after reactor destroyed fixed
– Fixed ball save issue during multiball
– Major performance update for lightshows – Thank you Josh Kugler!
– More secret skillshot bug fixes (now worth 100,000 points)
– Lightshow handling updates to prevent rare stuck on lights issue
– Lots of other little things that were bugging me that are not worth mentioning

## Features Added / Modifications ##
– Added target free game setting in coin op settings for operators to control advanced match logic
– Co Op Mode added!
– Team VS Mode added!
– New Jackpot voice callouts
– Kill target locations now regenerate if you hit 20 unlit kill targets – protects location
play if a target gets broken. This is also a setting in the service menu
(Critical Target Miss Threshold)
– Sound volume setting no longer in service menu
– Removed trough jam and warning messages from LCD
– Service Menu now highlights settings that have been changed from the default value
– Super spinner now gets harder to achieve each time it is earned
– Orbit combo logic and scoring reworked now with multipliers!
– Bonus tally can now be skipped to the total bonus screen by pressing both flipper buttons
– Ball save for multiball is now independently adjustable in the service menu
– Ball save on reactor destroy now adds 5 seconds to the current ball save or starts a new 5 second
ball save

## Download Link ##

Code Update Procedure:
WARNING: Updating code on your game will reset your audits and settings on the game after the update procedure. However, these audits and settings are automatically dumped to the USB stick as a backup for your reference. I am planning to add functionality to save audits within the game in the future.

Step 1: Download the latest “pkg” file from the link above.
Step 2: Copy the “pkg” file to a USB flash drive. Do not change the name of the file, should be named “tna-gamecode.pkg”.
Step 3: Power off the game and remove the backglass.
Step 4: Insert the USB flash drive into an open USB port on the PC located on the right side within the backbox.
Step 5: Power on the machine, a message should appear saying that the software is updating.
Step 6: Once the code update is complete, remove the USB flash drive and restart the machine.

Hey Everyone,

The long awaited v1.1.0.02 code update is now live!  So many changes in this version.  Below is the changelog and the download link.  Hope you enjoy!

Please also keep in mind, this update will clear your settings and audits.

As always, if you find any issues or show stopper exploits with this version, please let me know so I can get them corrected.  Thank you!

v1.1.0.02 – 02/21/2018 – Scott Danesi

## Bugs Fixed ##
– Fixed issue with attract frames loading 2 times on reset. This will slightly speed up the
game over reset process. Still working on making this faster. Michael Ocean is awesome.
– Fixed small video lag at beginning of first ball in the Welcome to the Future animation.
– Removed log file issues with bonus and PNG headers (not anything anyone cares about besides me)
– Significant video performance enhancements.
– Fixed bugs in Ball Search functionality.
– Fixed hard crash when trying to do a quick restart during the bonus count.
– Fixed bug where angry player can tilt out the next player too easily.
– Cleaned up unnecessary Ballsearch log error.
– Fixed Secret Skillshot exploit.
– Fixed attract mode ballsearch so it will not keep cycling if a player is too impatient for the balls to reset and drain.
– Fixed log error when saving data files to disk.
– Fixed tilt issue where prior player tilts after bonus.
– Jackpot lightshows improved.
– Shaker now enabled and disabled properly without machine restart.
– Shaker issue when starting mystery now disables properly.
– Destroy Reactor ballsave now active when multiball is running as well.
– Fixed Avg Ball Time Calculation.
– Fixed Avg Score Calculation.
– Fixed Avg Game Time Calculation.
– Changed Coin Drop notification font.
– Updated drop target handling logic to prevent balls from getting stuck in right scoop under specific conditions.
– Fixed some other misc font issues.
– Fixed flickering GI when lane changing the skillshot.
– Fixed coin drop issue for coins with a value larger than a single credit.

## Features Added / Modifications ##
– Significant changes to asset loading resulting is quicker boot times
– Super jackpot will now add a ball into play for up to a 4 ball multiball! This also enables up to 4x playfield multipliers. Indicated with white colored flashing ball lock inserts.
– Add A Ball is limited to 1 ball added per multiball.
– Destroyed reactors now score 1 point each to store the player’s progress in the last digit of their score. Match will ignore this last digit and treat it like a 0. For example, if a player earns 100,000 points and destroys 2 reactors their score would be 100,002.
– Reworking of display animations and notifications to clean up a bunch of things.
– Lock Quickshot display and scoring updates.
– Skillshot now displays score values when awarded.
– Adjusted orbit timer from 5 seconds to 3 seconds.
– Set default coil power settings to Bryan Kelly recommended settings, so you may want to update these after the update. 😀
– Bonus now includes bonus total at end of bonus count. Also new lightshow and sound for that.
– Remastered music from the Total Nuclear Annihilation Album has been updated on the game. Also other various audio has been remastered throughout the game.
– Last game scores are now saved and recalled after a hard reboot of the game on the numeric displays. This was needed in case there was a display error that requires a machine restart so the scores are preserved.
– Locking a ball now awards 20k points.
– All LED test now can stop on specific colors when pressing the enter or start button.
– Jackpot Drop Reset Seconds is now configurable in the service menu.
– Secret Skillshot now awards a default time ball save, but allows multiple saves for the entire save time. Awesome.
– Add A Ball now enables default multiball ballsave.
– Reduced overall RAM usage of PC significantly.
– Early ball save added for cashing in a ball save on an outlane.
– Added drop target test in service mode.
– Added warning message on the display if drop target error is detected by the system.
– Added Free Game Percent to Coin Op Audits.
– Upper rollovers now advance reactor value and award a reactor shot when started.
– Added a few things to Mystery Mode
– New Tilt warning sound. Replaced the public domain missile siren with custom effect.
– Mystery awards are now stackable, meaning you can light mystery more than once and the game will keep track of it for you and you can cash it is by hitting the scoop multiple times.
– Ball save timer setting added to the add-a-ball ball save (separate from the standard ball save).
– Reactor Keypad now more evenly distributes spotted targets when targeting a new reactor.
– Ball saver will now pause for mystery award and reactor starting.
– Replay award can be selectable between Credit or Extra Ball.
– Multiball ball saver will now only save the first 3 balls drained.
– Reactor inserts now glow Orange when targeted indicating Extra Ball when applicable
– Tilt switch sensitivity added to service menu.
– Last scores now show on the LCD after game over.
– Can now scroll through the individual high score categories in attract mode.
– Music Test now tests ALL reactors. 🙂

## Download Link ##

Hello again everyone,

Another code update has been finalized for Total Nuclear Annihilation.  This one is mostly a bug fix and enhancement update for our early operators.  Enjoy!

v1.0.5 – 10/20/2017 – Scott Danesi WIP

## Bugs Fixed ##
– Eject scoop ballsave now not active during multiball (this was a multiball exploit)
– Adjustments to pre-loaded assets for faster booting
– Added fix for stability issues when game is played consistently for 9+ hours
– Fixed display issue which would sometimes show a black screen when reactor is started

## Features Added / Modifications ##
– Burn in test added to the service menu
– Moved Coin Op audits to their own category
– Renamed ‘Games Started’ to ‘Rounds Started’ to make it less confusing
– Added Service credits functionality by pressing the exit button in attract mode or gameplay which
is tracked separately in the coin op audits.

## Download Link ##

Hey there everyone.  I am excited to share the first official bug fix code update for TNA since production has started.  v1.0.3 fixes a number of little things that people have been finding with the game.  Link and changelog are below.

v1.0.3 – 10/1/2017 – Scott Danesi

## Bugs Fixed ##
– Knocker coil strength did not go low enough
– Skeletongame framework update to fix issue with crashing after entering service mode during end of game
– Bonus multiplier lights refresh correctly now
– Left targets that light mystery award are now showing up correctly
– Fixed weird lighting behavior when bonus multiplier increased
– Double danger mystery award now cycles properly
– Fixed issue where match was not always flashing the numeric displays upon awarding
– Ballsave now activates at the proper time when awarded by mystery and start reactor is stacked along with mystery mode
– Failed ball lock attempts will no longer mess up the locking procedure under rare set of conditions
– Logging now shows errors only

## Features Added ##
– New bonus multiplier maxed vocal sample
– Bonus multiplier now shows on LCD when increased
– Drop target knockdown coil strengths added to service menu

## Download Link ##


Going forward, the code updates and changelog will be posted here and at  As always, please let me know if you encounter any issues with your software and I will look into a fix for the next release.  Thank you!!

PostResultsHey Everyone,

I know I have skipped a few release numbers, but I promise you it is worth it.  I am excited to announce the latest version of the Arcade Tournament Software now with the new changes below.

  • Minor Bug Fixes
  • Tournament Final Results Posting to! (see screenshot to the right)
  • Ability to import and export player lists when creating a new tournament

I hope you guys enjoy the new version!  As always, let me know if you have any feedback.

Latest version is posted here:

Thank you.