El C64 soporta nativamente 3 tipos de cartuchos (ROMs):
- Cartucho de 8Kb. El contenido de la ROM se mapea directamente a RAM en $8000 o en $A000.
- Cartucho de 16Kb. Se mapea el ROM de $8000 a $BFFF.
- Cartucho Ultimax. Esto es una cosa rara de compatibilidad con una especie de versión barata que sacaron, que usa poquísima RAM. Se mapea en $8000 y $E000, tapando el KERNAL.
De ese modo, los juegos de cartucho originales eran "pequeños", normalmente arcades antiguos (GORF, Omega Race, Blueprint)...
Más tarde los de OCEAN se curraron sus propios cartuchos, con algo de electrónica adicional y maś tamaño (128 kb, 256kb o incluso 512kb). El C64 los ve como un cartucho de 16Kb más, pero escribiendo en una posición de memoria especial reservada para expansión, se mandan instrucciones al cartucho. Básicamente, lo único que se hace es seleccionar qué dos bancos de 8kb quieres "ver" mapeados en $8000 y $A000. Es decir, puedes tener 256 kilobytes de programa organizados en la ROM del cartucho como 16 bancos de 8Kb.
El juego básicamente va mapeando cada banco según conveniencia. Se puede llenar la memoria inicialmente copiando de la zona $8000-$BFFF al resto de memoria. Dependiendo de cómo este organizado el juego en memoria, luego al cambiar de niveles pues habrá que hacer más copias y cambios de banco.