Barkeley Ball was my final project for the UC Berkeley class "CS150:
Digital Design Techniques" in Fall, 2009. The game is a version of Pong
where the player controls the position of their paddle by moving a
like-colored card around in front a webcam. The pixel information is
then processed on a Xilinx Virtex V FPGA. The bluescreen
behind the players is replaced with a background that really puts the
players into the game.
Top: Players stand in front of a blue screen.
Bottom: The blue screen is replaced with a background image.
I wrote the game logic, the NES-style sprite
compression, display, and animation algorithms, designed the mini
operating system "PONG-OS", and drew all of the artwork. My class
partner Tony Demarco came up with the game concept, wrote the camera
color tracking algorithms, wrote all the music, and designed the
graphics pipeline. We both designed dozens of finite state machines,
wrote tons of Visio diagrams, and spent too many long nights in the lab
after everyone else was in their warm, comfy beds. We even hid a
microwave in the lab behind a row of disfunctional computer monitors so
we could code long into the night/morning without hunger pains. We wound up
crafting the best project in the class and were awarded over $3,200.00
worth of Xilinx hardware in prizes for our efforts! Watch the video
for more info, but please excuse our atrocious physical appearance and obvious signs of poor hygene.
Xilinx Virtex V Bit File: Barkeley Ball
FPGA, bluescreen studio, and dachshund not included.
Presentation Video: OGG WMV
Tony and I literally spent all Thanksgiving weekend in the lab
finishing the game prior to shooting this video, and we look awful
because of it. Please forgive our physical appearance.
Final Project Report - Revised January, 2011: PDF
It's non-technical, tons of pics and diagrams, and a haiku too! (Like this line) It's a fun read, I promise.
Sprite Sheet: BMP
Feel free to use them for
whatever nefarious purpose you like, but credit the artist. (Me!)
Python Image Conversion Script: image_con.zip
This can be used for compressing bitmap images, or you can use it as a
starting point for writing your own image compression scripts.
Top Left: Title Screen. Top Right: The real Barkeley with his ball.
Bottom Left: Players standing in front of the bluescreen. Bottom Right: The bluescreen replaced with in-game graphics.