Scotty Hoag
Programmer Portfolio  (209)-298-2622

Barkeley Ball


Top: Players stand in front of a blue screen.
Bottom: The blue screen is replaced with a background image.

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.

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:
This can be used for compressing bitmap images, or you can use it as a starting point for writing your own image compression scripts.

Barkeley Ball fun!
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.

Winners! Left: Tony Demarco, Right: Scotty Hoag.
My partner and I accept the grand prize: A pair of $1700 Xilinx FPGAs!!!