Without bankswitching technqiues (even for an emulator it matters since the emulator has to replicate the system as perfectly as possible) an Atari 2600 rom can be up to 4k in size. This is a limitation caused by having only 13 address lines on the CPU. The CPU is a 6507 chip, which is for all intents and purposes a 6502 with interrupts disabled and the top 3 address lines cut off. The 6502 (or a later variant of it with a few extra opcodes) is the thing that the NES runs off of, and the Atari 7800 also uses a modified 6502. (6502C iirc, or something like that)
As such, the CPU has an accumulator, the stack pointer, and two index registers (X and Y).
The 2600 also has only 128 bytes of ram total, and the stack shares that ram with program variables. Normally a program starts defining it's variables at the low end, and the Stack utilizes the top and works it's way down. So long as the two never meet, all is good.
With bankswitching, you can increases the size of the rom quite a bit. Common bankswitching techniques that were used back in the day enabled rom sizes of 8k, 16k and 32k. Most early games rarely used more than 4. The later games generally used 16, only a few had bothered with 32k. Additionally Atari had a "super chip" that it could add to the cartridge that would give the programer an extra 128 bytes of ram. (woo!) and it was usable with the bankswitch formats above.
The Krocodile Cartridge I bought from Atari Age a couple years ago supports all those bankswitching formats, plus several others. It also has a unique format that enables a rom size to be as high up as 512k rom + 256k ram. I don't really see anyone bothering to make full use of that format, although it does enable some tricks you otherwise couldn't do.
no subject
Date: 2006-10-22 03:13 pm (UTC)Without bankswitching technqiues (even for an emulator it matters since the emulator has to replicate the system as perfectly as possible) an Atari 2600 rom can be up to 4k in size. This is a limitation caused by having only 13 address lines on the CPU. The CPU is a 6507 chip, which is for all intents and purposes a 6502 with interrupts disabled and the top 3 address lines cut off. The 6502 (or a later variant of it with a few extra opcodes) is the thing that the NES runs off of, and the Atari 7800 also uses a modified 6502. (6502C iirc, or something like that)
As such, the CPU has an accumulator, the stack pointer, and two index registers (X and Y).
The 2600 also has only 128 bytes of ram total, and the stack shares that ram with program variables. Normally a program starts defining it's variables at the low end, and the Stack utilizes the top and works it's way down. So long as the two never meet, all is good.
With bankswitching, you can increases the size of the rom quite a bit. Common bankswitching techniques that were used back in the day enabled rom sizes of 8k, 16k and 32k. Most early games rarely used more than 4. The later games generally used 16, only a few had bothered with 32k. Additionally Atari had a "super chip" that it could add to the cartridge that would give the programer an extra 128 bytes of ram. (woo!) and it was usable with the bankswitch formats above.
The Krocodile Cartridge I bought from Atari Age a couple years ago supports all those bankswitching formats, plus several others. It also has a unique format that enables a rom size to be as high up as 512k rom + 256k ram. I don't really see anyone bothering to make full use of that format, although it does enable some tricks you otherwise couldn't do.
But I rant when I should be sleeping.