High Level Design

Our game design was centered around the Atmel Mega163 microcontroller. Our goal of creating a feature-packed video game demanded more memory than was available on the Atmel 90s8515 MCU. The extra timer also came in handy. The project can be split into the following parts:

The game

The game code had to be both memory-conservative and efficient, since the Mega163 isn't a Pentium IV. One of our design goals was to pack as many features as possible into the game (multiplayer, lots of graphics, lots of user interaction, scorekeeping, etc.) and the Mega163 only had 16K of FLASH memory.

Graphics

For graphics we settled on the Seiko G321D 320X200 Monochrome LCD display with the built-in SED1330F controller. It has proven to be a solid performer in past projects and we needed a reliable display that is large enough to play the game comfortably and still display all game status information.

Control

Initially we planned to build our own control pad for the game, but most prototype models were ugly and not very functional. Instead, we bought a couple Sega Genesis (Megadrive) controllers from eBay and they were more than adequate for the project. In addition to their ergonomic design, they had the added advantage of using a CMOS switch / Multiplexer design instead of a using a serial interface, which made the software controls much easier.

Sound

To produce sound we produced a 64-sample sine wave through a DAC and a low-pass filther using a port on the sound board. We came up with a method to encode, store and play music for the MCU. Since we cannot use the serial UART for communication (taken for the 2 player game) we needed to create a communication scheme for the game and the sound boards.