Controlling Pinball 2000

I recently came by some source code to control the power driver board of a P2K machine. This is NOT Pinball 2000 source. This custom source was written by Daniel Johansson for his home made machine (which has been canceled).

Here’s some information about the source pulled from his site:

Below is the source code for the power-driver-board-part of my Sparks Pinball 2000 project. It is written in C as a Linux kernel module utilizing the real time extensions RTAI from The sound and graphics part (not published here) is written in C++ as a Linux user space program. The communication between the two part are made using FIFO:s. The code must only be considered as test software. It is very poorly commented and may not be easy to read. If you make any modifications to it, please send me a copy…

Maybe there are someone out there who are interested in continue to build on the code and maybe write a Pinball 2000 Open Source Toolkit, that can be used by anyone interested in making their own Pinball 2000 game. If so, the code must be rewritten. It isn’t a good way to place everything that has to do with the power-driver-board (including the rules) in a kernel module. One idéa is to simpify the kernel module and let it only deal with functions that has directly to do with the power driver board like fire solenoids, flash lamps, running lamp patterns etc, and sending switch event up to a user space program where all the game code is written. Another way is to write everything in user space using RTAI-LXRT and skip the kernel module part…
Here is the code: ***. Disclaimer: The code is “as is”. Use it at your own risk. I will not be responsible for any hardware malfunction.
I included a definition file for SWEP1 for anyone interested in writing new software to their own game…

Paired with the information on, I think you could have a really good head start on a custom machine.

And a bonus video of Daniel’s machine in action:



* Pinball 2000 is a trademark of Williams Electronics Games, Inc. All rights reserved

Author: Jeremy

See all posts by (34)

5 comments until now

  • Hi Jeremy,

    I’m making my semi-regular search for DIY pinball projects and came across your site.

    I’d like to encourage you to join the google group “homebrew-pinball” (spam filter) and/or the p-roc forum at pinballcontrollers (commercial domain, spam filter) – there is very little traffic and a lot of lurking, but they are a great way to keep track of what various people are up to.

    Sorry to comment – I couldn’t locate a contact email.
    – Eli

    By Eli Curtz June 14, 2009 @ 11:09 AM
    • Thanks for the invite Eli. I actually used to frequent all of the homebrew related sites almost daily. However, things have been very hectic as of late. Thus my project and my pinball related surfing is on the back burner until I can figure out a way to free up some of that stuff they call free time.

      By Jeremy July 21, 2009 @ 6:37 PM
  • Hey Jeremy. I’m really interested in that pin2000 and PBOS code. My homebrew machine is coming together, but I’m balking on writing the ENTIRE os myself. I have the traditional needs (attract, ball counting, light sequencing, solenoid driving) but then I get into trouble because I also have RGB leds, the DMD is written in Flash with a C# controller, and I have a servo to drive.

    I’d like to compare notes because I think we’re at the same place and based on what I’ve read, we’re having similar issues.

    fc (poodull on homebrew-pinball)

    By fc June 15, 2009 @ 1:25 PM
  • awesome stuff…are you still working on it?? Jpop

    By John Popadiuk August 1, 2012 @ 4:29 AM
    • I wasn’t actually working on this piece. I was working on my own version of a pinball OS.

      The last I heard, Daniel dropped his project shortly after posting that video.

      By Jeremy August 13, 2012 @ 9:21 PM

Leave a Reply