Have you ever wondered what exactly is inside those retro game cartirdges (ROMs)? In this post we will find out the purpose of ROM cartridges and how they worked.
Cartridges are not the only format available to distrubute games for consoles, with other popular alternatives being CDs, Floppy Discs and Cassettes.
Cartridges have the benefit of being able to include custom chips to make the hardware more capable. One example is games that came with additional RAM right inside the cartridge 1.
One of the most famous was the SuperFX chip included in games like Starfox or Stunt Race FX which allowed the Super Nintendo to do 3D polygon rendering 1.
Super Mario RPG also contains a chip called the SA-1 which contains a CPU core similar to the core inside the SNES.
Although most early games consoles only allowed cartridge based games, PCs had multiple options for loading games such as floppy discs and cassettes.
One advantage to cartridges on PC however was they were much harder to pirate than floppy based games 1.
Another advantage is there loading time, there is very little loading time for cartridges as the memory is directly read from the cartridge rather than having to copy floppy content into RAM first.
Loading time was much lower on cartridges as the memory was immediately available from a ROM chip.
However the cost of cartridges was much higher and the amount of memory was much lower on cartridges, with an average CD holding 700mb, the equivalent cartridge would be far too expensive to mass produce.
NES carts actually contain a minimum 2 ROM chips inside them 2.
This is due to them splitting the code and graphical data into two distinct ROM chips inside the cartridge.
This means that the graphics ROM chip can be directly connected to the GPU itself and the code ROM can be directly connected to the CPU.
The two ROMs in the cartridge are:
The Nintendo Game Boy was one of the first handheld systems that featured inter-changable cartridges 3.
Only 32KB of the cartridge ROM is available to the CPU at any one time, early games such as Tetris were only 32KB so this wasn’t a problem.
But ROM cartridges could be up to 8MB by using a Memory Bank Controller which implemented a feature called Bank Switching. For example about 80% of games used MBC1 (Memory Bank Controller 1) which provided 125 ROM banks and 32KB of RAM.
Bank Switching was not unique to the Game Boy as it had also been used on other cartridge-based systems such as the Nintendo Entertainment System.
On the Game Boy it is implmented using two 16KB banks, Bank 0 is static and always points to the first bank in the Cartridge ROM and the second bank could be switched to point to any 16KB bank in the entire cartridge ROM.
Mappers are configurations of cartridges to tell the emulator what hardware each cartridge has available. There are hundreds of these as each cartridge could include its own custom hardware in any configuration it wanted.
Bank switching was rarely used for PC games as it was simply cheaper to put games on a floppy disc rather than a cartridge 1. Plus not all early PCs came with cartridge sockets.