13 Mayıs 2007 Pazar

ATARI 2600 on FPGA







I've implemented a quite accurate clone of the classic ATARI 2600 console hardware. It runs inside a Xilinx FPGA. I guess you could call this a "homebrew Atari Flashback"!

There are many such FPGA projects on the web that target retro-gaming platforms. Mine stands out in two ways (to the best of my knowledge):

1. For the 2600, it is the first non-commercial project that works to this degree of accuracy (about %95 of the titles I have tried work with no problems or graphical glitches, the rest have just some minor problems that I am now working on to correct) .

2. I have also designed and built the FPGA board that it is running on. This is a project in itself :).

One of the photos above shows the FPGA board (homemade, double-sided, never mind the ugly and messy looks) that contains a Xilinx Spartan3E (XC3S100E-VQ100) FPGA, the smallest one with 100,000 gates. It contains VHDL implementation (fully done by myself) of the 6502 core, the TIA chip and the rest of the supporting chips for the 2600. I program it through the JTAG port using a parallel cable I've built. Also on the board is a Xilinx PROM that can be used to store the FPGA configuration. All of these is powered by three regulators supplying the required voltages.

The FPGA board contains a socketed ~14.32 Mhz clock oscillator that is used to derive the clocks for the CPU and TIA, as well as the video output.

Attached to the board is a small module for outputting NTSC composite video. It contains an 8-bit resistor ladder DAC (on the other side, not shown), whose output is buffered and fed through a FMS6141 (SD Video Filter/Driver IC from Fairchild) and put on the RCA socket. The video is synthesized on the FPGA using a 57.28 Mhz clock derived from the main one using a Xilinx DCM.

Also shown in the photo is a similar and somewhat simpler module I've built for audio output, which contains a 5-bit resistor ladder DAC (the black connector).

The video output is connected to the LCD TV shown on the other two photos. The photos show River Raid and Donkey Kong running. I have several videos of other working games that I'll upload somewhere when I find the time. The video output also works on two other TVs I have tested.

The game ROM image is uploaded to the on-chip RAM of the Xilinx FPGA during configuration. I have also built a flash memory extension that I use to store ROM images that I'll detail in another post.

I haven't interfaced any controllers to the board yet. That is mainly because it was not necessary for testing, since many 2600 titles have demo modes. At the moment, I am in the process of designing a fully-integrated board that will contain all of the hardware here plus controller interfaces and a flash memory chip for game storage.

Hello!

This is Tolga, a 27-year-old computer scientist who spends a lot of time building electronics as a hobby. I've started this blog to write about what I have been doing. I'll be putting here some detailed information and screenshots, especially regarding those projects I have been working on that have something to do with retro-computing/retro-gaming.