The Atari 2600 is by far my favorite game console. It’s the first game console I owned, passed down from my father to me. It was a temperamental machine, the only game it ever played reliably was Space Cavern. I remember coming home from grade school and playing it upstairs on our old tube TV for hours. On the playground I tried to weave it into conversations about the more contemporary game consoles of the era, but I was always met with weird looks. Of course, I knew the system was ancient, but I was disappointed that nobody else was even interested in it in the slightest. After many years of play, I finally upgraded to a newer console and shelved the old 2600 in the garage.
Years later I began studying computer engineering in college and I was curious as to how the 2600 functioned under the hood. Since it was from the 1970’s, I figured it was probably pretty limited. It turned out limited was an understatement.
I was amazed to learn that system has no video RAM, and therefore, no frame buffer. Each individual pixel has to be drawn one by one by the CPU as it the appeared on the screen. Even worse, the CPU variant that Atari chose had no interrupt pin, so the 2600 can’t be doing anything else while it’s performing the time-sensitive drawing task. If you want to do game logic, you do it in the blanking periods of the composite video signal when nothing was being drawn on the screen. These limitations were born from cost cutting measures. RAM is expensive, and so are fully featured CPUs. The 2600 was just a game console after all, and Atari passed on the task of dealing with these limitations on to the programmers. They would suffer instead as the consumer enjoyed an affordable system.
I wanted to do some kind of hardware project with the 2600, and of course came across the famous Atari 2600 Portable by the venerable Ben Heck (we do have nearly the same last name after all). He discovered that it was actually pretty easy to hack down the 2600 to a tiny form factor and run it off of battery power. While the end result wasn’t exactly pocket sized, it was small enough to fit into a backpack. I studied the 2600 schematic and realized that I could probably make the system even smaller if I redesigned the board to use modern surface mount components. Better yet, the brains of the 2600 (The CPU, RIOT, and TIA) could easily be pulled out of their sockets and plugged into my new board, no difficult desoldering required.
Some early designs of the board had a landscape form factor, with controls on either side of an LCD screen. While this design was more comfortable to hold, I eventually abandoned it as I couldn’t fit it into a 10cm x 10cm area. I like to use Elecrow for my PCB manufacturing, and anything larger than 10cm in either dimension puts me outside of their “cheap” tier for PCB fabrication. Like the Atari engineers, I am also bound by cost.
I eventually settled on this form factor. In terms of input contains a d-pad, fire button, paddle, select, start, on/off, difficulty, and pause switch. I implemented the pause feature using the circuit published by Victor Trucco on his website, the original 2600 could not pause games. I also used the Powerboost 1000C circuit by Adafruit for battery and power management.
I settled on the name TinyTari Portable, or just TinyTari. I was originally going to call it the PortaTari but that sounded too much like Porta Potty.
This is the PCB that the wonderfully affordable Elecrow sent me in the mail. Nearly all the components are surface mount, so I had to assemble them with solder paste in my reflow oven.
After I verified that the power circuitry worked, I went through and assembled the actual 2600 circuitry.
Amazingly, it worked* on the first try! That never happens!
Well, it kind of worked. There are a couple of things that needed to be fixed:
- The power circuitry doesn’t power the system for some reason and drops to 4.0v while in use. The battery is charged and the system is only drawing 500mA, so I’m not sure why this is.
- The sound doesn’t work. I have a feeling there’s something wrong in the circuit near the volume knob.
- Up on the d-pad is down and down on the d-pad is up. Doh!
These issues need to be fixed in the next board revision. I’m currently pretty busy with school and my internship, so I’ll probably pick this project back up in the winter while I’m on Christmas break. Until then, I’ll probably keep working on it here and there when I have time.
I’ll post more updates to this page as I work on it. Until then, all information is posted on my GitHub. The entire project is licensed as Creative Commons Attribution, Share-Alike license.