Breakout
December 11th, 2006 by BrianMy end of the quarter projects are finally over. I still have an interview with my professor about the video pipeline project tomorrow, but the code is all done and tested. And my processor now has a functioning data cache, which completed the final hardware lab. My game is finished, and my class voted it the best, with “Xtreme Pong” taking second, and an interesting hybrid between Dance Dance Revolution and Simon in third.
The other functioning games were mostly basic Pong implementations. There were a few other interesting ones that people had attempted, but weren’t entirely working. Someone tried Space Invaders, but it’s still being worked on. A Hitchhiker’s Guide-themed Galaga clone was making good progress, until its authors ran into the 768-word instruction memory/256-word data memory limitation and had to start implementing a hardware cache, which unfortunately wasn’t finished in time. My TA was attempting a Trogdor the Burninator implementation, and did some neat high-res animated graphics by adding custom characters to the VGA ROM, but never got the game logic completely working.
Writing games for our boards was a neat idea, because when people ask me what I’m doing in my classes, I can say “I programmed this, and I built the computer that it’s running on mostly from scratch,” which summarizes everything pretty nicely without having to go into the details of how a processor works or what an FPGA chip is. Unfortunately, it’s hard for me to show the game to other people, because not very many people have a Xilinx development board lying around.
Fortunately, C is a very portable language. By adding a wrapper that emulates the memory-mapped I/O in my processor, making a Macintosh port wasn’t too difficult. So, anyone with a Mac can now download and play the game that I wrote for my processor as my CSE378 final project.
Here is the link to download the file. It’s a universal binary and should run on recent versions of Mac OS X.