ゲームボーイカラーの性能表
2026-01-26 作成 福島

諸元

CPU / メモリ
項目内容備考
CPUSharp LR35902 (Z80 互換)8.38MHz の倍速モードあり。
以前のゲームボーイは 4.19MHz
RAM4KB + 4KB × 7 バンク初代ゲームボーイは 4KB + 4KB
VRAM8KB × 2 バンク初代ゲームボーイは 8KB
HRAM127バイトCPU に内蔵

表示
項目内容備考
液晶パネル2.3 インチ反射型 TFT カラー液晶
バックライトなし
解像度160×144 ピクセルタイル 20×18
発色数(背景)*132 色ピクセル 256 × 256、タイル 32 × 32
発色数(スプライト)*124 色最大 40 個表示、水平ライン上に最大 10 個
*1 合計 56 色 (32768 色中)

その他
項目内容備考
シリアル通信赤外線通信ゲームボーイカラーにのみ搭載
後継のアドバンスや SP には非搭載
電源単三乾電池 × 2-

余談 アドバンスと SP について
Z80 互換 変化なし (LR35902)
ARM7DTMI 16.78MHz (32bit RISC)
解像度 240×160 ピクセル
  アドバンス: バックライトなし / SP フロントライト
RAM  256KB (ARM 用) バンクなし / LR35902 では 32KB
VRAM  96KB (ARM 用) バンクなし / LR35902 では 16KB
アドバンス: 単三乾電池 × 2 / SP: リチウムイオン(充電式)

LR35902(命令セット: SM83) と Z80 の違い
種類 SM83  Z80 備考
AF, BC, DE, HL レジスタ-
裏レジスタと EXX 命令--
IX, IY レジスタ--
LDH 命令-FF00 - FFFF のゼロページ用
上位 8 ビットは必ず FFxx だが、RGBDS では省略できない。
HALT 命令割り込み受信まで CPU 停止
STOP 命令-クロックも停止


ゲームボーイカラーのメモリマップ 全 64KB

容量開始終了場所容量名称備考
32KB00003FFFカート
リッジ
16KBROM バンク固定 (バンク 0)
割り込みプログラム 各 8 バイト
 0040: V-Blaink
 0048: Stat
 0050: Timer
 0058: Serial
 0060: Joypad
ユーザプログラムの開始 4 バイト
 0100: nop, jp $0150
カートリッジヘッダ 76 バイト
 0104 - 014F
通常のプログラム開始位置
 0150
40007FFF16KBROM バンクバンク 1~511
[2000] → 下位 8bit と [3000] → 上位 1bit を書き込むことで指定。
16KB80009FFF本体8KBVRAMバンク 0~1 (8KB × 2) [VBK (FF4F)] で切り替え。
 • バンク 0: 初代/カラー共通
 • バンク 1: カラー専用 (色属性等)
A000BFFFカート
リッジ
8KBExternal RAMバンク 0~15 (8KB × 16)
[0000] → 0A と [4000] → (バンク番号) を書き込むことで指定。
8KBC000CFFF本体4KBWRAM固定 (バンク 0)
D000DFFF4KBWRAMバンク 1~7 (4KB × 7) [SVBK (FF70)] で切り替え。
8KBE000FDFF7,680BEchoC000 - DDFF のミラー (使用禁止)
FE00FE9F160BOAMオブジェクト属性 (スプライト情報)
FEA0FEFF96B使用不可
FF00FF7F128BI/O レジスタジョイパッド・シリアル通信・タイマー・サウンド等
FF00: P1/Joypad
FF04: DIV 常にカウントアップされる
FF05: TIMA タイマー
FF0F: IF 割り込みリクエスト
FF10 - FF26: Sound 音源制御
FF40: LCDC 画面表示の ON/OFF、背景/スプライトの有効化
FF42 - FF45: 画面スクロール位置、現在の描画ライン数
FF46: DMV OAM (スプライトメモリ) への一括転送開始
FF47: DMG 専用: BG パレットデータ
FF48: DMG 専用: OBJ0 パレットデータ
FF49: DMG 専用: OBJ1 パレットデータ
FF4D: KEY1 倍速モードへの切り替え準備*2
FF4F: VBK VRAM バンクの切り替え
FF68: CGB 専用: BG パレット - アドレス (0 - 63: 32 色)
FF69: CGB 専用: BG パレット - 色情報 Low, High
FF6A: CGB 専用: OBJ パレット - アドレス (0 - 63: 32 色)
FF6B: CGB 専用: OBJ パレット - 色情報 Low, High
FF70: SVGK WRAM バンクの切り替え
FF80FFFE127BHRAMゼロページ (小規模スタック)
FFFF1BIE レジスタ
7 - 543210
未使用JoypadSerialTimerStatV-Blank
未使用スリープ
解除用
通信ポート
データ転送完了
タイマ(FF05)
オーバーフロー
走査線
指定到達
走査線
ブランク開始

ゲームボーイカラーは電源を ON すると 0000 からプログラムが起動する。
このときカートリッジは無効にされたまま本体の ROM で初期処理 (ロゴの表示等) を実行する。

本体の ROM が初期処理を終了すると、カートリッジが有効になるとともに 0100 へ制御が遷移する。
つまり、プログラムは 0100 から開始するように作成する。

*2 倍速モードの切り替え。
 ld a, $01
 ld ($FF4D), a ; KEY1 レジスタのビット 0 を 1 にして「切り替え準備」
 stop ; ここでモードが反転(倍速 / 通常)→ CPU が再起動しモード変更
 ld a, ($FF4D) ; FF4D のビット 7: 0 通常 / 1 倍速

VRAM (8000-9FFF) の役割とアクセス
アドレスVRAM
バンク
容量内容備考
8000 - 97FF06KBタイル 384 枚 (1 タイル: 8×8 ピクセル = 1Byte×8×2 バイト)初代 / カラー共通
9800 - 9BFF1KBタイルマップ 0 32×32 タイル
9C00 - 9FFF1KBタイルマップ 1 32×32 タイル
8000 - 97FF16KBタイル 384 枚 (追加タイルデータ)カラー専用
9800 - 9BFF1KB属性マップ 0 32×32 属性
9C00 - 9FFF1KB属性マップ 1 32×32 属性
VBK (FF4F) に $00 (or $01) を書き込むことにより VRAM バンクを切り替えてアクセスする。
LCDC (FF40) によって タイルマップ&属性マップ の 0/1 どちらを使用するか指定する。(bit3: 背景用、bit6: ウィンドウ用)
PPU (Picture Processing Unit) は、バンク 0 と 1 を同時にアクセスして表示を行う。

属性マップ 0,1 の内容
76543210
OBJ に対する背景の優先順位上下反転左右反転未使用VRAM バンクパレット番号 0~7