Our circuit is straightforward in design and should be reproducible using standard components. We developed our project on the Atmel ATSTK500 development board, though our end result is self contained on a single solderboard. The main components that we needed were the ATmega32 microcontroller, a simple Digital-to-Analog Converter (DAC) for video output, and two game controllers for input.
The video signal is based on the RS-170 standard so there is a single waveform that is used to control both timing and luminance by varying the voltage. There are three voltage levels: white (1 V), black (0.3 V), and sync (0 V).
The video DAC
One pin of PORTD (configured as output) is used to generate the black/white output, while the other is used to generate sync pulses. A DAC combines the signals for output to the TV. The design for the DAC comes from Bruce Land's ECE 476 lab assignments.
To use the gamepads, we had to find a pinout of the DB9 connector. Several past design projects for ECE 476 made use of these controllers so it was easy to find. The pinout along with assignments appears below.
The controller has eight buttons, but only 6 wires for reading buttons. A mux select line allows the other two buttons to be read. Since we only needed six buttons, we tied the select line to high. The gamepad is powered directly from the 5V supply.
In our original design, we planned on using a Seiko G321D LCD panel with an SED1330F controller. The LCD panel/controller was used in several past projects with good results. The LCD can be treated as a random access device so the cycles that would have been devoted to generating a video signal would have been saved, allowing us more flexibility with the game design. We constructed a power circuit and interfaced the LCD to the microcontroller without success. After a week of failure, we tested our panel with another group's functioning circuit and found that our panel was defunct. As we had planned in case the LCD did not work, we switched to using TV for video output.