Program Update 1 - Version 1.1
This page talks about the first major update for Gooligan's Hooligans home-made DIY custom built pinball machine.
Version 1.0 of the game was essentially what was brought to the Pinball Expo in Chicago in October 2008.
The software was not touched following Expo (except for minor re-configurations to reflect the home environment) until
the update I call "Version 1.1" was started in March 2009.
Topics included on this page:
Two minor physical issues were dealt with. The first was the Hoosegow subway ramp. The ball frequently hung up
at the transition from one plastic piece to a metal piece, at a curve. I managed to pull the playfield up a bit,
stick my head into the game through the coin door with the power on, and finally see exactly where it was hanging up.
One piece of duct tape seems to have resolved the issue for now.
The second issue was the Safe kickout hole (SafeKO) behind the inline drop targets. When the drop targets were down,
the ball would frequently hit the SafeKO with too much velocity and bounce over the hole. I added a piece of foam at
the top of the one-way rollunder gate to dampen the ball. This seems to have worked and the ball enters the hole most
of the time now.
Some points adjustments were made to things like the Chicago Shuffle feature, inline drop target values and the Blow
the Safe award. Extra North targets are spotted when the Skill shot is made. Some game state is now persisted across
extra balls (like the Shuffle state) so as to make features easier to obtain.
I also added some super "wizard" type awards at end of game. These are things I didn't have time to do before. For
completing any of the three major goals of the game (Gang Rank of 1, St. Valentine's Day Massacre shootout, Gooligan's
Rampage shootout), big awards at the end are given now. Just to make you feel more special.
General sound effects change
When pausing streaming sound clips, the buffers are flushed rather than drained in order to stop the sounds faster.
Draining buffers would take perhaps half a second and cause unwanted overlaps in sound clips.
There also were problems with speech effects overlapping and clobbering each other. Sometimes during play multiple
speech effects would be triggered simultaneously. The calls have been changed to play the speech effects exclusively
in the foreground, so you never hear more than one at a time.
Console programming language enhanced
Originally, the DOS command line console for diagnostics and testing spawned scripts which implemented the console commands.
Simple programming constructs were added for subroutine calls and local variables. Multiple threads could be spawned
with joins done later.
In order to be able to flexibly implement the game tutorial (see the next section), conditional logic constructs were
added to the scripting language for this update. Specifically if-elseif-else-endif and loop-endloop structures were added with
a goto command. Yes goto is evil but for the simple purposes of this language it will suffice. Integer math and
comparisons can now be done.
Many new console commands were added also, such as ones to enable/disable attract mode displays, handle switch reads,
control sounds better, etc.
While this un-named language now can accomplish just about any task needed, it is still pretty clunky for general
programming. I have created a couple of better languages before but didn't really want to waste time putting in effort
here. You could pretty much implement a complete EM game (complexity-wise) this way although I wouldn't want to do that
without a couple more key enhancements.
However, if I build another game, this scripting/command language might be a quicker way to get a game going just for
Aside from some Gottlieb/Premier games, I don't believe any other pinballs have any sort of game tutorials teaching
you how to play and describing where things are on the playfield. I was thus inspired to add a tutorial to introduce
new players to the game. The tutorial is activated by selecting an item from the help menu (which is activated by
pressing the HELP button the coin door).
The tutorial was written completely in the aforementioned scripting language. Text is shown on the LCD display while I
talk about the subject matter at hand. Topics are played sequentially, with the user going from topic to topic via
the left and right flipper buttons.
As the speech is heard, playfield lamps and coils are activated in synch with the speech to illustrate points or simply
to point out where a target exists at on the playfield.
My view right now is that this sort of feature would not be overly popular or desired by operators on locations, but
would be more suited for home environments (such as where my game is installed).
The game always played music in attract mode randomly from a large list of supplied MP3 songs. But I did not have an explicit
interface to select songs and build a play list.
Thus I added the explicit jukebox support. This is accessed from the Help menu after pressing the HELP button while
in attract mode. Music can be selected from any of three pre-defined categories (Metal, Pop, Other), or all categories
shown together. If you plug in a USB device or MP3 player each mapped drive will also show up (see USB section below).
The player uses the flipper buttons, Help button and Start button for navigating and selecting songs to be added to the
play list. When done the songs start to play in attract mode. If you start a game, the current play list song is
suspended, then resumed when the game is over.
Also added was an option to use the play list songs as background music during game play, replacing the pre-defined
instrumental tracks that are played randomly. This is a great feature for home play so that you can play your
favorite songs during the game.
USB mass storage device support
To make the jukebox feature even more flexible, I added some ugly code to enumerate and map USB mass storage devices
(e.g. USB flash drives or MP3 players that can appear to Windows as USB mass storage drives). These mapped drives
then show up in the jukebox category list by DOS drive letter and friendly device name (e.g. "G: SanDisk Cruzer").
If the drives are unplugged and new devices plugged in the game recognizes that and acts accordingly.
So, in theory, if you have people over to play, they simply can plug their MP3 players into the game, select their
favorite tunes from the MP3 player and then use that music as the background music while playing the game. Music
is important and I feel this type of feature would be very beneficial in commercial games, at least when used in a
Last updated: May 19, 2010