MAH PONK: Open Hardware Table Tennis Videogame
I wanted to do something that has a VGA compatible output. I also had an FPGA board lying around and a bad itch to do something useless. With the help of fpga4fun.com, various online Verilog HDL references and VGA timing information I made something that outputs a steady checkerboard picture to a VGA display. That was cool but after a short while the excitement dried out, I needed something more serious. My imagination is quite poor and in a short while I had two paddles on the screen.. And so it began.
How it is done
Oldskool pongs, although they're mostly digital, are quite different from modern video games. The picture is not generated from a memory buffer, like it would be done on a computer. Instead, the video signal is generated in real time by logic circuit implemented in a FPGA chip. In other words it's a big state machine, an automaton, that has R,G,B and sync signals needed by VGA monitor as its outputs. The time required to scan one pixel is 1/25175000th of a second and this is the rate at which the machine is working, perpetually updating its state.
On a typical computer, a program executed by a CPU would run, updating the screen buffer as fast as possible and the display hardware, a videocard, would scan the memory, creating signals for the video monitor. Such method is of course more versatile and since CPU power and memory throughput is of a lesser concern these dayss, it is used in all modern videogames.
Mah Ponk is not a modern videogame.
The PCB for final version is designed in free version of Eagle. I like curvy stuff so the traces are curvy. Curvy traces, hypothetically, have some benefits over straight ones, but in this particular case there is no rationale other than pleasing my eye. I enjoy making my own PCB's, but this circuit has a 144-pin TQFP package with 0.5mm pin pitch. Although making a board for this is still very much possible, it is already on the verge of homemade PCB possibilities. Factory-made boards also offer benefits like plated through-holes and solder mask, which is extremely useful in tight spaces. Fab did a fab job.
Everything is packed into a streamer cartridge protective box which just happened to have the right size. Speaker is mounted on the top lid. Top lid also serves as "sensor panel". Pressure from the lid is passed to PCB-mounted buttons through hot-glue mediators. The speaker is mounted on a top lid, outside it is protected by a piece of tea filter mesh. Two white leds, visible through semi-transparent enclosure, signal about game state and participation of the second human player.
The paddle controllers, that are in fact overglorified potentiometers, are built out of dental floss containers and 40mm knobs from an electronics store. The knobs had small dents that were useless for Mah Ponk, but they were just asking for the LED's to be implanted there. Hot glue is the third and the most important component of Mah Paddles. Everything is connected by regular male-male 3.5mm jack cables. Interestingly enough, game can be played simply by touching the tip of a paddle cable.
Everything turned out to be less solid than desired for a game as eternal as pong, but still sturdy enough to be carried somewhere for a show off. The overall style is eclectic and archaic, I call it steampong.
This is about how much can be told without disclosing the schematics and Verilog code. I'm going to publish the complete design, so check back later to find it here after I fix a couple of flaws in the hardware. Custom hardware is not really necessary, most any FPGA development board or starter kit would do.
This is the prototype filmed. In the gameplay part I play alone against the mighty Robo-Hand. The final version plays identically since it uses the same implementation plus slightly better user interface.
Seen in modern environment, projected or on huge flat panels, this game is known to cause brain ruptures in people who still remember the old times, probably due to the previously unthought of clash of technological eras.
Here are the design files. Verilog HDL core is released under modified BSD license. Schematic and PCB artwork is provided under Creative Commons–Attribution 3.0 license. There is NO WARRANTY OF ANY KIND. It may and will burn your hardware with possible consequences of dramatic proportions if you act irresponsibly. It is YOUR RESPONSIBILITY to make sure that your derived hardware is properly designed and operated safely.
- Verilog HDL Source Code (as of 2007-08-28)
- Eagle project: schematic and PCB
- Mah Ponk schematic in PDF
- VGA timing information on epanorama.net
- All pictures related to Mah Ponk on flickr
- fpga4fun.com is a good place to learn FPGAs
- at17load is a software utility and hardware specs to program AT17 series of configuration devices via Altera ByteBlasterMV (AT17LV512A is used to configure FLEX6000 in this project)
- My retrocomputing project: a Vector-06C home computer recreated in FPGA.