Game Boy Color Image
The Game Boy Color builds its picture from 8×8 tiles, the same two-bit tiles as the Game Boy, but held across two banks of video RAM and coloured through eight background palettes of fifteen bit colour. A background layer and a window layer draw them, each cell picking a palette through the attribute map. This page covers the tile data, the banks, and the colour.
Overview
The screen is 160×144 pixels, 20×18 tiles. Every tile is 8×8 pixels at two bits a pixel, sixteen bytes, the same format the Game Boy uses. The Color holds two 8 KB video RAM banks, so twice as many tiles fit, and it colours a tile through a background palette chosen per cell rather than one grey ramp for the whole screen.
| Property | Value |
|---|---|
| Screen | 160 × 144 pixels, 20 × 18 tiles |
| Tile | 8 × 8 pixels, 2 bits a pixel, 16 bytes |
| Video RAM | 2 banks of 8 KB |
| Tiles resident | 512 (256 a bank) |
| Background palettes | 8, of 4 colours each |
| Colour space | 15-bit, 32768 colours |
Tile data and banks
Tile data sits at $8000 in video RAM, sixteen bytes a tile, two bytes a row: the two bytes give the low and high bit of each of the eight pixels, so a pixel is a value from zero to three. Both video RAM banks hold tile data, selected by the VBK register, and a background cell's attribute bit picks which bank its tile comes from. That doubles the tiles a screen draws from to 512.
Colour and palettes
Colour lives in a palette memory, not in the tiles: a tile's two-bit pixels index into one of eight background palettes of four colours. Each colour is fifteen bits, five a channel. The palettes are written through an index and a data port, BCPS and BCPD, which auto-increment so a whole palette streams in. Object colour works the same way through a separate object palette memory.
The background layer
The background is a 32×32 tile map windowed onto the screen and scrolled, its cells coloured and oriented by the parallel attribute map. The Window is a second, non-scrolling tilemap layer over it. Both are described in the Map page; the picture is those maps drawn through the tile data and palettes here.
Display registers
The display control register LCDC turns the layers and objects on and chooses the map and tile-data regions, as on the Game Boy. The Color adds VBK to select the video RAM bank for writes, and the palette ports BCPS/BCPD and OCPS/OCPD for the background and object palettes.
| Register | Use |
|---|---|
| LCDC | Layer and object enable, map and tile-data select. |
| VBK | Video RAM bank for CPU access, 0 or 1. |
| BCPS / BCPD | Background palette index and data, auto-incrementing. |
| OCPS / OCPD | Object palette index and data. |