

MBC5: max 8MB ROM (512 banks) and/or 128KB RAM (16 banks).MBC3: max 2MB ROM (128 banks) and/or 32KB RAM (4 banks) and Timer.MBC2: max 256KB ROM (16 banks) and 512x4 bits RAM.MBC1: max 2MB ROM (125 banks) and/or up to 32KB RAM.They each possessed different amounts of ROM and RAM. There were 4 (and a half) types of MBCs that cartridges used. Instead of data lines connecting directly to the ROM, they instead go through a memory bank controller that manages manages the bank switching of the ROM and RAM through intercepting read and write commands to certain addresses. Larger games required larger amounts of storage which the Gameboy was not natively able to address.Ĭartridges needing additional capabilities had a lot more going on than Tetris. We can see here how simple the game cartridge is, only requiring the ROM chip with the game code. This types of cartridge could also contain up to 8KB of RAM, mapped to $A000-$BFFF, though it would require an MBC-like circuit to work.Īn example of a game that didn’t use a MBC was Tetris, whose ROM is only 19KB. There was no MBC on these types of cartridges because the entire game would be able to fit on the cartridge. The simplest cartridges simply contained ROM and had only had 32 KBytes of space. ROM and RAM bank switching is controlled by a memory bank controller present on the cartridge.īy writing values to areas of read-only memory, a game or program is able to specify which ROM banks to access when read operations are performed. Here is an image of the memory map for the Gameboy, sourced from Pan Docs. It used a 16 bit address bus, allowing it to access up to 2^16 bytes ( $0000-$FFFF).

The original Gameboy DMG used a CPU similar to the Zilog Z-80. It was used to allow a CPU with a static memory map the ability to address additional data than what would usually be able to be addressed.

Gameboy DMG ROM and RAM Bank Switching |īank switching is a method of switching what data is accessible by a program.
