Our project displays a 128-by-96-pixel image in 4-bit gray-scale (16 intensities) by using a memory-map compression scheme. The equivalent uncompressed display would require 6-KB of memory (128 × 96 pixels × 4 bits/pixel = 6,144 bytes), but we manage to achieve this in less than 2-KB of memory for a sparse display.
The capabilities of the video system are illustrated by a multiplayer video game. The game is a space shooter using basic velocity-based physics, and controlled by Nintendo Entertainment System (NES) controllers. The system is designed to support 4 players, but in its current not-completely-optimized state, it can only handle 3 players.
Originally, we set out to improve upon several past 476 projects: the classic video game, game controller input, and color video. We wanted to take the basic video game project, apply multiple controller input for multiplayer action, and run it through a more sophisticated color display that offered higher pixel and color resolution using the ATmega32.
We were on track to implement color video, but unfortunately, we were unable to obtain the proper part to connect the NTSC converter due to some confusion with Web site specification sheets. Our original plan was to start with 4 bits per pixel (1 bit per color channel, and 1 bit to set a 50/100-percent multiplier), so moving to a 4-bit gray-scale did not significantly change the software side of the project.
What we have is a system that can display 16 intensities and approximate an image created from a regular image file. The system can also handle multiple ships and projectiles, each with their own velocity calculations, and reliably read input from 4 NES controllers.