Introduction
An .a26 file is the contents of the ROM chip of an Atari 2600 (VCS) game cartridge, byte for byte. There is
no header, no signature and no checksum. The console has a 6507 processor, a 6502 with 13 address lines, so it can address
only 8 KiB: the cartridge is seen at $1000-$1FFF (programs are usually written for $F000-$FFFF,
the same 4 KiB seen through the unused address lines). A ROM bigger than 4 KiB has to be bank switched: the
cartridge swaps which part of the ROM is in that window when the program touches certain addresses, the
hotspots.
The file does not say how its ROM is switched, and the size is not always enough to tell. The explorer therefore does not guess: the options bar has a Bank switching choice with a default taken from the size (see Bank-switching schemes), and the default is only a default. The emulators Stella, Gopher2600 and 6502.ts look inside the code for the instruction sequences that touch each scheme’s hotspots; this site does not do that.
The explorer lists every bank, reads the vectors from the bank the machine starts in, and disassembles every bank with the
instruction decoder for the 6502 (an instruction decoded at every byte, laid out in columns). Writes to the TIA, the RIOT
and the scheme’s hotspots appear with their names. The extension .bin is also used for 2600 ROMs, but it
means hundreds of other things on this site, so it is not claimed: open such a file with “Read as” in the explorer.
Structure
0x0000ROM: the program and data, 2, 4, 8, 12, 16, 32 or 64 KiB (more for some schemes)whole fileend − 6Vectors of the last bank: NMI, RESET and IRQ/BRK, three 16-bit little-endian addresses at$1FFA-$1FFF6 bytes
Banks of 4 KiB follow one another in the file; schemes with smaller banks (1 KiB, 2 KiB) are described on Bank-switching schemes. The memory map page lists the TIA and RIOT register names used in the disassembly.
Real files used while the viewer was written: starfield.bin and flapping.bin (4 KiB each, plain
ROMs whose vectors are FF FF 00 F0 00 F0: no NMI use, reset and IRQ at $F000).
The processor
The 6507 decodes exactly like the NMOS 6502; it lacks the interrupt pins and has 13 address lines, so an address wraps at 8 KiB. The explorer decodes with the NMOS 6502 (undocumented opcodes marked) and the options bar can switch to the 65C02 for homebrew on unusual hardware. See the 6502 instruction set.
Not described
Known, not yet covered
- Viewer: the schemes that need more than hotspot addresses: DPC (Pitfall II) chip registers, the Supercharger tape loads and BIOS, and the ARM-based schemes (CDF, DPC+, BF, DF, FA2) that Stella and 6502.ts support. The Supercharger is listed as loads of 8448 bytes without code; the others are not offered. See Bank-switching schemes.
- Viewer: finding the right scheme from the code, as the emulators do. The scheme is a choice; for a 64 KiB ROM the default F0 may be wrong (EF is the other common one).
- Reference: the 2600 memory map beyond the TIA and RIOT names: the mirrors of the TIA at
$40-$7Fand$100-$17Fare listed in words only, and the names are not applied to them in the disassembly. - Viewer: which bytes are code and which are data; every byte of every bank is decoded.
Unknown
- Reference and viewer: no real multi-bank 2600 ROM was available on the machine where these pages were written (only two 4 KiB ROMs), and no source of Stella or z26. The schemes F8, F6, F4, FA, F0, EF, E7, E0, 3F, 3E, FE, UA and 0840 were taken from the code of the 6502.ts emulator and tested on built files only; CV, DPC and the Supercharger were described from general knowledge. Whether a particular ROM really uses the scheme the viewer shows cannot be settled from the file.
Other Atari cartridge formats
These are separate formats, not variants of one: the hardware, the file and the pages differ, and one extension cannot
cover them (.bin is shared by the 2600 and the 5200).
- Atari 2600 ROM image (A26) – raw ROM of the 2600, bank switching chosen by hand
- Atari 7800 ROM image (A78) – a 128-byte header, then the ROM
- Atari 5200 ROM image (A52) – raw ROM with a header at its top
- Atari cartridge file (CAR) – a 16-byte header and a type number, for the 8-bit computers and the 5200
Links
Software
- Stella – Atari 2600 emulator with a debugger (Windows, macOS, Linux)
- Gopher2600 – Atari 2600 emulator and debugger (Windows, macOS, Linux)
- Javatari – Atari 2600 emulator for the browser (JavaScript)
- DASM – 6502 macro assembler used for most 2600 homebrew (Windows, macOS, Linux)
Developers
- 6502.ts – 6502 and Atari 2600 emulator whose cartridge code was read for these pages (TypeScript)
Reference
- Atari 2600 Specifications – Martin Korth’s hardware notes, with the TIA and RIOT registers
- Atari Compendium – articles and documents about Atari machines