Software

Hey Everyone,

I know this is not the most exciting post about new pinball stuff, but I just wanted to share this code with the world that I created to get around a huge limitation in Oracle NetSuite.

We recently upgraded our backend system to NetSuite Manufacturing and it has been really great so far. I am a huge data nerd as many of you know. The one major issue we have been having is trying to get a nice report of the Bill of Material (BOM) components within our Assemblies with the current and average costs. We use these reports to make sure that we are not under or overcharging for parts that we assemble in house. After looking around online and talking to support, it was clear there was no solution to show this properly. You can see what the last build price is, but that is not what we need. So I took it upon myself to write a direct SQL query into the database to show what we need. I feel that this is so valuable for the community that I wanted to post it up here as a starting point for others.

In order to run direct SQL in NetSuite, you will need to first install the free SuiteQL Query Tool from Tim Dietrich from the link below:

https://timdietrich.me/netsuite-suitescripts/suiteql-query-tool/

Once you install and configure this script within your NetSuite environment, you will need to copy the code below into the query window. Once you have that code ready to go, you will need to update 2 places in the code that reference the BOM Revision name. You must copy the BOM Revision name from your system exactly for this to work. Once the 2 spots are updated, you can hit run and enjoy the BOM analysis!

/********************************************************************************
Title:			Pinball Life NetSuite Assembly Cost Analysis SuiteQL Query

Created: 		2023-03-22 (Scott Danesi)

Description: 	Basic BOM Revision costing report used to show average cost 
				analysis on specific BOM Revisions in NetSuite.

Instructions:	Replace the 2 revision names in the code below to the
				exact revision name that you would like to run the report for.
				These revision names must be the full revision name.  If both
				revision locations are not replaced, the report will give
				incorrect results.
********************************************************************************/

SELECT
	t2.fullname as "assembly name",
	t2.displayName as "assembly description",
	bomRevision.name as "bom revision",
	item.itemId as "component Name",
	BomRevisionComponent.description as "description",
	BomRevisionComponent.bomQuantity as "quantity",
	to_char( item.cost, '$9,999.9999' ) as "cost",
	to_char( CASE WHEN item.averageCost = 0 THEN item.cost ELSE item.averageCost END, '$9,999.9999' ) as "average cost",
	to_char( BomRevisionComponent.bomQuantity * CASE WHEN item.averageCost = 0 THEN item.cost ELSE item.averageCost END, '$9,999.9999' ) as "avg cost total",
	to_char( CASE WHEN item.lastPurchasePrice = 0 THEN item.cost ELSE item.averageCost END, '$9,999.9999' ) as "last purchase price",
	to_char( BomRevisionComponent.bomQuantity * CASE WHEN item.lastPurchasePrice = 0 THEN item.cost ELSE item.averageCost END, '$9,999.9999' ) as "last purchase total",
	t1.altName  as "preferred vendor" 
FROM
	BomRevisionComponent
	LEFT JOIN item ON BomRevisionComponent.item = item.id
	LEFT JOIN bomRevision ON BomRevisionComponent.bomrevision = bomRevision.id
	LEFT JOIN
		(
			SELECT
				itemVendor.item,
				itemVendor.preferredVendor,
				itemVendor.vendor,
				Vendor.altname
			FROM
				itemVendor
				LEFT JOIN Vendor ON itemVendor.vendor = Vendor.id
			WHERE
				itemVendor.preferredVendor = 'T'
		) as t1
		ON t1.item = item.id
	LEFT JOIN 
		(
			SELECT
				item.fullName,
				item.displayName,
				item.id,
				bomRevision.name
			FROM
				item
				JOIN bomAssembly ON item.id = bomAssembly.assembly
				JOIN bom ON bomAssembly.billofmaterials = bom.id
				JOIN bomRevision ON bomRevision.billofmaterials = bom.id
		) as t2
		ON t2.name = bomRevision.name
WHERE bomRevision .name = '0199-0699_LEFT-BOM-REV-' 			/************ <--- Change this to the exact BOM Revision that you want to see. ******************/

