L1: PAST PROJECTS
18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2011 BILL NACE Administrative Stuff
Teams are / should be formed
Project Ideas due Wednesday
Lab1 due Wednesday Getting started
Project Proposal Presentations on Monday, 10 Sep Youtube presentations
18-545: FALL 2011 2 Project Proposal
What do you plan to do? Game description and how it covers the requirements Graphics, sound, user input, multi-player, scoring, fun Hardware / Software plan Architecture, block diagram Peripherals? Software functions Description of major tasks, who is doing them
18-545: FALL 2011 3 Proposal (2)
Schedule Who’s doing what, when When each major task will be complete Milestones for each person
Resources What outside resources you need What you’ll use them for Pointers to the resources
I understand this is all very preliminary and won’t hold you to the details Major deviations will require discussions with me and my approval
18-545: FALL 2011 4 Lab machines - your machines
You have accounts on machines in the lab
You should be able to sudo using your own password DON'T DO ANYTHING STUPID If you break/compromise the machine, it will be wiped and reinstalled Don't change root password or add any root ssh keys Don't add accounts without asking me/gripe
Install software at /usr/local, /opt or /home Don't overwrite any base installed software
18-545: FALL 2011 5 Today: Previous Projects
This is the 7th iteration of this course
First 2 years were taught by Prof Ken Mai I’m copying his descriptions and advice here
2008 - 2011 project descriptions are by me
All previous final reports are on webpage
18-545: FALL 2011 6 VR Pacman
3D Pacman OpenGL on workstation Board handled game
VR helmet display Viewpoint tracking Not stereoscopic
Full-body swivel control Hacked mouse + deskchair Every Extend
Every Extend clone Self-contained
Playstation 2 controller Parallel port interface
Most complete game of 06 High score Game modes Bosses Bomberman
Bomberman clone Ported SDL lib to board Had SDL Bomberman implementation Moved performance critical portions of SDL library to hardware
Sega Genesis controllers Simple interface
SDL = Simple DirectMedia Layer, a cross-platform open-source multimedia C library NES (06, 07)
NES clone Bit-for-bit full hardware implementation Very ambitious
Much of the system working Picture processor Controller interface Toy application
Bitten by … Verification Unit interfacing Team dynamics Graphics Processor
OpenGL GPU GPU on board Application sends OpenGL calls to board via ethernet
Rendered a colored triangle
OpenGL Ethernet Instruction software Fetch Unit BRAM code Bitten by … Board capacity
Frame buffer Instruction BRAM Decoder Time Asking for help too late Triangle Coordinate Rasterization Transformation Inexperience Pipeline Pipeline VGA Physics Processor
Hardware physics processor Similar to Ageia design Board tracks objects Workstation handles game
PPU working Only toy application Some issues with fitting design on board
Bitten by … Team dynamics Team dynamics Team dynamics Networked Tetris
Multi-player Tetris 2 players/board Networked boards Most of game in hardware
Working game Score Networking
Bitten by … Not too ambitious Quake
Port of 1996 PC game Quake 3D first person shooter Open-sourced in 1999
Running entirely on FPGA Full input, sound, video, and networking support Hardware FPU
Networked 3 boards + PC together in public demo Guitar Hero
Port of Guitar Hero console game
Used open-source Frets on Fire for starting code base
Guitar (PS2 controller) interfaced through parallel port
Most issues in synching sound, video, and controller
Limited song library Did not automate song input 2008 Projects
Descent (i.e. Vertigo)
NanoSeige
“Xilroids” i.e. Asteroids with a Wii
NES Descent
3D first-person shooter 6 degree-of-freedom play Released on 1995 Source released in 1997
Ported PhysicsFS and SDL libraries Networking and music never completed Otherwise complete game
Success due to: Reading Pentium Chronicles NanoSeige
Designed own game Wanted massively parallel hardware accelerated game Something of an abstract real- time strategy game
Worked hard all semester, declared victory with whatever they had built
Done in by teamwork didn’t follow any advice XilRoids
Initially tried to build “Maelstrom” a 1993 clone of Asteroids
Ran into difficulty, decided to reset Designed their own asteroids variant Used Wiimote for user input
Done in by Decision to reset NES (2008)
NES Clone Full hardware implementation Controller peripherals “Virtual” cartridge interface Used ROM images of Bomberman, Tetris Sound limited to single channel
Successful because Worked to personal strengths Relentless debugging 2009 Projects
Duck Hunt with WiiMote
GameBoy
MultiWilliams
OpenGL
Quake II
SSD research project (times 2)
Groups had choice of FPGA platform for first time Vertex 2 Pro, Vertex 5-LX, Vertex 5-FX Duck Hunt w/WiiMote
Simple “point-n-shoot” game Using WiiMote, initially via straight connection “Settled” for connect via separate laptop running java program to convert
Programmed game “from scratch” as a clone
Moderately successful Flexible process Stayed with Vertex 2 Pro board GameBoy
8-bit handheld console from very late ‘80s
Original attempt was for GB Color with link cable for multi-player Settled for original GB
Incomplete DMA implementation led to graphic corruption No sound, link cable MultiWilliams
Williams was an arcade manufacturer in ‘80s Defender, Joust, Stargate, Robotron, others
MultiWilliams emulates all 4 But very different architecture among games
Built really nice input platform
Vertex 2 Pro
Done in by: Didn’t face complexity OpenGL
Another attempt to build OpenGL render pipeline Fixed-point version due to FPGA fabric limitations 1) Fixed-function pipeline 2) custom-designed VLIW processor custom micro-assembler
Done in by: Switched platforms mid-stream to Vertex-5 Quake II
Quake II is a FPS from 97 Code is open sourced
Commercial Linux distro on FPGA
No sound
Vector coprocessor
Done in by: Switching platform to Vertex-5 SSD Research Projects
Build a SSD controller for DIMM flash chips Include AES encryption
Two teams attempted
Got flash DIMM built
Got some communication via PCIE to host computer
Never got the rest put together
Vertex 5-LX boards
Done in by: Team issues Willingness to be behind schedule 2010 Projects
OpenGL GPU (take 3!)
Super NES
SSD (again)
Virtex Squared
XilDoom
Groups had choice of platform (V2Pro, V5LX, V5FX) and were given minimal "hand-holding" with the toolchain
18-545: FALL 2011 28 OpenGL Accelerator
Hardware pipelined Input was pre-compiled sequence of OpenGL commands in a file on the CF card non-interactive Moderate framerate at low triangle count No z-buffer Done in by: Took too long to make decisions
18-545: FALL 2011 29 Super NES
16-bit console from early 90s
Hunted down CPU Verilog from the company that originally manufactured it Cool! Very legal
Done in by Integration! 4 individual chip descriptions. Didn't work together. Testing strategy relied on integrated system, so no proof the chips worked individually SSD (Again)
Didn't work 'nuff said
Done in by Teamwork Teamwork Relying on past work Ver tex Squared
Designed their own ARM-like CPU Integrated with 18-447 Multi-bus, not particularly fast
Then got a small musical rhythm game running on it
Success due to: Lots of hard work Smart use of tools
18-545: FALL 2011 32 XilDoom
Quintessential FPS
1993! More popular than Windows '95
Open sourced in 97 Used Chocolate Doom
Reasonably successful No networking or sound 2011 Projects
Duck Hunt
Haxorus
Sidekick
Commodore 64
18-545: FALL 2011 34 Duck Hunt
Yet another version of the classic game Shoot at ducks as they fly in somewhat random patterns
Custom MIPS CPU
Custom Unix-like kernel
Custom Duck Hunt source (C)
Done in by: Integration Team dynamics -- one member went AWOL. Nobody noticed Didn’t hold each other accountable for missing deadlines Haxorus
Music visualizer Input from iPod, output to speaker Render shapes to video
Kinect to detect control gestures Change colors, shapes, etc
Reasons for Success Not entirely certain, as I didn’t really see it coming Somehow overcame lots of team dynamics issues
HTTP://WWW.YOUTUBE.COM/WATCH?V=RR-UGS8EPH0&FEATURE=YOUTU.BE Sidekick
At start: Image cross-correlation algorithm for Lunar X Match images to lunar maps
At end: PCIE peripheral for image processing Move data quickly to FPGA for acceleration
Done in by Relying on grad student code
Saved by Timely pivot to build something useful Commodore 64
Creative “4th path” to building a video game -- build the microcomputer Commodore 64 is the most popular microcomputer in history
Wrote each of the 3 main chips in Verilog/VHDL 6510 CPU, Vic II video unit, sound chip (Yes! Sound!!)
Got games running: Galaxian, Mario’s Brewery, Centipede, Pac-Man (sort of), Frogger (sort of), BASIC interpreter
Reasons for success Did everything right Project Choice
Choose wisely Research available assets (code, manuals, schematics, etc) Dig through project reports from past projects Some are well-written and will provide advice
18-545: FALL 2011 39