Gameboy Hardware Specs and Memory Layout

On going write up of important information about the Gameboy system.

Hardware Specs

CPU Z80
Clock ~4.2 MHz -> 0.238 us
Work RAM 8 kB
Resolution 160x144 (20x18 tiles)
Max Sprites 40 per screen, 10 per line
Sprite Size 8x8, 8x16
Palettes 1x4 BG, 2x3 OBJ
Colors 4 gray shades
Sound 4 channel with stereo

Gameboy CPU memory map overview

Address Range Description
$FFFF Interrupt Enable Flags
$FF80 - $FFFE High RAM
$FF00 - $FF7F Hardware IO Registers
$FEA0 - $FEFF Unusable Memory
$FE00 - FE9F OAM (Object Attribute Memory)
$E000 - $FDFF Echo RAM - Do not use
$D000 - $DFFF Internal RAM Banks 1-7 switchable
$C000 - $CFFF Internal RAM Bank 0 Fixed
$A000 - $BFFF Cartridge RAM (if available)
$9C00 - $9FFF Background Map Data 2
$9800 - $9BFF Background Map Data 1
$8000 - $97FF Character RAM
$4000 - $7FFF Cartridge ROM switchable
$0150 - $3FFF Cartridge ROM Bank 0 fixed
$0100 - $014F Cartridge Header
$0000 - 00FF Interrupt vectors

Interrupt Enable Flags

Bit# Description
7
6
5
4 Joypad
3 Serial
2 Timer
1 LCD STAT
0 V-Blank

Hardware IO Registers

Interrupt Flag Register $FF0F

Bit# Description
7
6
5
4 Joypad
3 Serial
2 Timer
1 LCD STAT
0 V-Blank

Joy Pad Register $FF00

Bit# Description
7 Not used
6 Not used
5 P15 out port
4 P14 out port
3 P13 in port
2 P12 int port
1 P11 in port
0 P10 in port

Include a diagram of the joypad matrix

Cartridge Header

Address Range Description
$014E - $014F Checksum
$014D Complement Checksum
$014C Mask ROM Version
$014B Old License Code
$014A Destination Code
$0149 Cartridge RAM Size
$0148 Cartridge ROM Size
$0147 Cartridge Type
$0146 SGB Compatability
$0144 - $0145 New License Code
$0143 Color Compatability
$013F - $0142 Game Destination
$0134 - $013E Game Title
$0104 - $0133 Nintendo Logo
$0100 - $0103 NOP / JP $0150

Cartridge RAM Size

Value Description
$00 None
$01 2 kB
$02 8 kB
$03 32 kB

Cartridge ROM Size

Value Description
$00 32 kB (no banking)
$01 64 kB (4 banks)
$02 128 kB (8 banks)
$03 256 kB (16 banks)
$04 512 kB (32 banks)
$05 1 MB (64 banks)
$06 2 MB (128 banks)
$07 4 Mb (256 banks)
$52 1.1 Mb (72 banks)
$53 1.2 Mb (80 banks)
$54 1.5 Mb (96 banks)

Cartridge Type

Value Description
$00 ROM Only
$01 MBC1
$02 MBC1 + RAM
$03 MBC1 + RAM + BAT
$05 MBC2
$06 MBC2 + BAT
$08 ROM + RAM
$09 ROM + RAM + BAT
$0F MBC3 + Timer + BAT
$10 MBC3 + RAM + Timer + BAT
$11 MBC3
$12 MBC3 + RAM
$13 MBC3 + RAM + BAT
$15 MBC4
$16 MBC4 + RAM
$17 MBC4 + RAM + BAT
$19 MBC5
$1A MBC5 + RAM
$1B MBC5 + RAM + BAT

There are more types, however I will leave it here for now.

Interrupt Vectors

Interrupt Priority Vector
V-Blank 1 0x0040
LCDC STAT 2 0x0048
Timer Overflow 3 0x0050
Serial Transfer Complete 4 0x0058
Joypad 5 0x0060