Atari 2600 32-in-1 game selection fun

From Electriki
Jump to navigationJump to search


NOTE: this page is copied here because this is (sort of) electronics-related - the original page is here.

Atari 2600 32-in-1 cartridge game-selection circuitry

This is a short page about me figuring out how game-selection works in a specific Atari 2600 multi-game cartridge.

Fluffy note and pre-background

At times, I experience something resembling stress. This sometimes seems to help:

  1. mentally give the finger to everything and everyone - deadlines be damned
  2. take something apart, and take time to figure out how it works
  3. be amazed - magic is lost, confidence is gained
  4. consider going back to work

Background

Last weekend, we visited a retro-gaming fair in Apeldoorn (NL), which was itself a very nice experience, with many people exhibiting and selling vintage console- and home-computer goodness.

My main reason for going there was to pick up an Atari 2600 / VCS system, because its architecture seems to be compatible with my brain - perhaps in a distant future, I want to experiment programming it.

I left with 2 such systems, and 4 game-cartridges:

  • Frogger (in original box)
  • Space Invaders
  • Adventure
  • a "32 in 1" multi-game cartridge

The latter had me puzzled for a while, wondering how to select from these wonderful games. It turned out that selection is done by turning the console off, then on again. How original. How weird.

So... how does this work?

Physical cartridge

The cartridge itself looks like this:

cartridge still closed

(note the punctured decal, necessary to unscrew front from back)

Impression after opening the enclosure:

cartridge opened

Component-side of PCB, close(r)-up:

PCB front

Backside of PCB:

PCB back

For future reference and because this took just too long to Google, here's the pinout and orientation of the 2600's cartridge-slot:

cartridge-slot pinout

Circuitry

(For reference, see an Atari 2600 Jr schematic or circuitry of a typical 4 kb cartridge, in this case Midnight Magic.)

Chips

As can be seen, there are 3 ICs on the PCB and a few smaller parts. The ICs are:

  • big chip on the bottom: C300438-163 (64k x 8 mask ROM? I couldn't find a datasheet, but see here for something alike - the pinouts of 64 kb EEPROMs/ROMs are mostly similar)
  • small chip, upper left: MC74HC14N hex Schmitt-trigger inverters
  • small chip, upper right: CD4024BCN 7-stage binary counter

ROM pinout:

ROM pinout

4024 (binary counter) pinout:

4024 pinout

("/CP" is the counter-input, and "MR" is the reset-input)

7414 (hex inverters) pinout:

7414 pinout

Power-supply

All cartridge-logic is powered from the 2600's Vcc (5 VDC):

power to logic

(I couldn't read the markings on the electrolytic, and was too lazy to desolder it.)

The diode is to prevent the buffer-cap to interfere with the counter's clock-input - see below.

Game-selection logic

Basically, the 4024 (counter) has a high-active reset-input (tied permanently to ground), and a clock-input. Each falling edge on this input causes the counter to increment.

The clock-input follows Vcc, using a RC-circuit and 2 inverters for filtering. Thus, each time Vcc falls off (i.e. if the 2600 is powered off), the counter increments. The buffer-cap that feeds the cartridge-logic can bridge the time the 2600 is unpowered during each such deliberate powercycle:

game selection counter

There are 32 games of 2 kb each located head to tail in the ROM-data.

The lower 5 bits of the counter-output are used as 5 highest address-bits of the ROM (A11 through A15). The lower 11 bits of the ROM (A0 through A10, 2 kb) thus give the 2600 access to the selected game.

Something weird: chip-select

Some of the 7414's inverters are unused, and have their input tied to ground. One inverter however, sits in between the 2600's chip-select ("CS") output, and the ROM's chip-enable ("CE") input:

use of other inverters

(instead of "cart", "ROM" would have been more clear, but I'm too lazy to redraw/rescan this pic :-)

From what I could see, most ROMs and EPROMs in DIP28-packages have a low-active chip-enable input. Furthermore, the 2600's CS-pin, pin 18 in the cartridge-slot, is really the A12-pin of the 2600's 6507 CPU.

Cartridge ROM lives at 0x1000, as can be seen in this 2600 memory map summary:

    $0000 - $007F: TIA registers
    $0080 - $00FF: RAM
    $0200 - $02FF: RIOT registers
    $1000 - $1FFF: ROM

Thus, addressing a cartridge ROM would drive the CPU's A12 line, and thus CS, high.

Through the aforementioned inverter, this would drive the ROM's CE low - thus active - and everything would Just Work: the ROM would be selected.

But... why is the 2600's chip-select labeled "/CS" (i.e. active low), as seen in the 2600 Jr schematic?

Opening up another cartridge (Space Invaders), only revealed a ROM and literally nothing else. Therefore, either this ROM had an active-high chip-enable, or I don't understand how this can ever work.

"A-ha!" moment may follow shortly, as usual...

Something weird #2: ROM data-line pull-downs

Inside the 32-in-1 cartridge, ROM data-lines are pulled down to ground using 2k resistors. But... only D0 to D5.

Why not all 8 data-pins..?

I read somewhere that due to bugs in software - essentially reading back old values on data-lines - might cause some games to work from ROM, but not when burned to EPROM, due to electrical differences.

Is the ROM used in this cartridge susceptible to such bugs, and did any of the included games contain such bugs, and were the 6 (!) pull-downs placed to fix these?

Really..?

Again, "A-ha!" moment will probably follow later on :-)