UNION

SELECT
	NULL as "assembly name",
	NULL as "assembly description",
	NULL as "bom revision",
	NULL as "component name",
	'TOTAL COST' as "description",
	NULL  as "quantity",
	NULL  as "cost",
	NULL  as "average cost",
	to_char( SUM(BomRevisionComponent.bomQuantity * CASE WHEN item.averageCost = 0 THEN item.cost ELSE item.averageCost END), '$9,999.99' ) as "avg cost total",
	NULL as "last Purchase Price",
	to_char( SUM(BomRevisionComponent.bomQuantity * CASE WHEN item.lastPurchasePrice = 0 THEN item.cost ELSE item.averageCost END), '$9,999.99' ) as "last purchase total",
	NULL as "preferred vendor" 
FROM
	BomRevisionComponent
LEFT JOIN item ON BomRevisionComponent.item = item.id
LEFT JOIN bomRevision ON BomRevisionComponent.bomrevision = bomRevision.id
WHERE bomRevision .name = '0199-0699_LEFT-BOM-REV-'			/************ <--- Change this to the exact BOM Revision that you want to see. ******************/

Please keep in mind, this is the first revision of this code that I made, it is not the most efficient or the cleanest, but it is a good starting point if you need to see this data. I really hope this helps someone out there as much as it did for me. Please feel free to reach out to me if you have any suggestions, or see any errors in my code. Enjoy!

It is here! v1.5.0 has finally arrived. This new version contains some exciting new stuff including a brand new Jukebox Mode, even more Scorbit integrations, and a Spinner Rip counter with dedicated high score table. This version and all future versions are fully compatible with all versions of the Total Nuclear Annihilation pinball machine.

Below is the full changlog for this release.

####################################################################################
v1.5.0 - 10/05/2022 - Scott Danesi

## Bugs Fixed ##
- Fixed issue with music resetting at the end of multiball when it was not necessary to restart the song
- Slight sound effect mix balancing
- Scorbit misc bug fixes
- Fixed bug where the game would not allow you to completely erase your name on the high score name entry screen

## Features Added / Modifications ##
- Added support for the upgraded core numeric display
- Lightshows updated to include new RGB LEDs in upgraded core display
- Jukebox mode added (hold both flippers for 5s in attract mode)
- Jukebox mode settings to enable/disable the mode (for operators, on by default)
- Jukebox mode settings to enable/disable beacon (off by default)
- Added new song for when reactor is started AND value is maxed out
- Spinner Rip Count added to LCD
- Spinner Rip Count high score category added with default of 30 (so please lube your spinners!!!)
- Scorbit handling completely restructured and now will attempt reconnects when the connection is lost
- Scorbit now reports bonus x and reactor temperature
####################################################################################

Click here to get the latest code!

And as always, please contact me if you find any issues with this release and I will address it as soon as I can. Thank you!

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.

https://www.pinballlife.com/mm5/merchant.mvc?Screen=PROD&Product_Code=PBL-600-0473-00

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:B:C\n"

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.

Examples

Example 1:

"2:1:100000\n"

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

Example 2:

"1:2:200000\n"

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

Example 3:

