Bank-switching is a process that allows the '2600 to access more memory (RAM and/or ROM) on a cartridge than is normally available to the processor.
Signatures
Some emulators determine the bankswitching scheme used by a ROM by checking the ROM for 'signature' bytes. Modern homebrews add a short known string of signature bytes to assist emulators in this detection process. Where a signature is listed in a bankswitching description, inclusion of that sequence anywhere in your ROM will help emulators auto-detect the bankswitching scheme the ROM is using.
Signatures are sometimes shown as a human-readable string of ASCII characters (for example, BF scheme uses "BFBF"). In these cases the associated ASCII values would appear in the ROM (i.e., $42, $46, $42, $46).
Non-Bankswitching Schemes
Bank-switch Schemes
It is not necessarily better to have larger amounts of ROM and/or RAM. It is how accessible the data is - for example, how many segments in the address space are switchable, which are fixed, the relative sizes, etc. Choosing an appropriate bankswitching scheme for your game needs to take all of these into account.
In the table, the amount of RAM is addition to the default 128 bytes at $80 - $FF.
NAME | ROM Size | RAM Size | Signature (HEX values) |
0840 | 8K | 2 x [(AD 00 08) or (AD 40 08) or (0C 00 08)] or 2 x [(0C 00 08 4C) or (0C FF 0F 4C)] | |
3E | 480K | 32K | (85 3E) sta $3E or (85 3F) sta $3F |
3E+ | 64K | 32K | (54 4A 33 45) TJ3E |
3EX | 64K? | 256K | |
3F | 512K | (85 3F) sta $3F | |
4A501 | |||
4KSC | 4K | 128 bytes | The first 256 bytes are identical, and (53 43) SC at $1FFA. |
AR | 2K | 6K | |
BF | 256K | (42 46 42 46) BFBF | |
BFSC | 256K | 128 bytes | |
BUS2 | 28K | 4K | |
CDFJ | 32K | 8K | |
CDFJ+ | 64/128/256/512K | 16/32K | |
CM | |||
CTY/Chetiry | 28K (+4K ARM) | 64 bytes | |
CV | 4K (2K usable) | 1K | |
DPC+ | 28K (+4K ARM) | 4K | |
DF | 128K | ||
DFSC | 128K | 128 bytes | |
DPC | 8K (+ 2K Display Data) | ||
E0 | 8K | ||
E7 | upto 16K | 1K + (4) 256 byte pages | |
EF | 64K | ||
EFSC | |||
F0 | |||
F4 | 32K | ||
F4SC | 32K | 128 bytes | The first 256 bytes are identical, and (53 43) SC at $1FFA. |
F6 | 16K | ||
F6SC | 16K | 128 bytes | The first 256 bytes are identical, and (53 43) SC at $1FFA. |
F8 | 8K | ||
F8SC | 8K | 128 bytes | The first 256 bytes are identical, and (53 43) SC at $1FFA. |
FA | 12K | 256 bytes | The first 512 bytes are identical. |
FA2 | |||
FE | |||
MDM | |||
SB | 128K-256K | ||
SCABS | |||
Tigervision | 8K | ||
TV Boy | |||
UA | |||
WD | |||
X07 |
Notes:
(1) 4A50 - Very complex. See the description.
(2) BUS - Experimental. Complex and hard to summarise; see the description.
Relevant
see RAM access without RW line
see Kevin Horton's Guide
see Atari Bank Switching for Dummies