Pinnovations logo

Gooligan's Hooligans - 1st Update


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:

Physical Changes

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.

Game rules

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 play testing.

Tutorial added

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 home environment.

Last updated: May 19, 2010


© Terry Cumming, 2006-2010