"3:1:0\n"

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):
            try:
                device_path = '/dev/ttyUSB' + str(i)
                self.game.log('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
                self.game.log('Serial Info:')
                self.game.log(str(self.ser))
                self.serialOpen = True
            except:
                self.game.log('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):
        try:
            self.ser.close()
            self.serialOpen = False
        except:
            self.game.log('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!

Another update??? Yes!

Hi Everyone,
I have yet again made another update to the TNA code, this one has a few feature requests and some new functionality added. Oh yeah, I did also fix some bugs… 🙂

The biggest feature update of this release is the ability for TNA to fully interact with the Scorbitron Hardware from Scorbit. Basically, the Scorbitron is a piece of hardware that allows the game to fully integrate with the internet and post scores, leaderboards, and current game statuses online! I have set up a few customized leaderboards here for Total Nuclear Annihilation, Rick and Morty, and my other games in my collection. This is still pretty new tech, so most of my games do not have scores submitted as of the time I am writing this. You can find more information about them at scorbit.io.

Some other cool features added in this release is the ability to show scores on the LCD, show your super spinner status, and have the ball auto-launch when left unattended! These 3 things have been heavily asked for by the community and I am glad to have been able to get them in. 🙂 Enjoy!

Get the new software here!

Below is the full changelog for this release:

##################################################################
v1.4.2 - 10/25/2020 - Scott Danesi

## Bugs Fixed ##
- Fixed reset issue on ball 2 with orbit status not resetting
- Fixed double flip issue during reactor start eject lightshow

## Features Added / Modifications ##
- Scorbit functionality added
- Added service menu option to show scores on LCD.
    Machine (Standard) -> Scores On LCD
- Added ability to turn off backbox LED during gameplay.
    Machine (Standard) -> Backbox LED On During Game
- Added Super Spinner progress on main screen
- Added ability for game to autolaunch balls if left unattended.
    Machine (Standard) -> Unattended Launch Time
    ['Off','30sec','1min','3min','5min','10min'] - Default is Off
- More ball save grace period on right scoop eject if STDM.
##################################################################

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.

!VERY IMPORTANT NOTE!

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

https://drive.google.com/file/d/1s_tzHURjs7QVl6NKX5u2zAogMKJh4hKT

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

#################################################################

It is finally here in all of its glory. Version 1.3.0 with many new features and bug fixes. Please see the change log below. The code can be downloaded from the link below as well. As always, let me know if you encounter any issues with the software and I can address them. Enjoy!

CHANGE LOG:
###########################################################################
v1.3.0 - 01/03/2019 - Scott Danesi

## Bugs Fixed ##
- Fixed default coil pulse time in coil test
- Fixed video lag in Burn Test
- Tweaked orbit sound effects
- Fixed issue where the shaker would not always start on critical
- Fixed sensitivity on drop error messages, they will appear less frequently
- Fixed ball save callout, now happens on SDTM shots out of the scoop
- Spelling error fixed in service mode
- Adjusted attract lightshow timings to make the transitions more smooth
- Fix put in place for ball tracking issue, once again... :)
- Fixed hangup on bringing reactor 3 critical!
- Fixed false positive credit dots. Now waits until 10 failures to throw the dot
- Made another attempt at fixing the extra ball getting thrown in play on certain machines during ball save
- Fixed issue with some 10 letter initials getting cut off


## Features Added / Modifications ##
- Added Beacon Test in service menu
- Added sound effects for high score entry
- Added dedicated high score reset utility in the server mode preserving other audits
- Top score entry for Co-Op games added
- Left gate now opens during attract mode when clearing balls out of the shooter lane
- Updated indication lightshows for when locked balls are waiting and multiball ready
- Massive restructuring of flipper handling logic, now runs stronger and cooler
- Credit Dot and Error Report added to the service menu
- Clear Coin Audits added
- Adjusted High Score initials down slightly for easier viewing
- Added Balls Saved audit
- Ability to disallow tilts when ball is in the shooter lane
- RAD target destroy selection logic updates based on Reactor Difficulty Setting
- Easy Reactor Setting - RAD targets not selected for Reactors 1-3
- Medium Reactor Setting (Default) - RAD targets not selected for Reactors 1-2
- Hard Reactor Setting - RAD targets not selected for Reactor 1
- Brutal Reactor Setting - RAD targets can be selected for all reactors
- Completely restructured how the slings are handled to reduce airballs

###########################################################################

Software Download and Instructions: www.tnapinball.com

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 ##
https://drive.google.com/open?id=11iirLZAPz0k-yNbEmt8AguLAuMOqbGbX

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 [email protected] 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 ##
https://drive.google.com/open?id=1RDnDQzY5JvBZn7BVcrCvYDZcqVoa6cjJ

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 ##
https://drive.google.com/open?id=1HjwHSLOZ_19j1hv0srQBjvt4VoFWWyk0