I Programmed My First Cartridge!

After about 2 months of collecting supplies, programming, and putting it all together, I finally got my first cartridge running on an Atari 2600! The game I put on there is Spider Web which I have been working on off and on for a few months. It is written in 6502 assembly and tested using the Stella emulator. It was so fulfilling to see this code that could theoretically work, actually work on real hardware!

An Unexpected Problem

Once I got my custom built Eeprom programmer to operate consistently and wrote my program to the chip, I threw my chip into a socket on one of my Pixels Past cartridge boards. To my dismay, it was causing the 2600 to display random colors on boot up and eventually go completely black after a few attempts.

I had initially thought that the 27C16 (EPROM) and the 28C16 (EEPROM) were pin-compatible, but after some closer inspection, it turns out that the Write Enable pin is in the same position as A11 (used on 4k chips). When the Atari starts up, its probably setting this pin LOW because it’s beginning the program from the 0x0000 address. Unfortunately, the Write Enable pin is active on LOW, probably causing the Atari to gradually overwrite the bits as it is attempting to run the program. I could confirm this afterwards by reading the ROM image from the chip on my programmer and seeing that many of the bytes had changed to 0x00 or 0xFF.

The Fix

In order to fix this issue, I had to cut the A11 trace to the cartridge slot and add a short jumper to go from WE to VCC (pin 21 to pin 24) on the cartridge PCB. It’s a fairly easy modification, but I wish I had known this before ordering the PCBs to be manufactured.

After rewriting the program to the chip and reinserting it into the cartridge pcb, I had reached success! The game booted up immediately and played exactly like it did in the emulator. I’m pretty stoked about this, and this success is just in time for the Pensacola Mini Maker Faire where I will be showing this project off.

Speaking of, I need to start working on the modifications needed to get 28C256 chips working on my programmer if I want to produce a couple of NES cartridges…

4 thoughts on "I Programmed My First Cartridge!"

  1. Paul says:

    I have a lot of 2516 ones. Tryed to Program it with atari 2k games and all work ok during the program. But when I put the chip in my 4k cartridge pcb it does not work. All others games I programmend (4k or 8k) works fine… But I canĀ“t get 2K games using my 2516 chips. Do you know the matters? Thanks friend.

    1. I would double check the pinout of your 2k chip vs the typical 4k chip on your cartridge PCB. It’s likely that there’s a stray address line pin that is sitting in an unstable position. If you already have access to 4k (e)eprom ICs, I would just use those instead. A common method is to duplicate the bytes of the 2k ROM up to 4k. I forget exactly how to do this, but there’s definitely a command line tool out there than can handle the task. That way, if a high address bit is set for whatever reason, the Atari will still be seeing the same data as the low 2k and think nothing of it.

  2. Dan says:

    Hi, Sir. Greetings from Brazil. I was lucky to found your site and this content. Sir, I’m using a AT28C256 Chip. And I’m trying to develop something like a Arduino Mega 2560 EEPROM Programmer for Atari 2600 games, using different codes. If you need, I can send my sketch to you. I’m using a SD Card Module. The ROM content, goes to a formatted FAT 32 SD card (only one ROM). After open the ROM file into Arduino flash memory, the burning process begin. After burning the ROM into chip, a buzzer plays the PACMAN intro. It’s a alert to show that all the process is done. But reading your content, maybe I’ll buy a AT28C16. Do you please can give me some tips about this project? thank you. Best Regards.

    1. Its been a hot second since I’ve used my hand-built EEPROM programmer. I think if I did need to use it again, I’d probably rethink a lot of it to make it more stable. Using an SD card (or better yet a USB drive for convenience) would be a great solution. Regarding the chip of choice, unless you’re planning on doing some major bank-switching I would just go with the least expensive chips you can find and modify them to do the job. I did eventually end up getting a bundle of 28C256s for a sweet deal from a nearby seller. That’s obviously overkill for the Atari 2600, but a great choice for NES games. Still, if you tie the necessary address lines down, your 2600 will still see it as a 2/4k chip.

Leave a Reply

Your email address will not be published. Required fields are marked *