Building A Classic Coin-op Game In An FPGA

This game of Bomb Jack is the same as the original arcade version. The difference is that this hardware was built in an FPGA using schematics found on the Internet.

We’re a little shocked by the complexity of such a project. We’ve been impressed before by the use of FPGAs to implement classic CRT vector graphics. But that project used a library that had already implemented the original game. For this effort, [Alex] wanted to find a game that hadn’t ever been translated to an FPGA, and used stock parts. Bomb Jack is a 1984 platformer which ran on a Z80 processor, AY-3-8192 sound generators, and common TTL logic chips. This meant he didn’t have to write the cores himself, but rather use already existing versions of the chips and code together the hardware.

You can read about his experience at the page linked at the top, or just jump after the break to see video of the final project. You can see the monitor is on its side, and the game sounds great and runs flawlessly.

17 thoughts on “Building A Classic Coin-op Game In An FPGA

  1. I’ve got a prototype Papilio Pro board and have got Alex’s project running on it too. It’s awesome – I had it at as my screen saver for a while. One screen has Pacman, the other had Bomb Jack. Shame they were both in portrait….

    I’m slowly doing the same and implementing Crystal Castles. I’ve got a running CPU, two Pokey sound chips, the LETA trackball and a few misc hardware ports up and running, and am slowly putting the Graphics hardware together.

    It is interesting what compromises you have to do. A lot of the designs do not follow design rules of synchronous logic (f.e. gating the clock), and use a lot of ‘hacks’ to squeeze the most out of the 8 bit micros – like having bridges in the data and address buses.

    They also use a lot of tristate logic that doesn’t move to FPGAs too well…

  2. Just a small correction: The vector game you link to (Black Widow) actually was built in the same way as the Bomb Jack game here: I had the sound and CPU core but had to code the glue logic and the color vector generator myself. The Asteroids game I tested my first hardware with was a previously-developed game though.

    On Bomb Jack: Nice to see another arcade game ported to an FPGA! I’ll have to see if it fits inside a chip/board I have, would love to play it.

  3. The “Roadblocks” sections that point out some of the logistics problems with FPGA sourcing I like. VHDL and Verilog projects would otherwise allow indy hackers and small companies and studios to compete with major commercial entities..

    the last thing any nation needs is productive and intelligent citizens that got that way without paying heavily inflated costs for it..

    1. That comment has left me completely perplexed.

      This project is an example of a single dedicated person can make hardware like this, in his or her spare time. Just like the OpenSparc project, or the projects on, or maybe my little DVI-D implementation.

      It cost him a lot more (in time and money) than running MAME on his PC, but what the heck – it’s fun! However it cost me a lot less time to implement his design on my FPGA board!

      I can sense that there is a deep point in there, but can’t work out what the heck it is! Maybe I’m just thick :-)

      1. His point is that poor people that dont have more than $20.00 cant get into FPGA programming. so he is grousing about it.

        I am betting he also groused about how expensive SMT tools are and how “nobody” can afford a hot air rework station.

  4. I’d love to see someone port the Neo Geo system to an FPGA. This would allow over 150 games to be played with little to no tweaking. It uses a Motorola 68000 and the venerable Z80, and has a dual 12 and 4 MHz clock.

    I wonder if it would be possible to write a script to convert MAME games to an FPGA.

      1. Not really. MAME games are stored as a “driver”, which is a specification of what chips are used and what addresses they’re connected to. MAME has many standard and one-off graphic and sound chips emulated, and most CPUs, as modules that are loaded up and connected to each other at runtime.

        So you’d just need to copy that. Write a script that converts MAME-standard specs into VHDL or whatever consisting of pre-made modules, one for each of the possible chips, with the other info included. Use a block RAM or an external ROM chip loaded with the game data. Then just compile, or whatever compiling is called with FPGAs, and go!

        Doesn’t sound that hard in theory. It’s what MAME does in software. I bet most of the chips MAME supports have free VHDL or Verilog versions out there for free.

        The issue of the Neo Geo might be harder, it has powerful graphics chips. Then again if it’s been emulated (and it has), then the details must be online.

    1. It would be interesting to see if the Neo Geo has any custom ICs. I would think those are the major hurdles in converting to FPGA. The newer stuff is getting to be more and more impossible to know what the circuitry is unless you have the original design documents from the original designer for the custom parts. And good luck with that. Most of the old 70’s and 80’s hardware is so neat because it’s made mostly with standard parts.

  5. The cost of FPGA development can be hard for a hobbyist to get around. The hardware can cost a lot and then you have the software to consider and possibly the need for a specialized programmer for just FPGA.

    My solution was to keep looking on ebay. You don’t have to have the latest and greatest stuff to get started. I use a FPGA , cyclone II, that I got for $25 on a breakout board. For programming I use a 3rd party altera bus blaster for $20. Software , is altera quartus, free version.

    Once you start to use FPGA and see what they can do you probably will wonder why you waited so long.

    1. Good FPGA development boards really aren’t all that expensive! A Digilent Basys-2 or Terasic DE0-Nano (depending on whether you’re into Xilinx or Altera) will run you $80; both of them have onboard USB programmers and configuration flash, as well as some handy peripherals (including a some LEDs on both, a VGA port and some buttons/switches on the Basys, and 32 MB SRAM on the DE0-Nano).

      Granted, $80 is a bit more than the $45 you spent, but it’s well worth it.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.