<<

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, ’s Brewery, Centipede, Pac-Man (sort of), (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