ゲームボーイは、 32x32 の大きさの背景マップを使用します。
VRAM の 9800 から 9BFF 、 9C00 から 9FFF の範囲で、 2 つのマップを指定します。
それぞれ、背景とウインドウで使用することができます。
背景マップタイル番号
VRAM の背景タイルマップの領域には、表示するタイルの番号を入れます。
マップのデータは各行 32 バイトで、 32 行分あります。
それぞれのバイトに、タイルの番号を入れます。
タイルの番号は、 8000 から 8FFF または 8800 から 97FF に保存したタイルデータの番号を指定します。
8000 から 8800 の範囲を使用する場合は、タイル番号は 0 から 255 の値を指定します (例: パターン番号 0 は、 8000 のデータを使用する)。
8800 から 97FF の範囲を使用する場合は、タイル番号は -128 から 127 の値を指定します (例: パターン番号 0 は、 9000 のデータを使用する)。
どちらのタイルデータテーブルを使用するかについては、 LCDC レジスタで指定します。
背景マップ属性 (ゲームボーイからモードのみ)
ゲームボーイからモードでは、 VRAM バンク 1 にある、追加の 32x32 バイトのマップを使用します。
このマップのそれぞれのバイトは、 VRAM バンク 0 のタイル番号と関連します。
Bit 0-2 背景パレット番号 (BGP0 から BGP7)
Bit 3 タイル VRAM バンク番号 (0 = バンク 0、 1 = バンク 1)
Bit 4 未使用
Bit 5 水平方向に反転 (0 = 反転しない、 1 = 反転する)
Bit 6 垂直方向に反転 (0 = 反転しない、 1 = 反転する)
Bit 7 背景 - OAM の優先度 (0 = OAM 優先度ビットを使用、 1 = 背景優先)
ビット 7 が 1 の時、背景タイルはスプライトより前に表示されます (OAM メモリの優先度ビットが無視されます)。
LCDC レジスタのビット 0 にはマスター優先度フラグがあり、これによって優先度ビットを 0 にオーバーライドすることができます。
それぞれのタイルは 8x8 ピクセルなので、背景マップは 256x256 ピクセル分のサイズがあります。
このうち、液晶画面サイズの 160x144 ピクセル分が表示されます。
普通の背景 (BG)
SCY と SCX レジスタを使うことで、背景がスクロールできます。
スクロールすることにより、 256x256 サイズのマップの中で、 160x144 サイズの表示範囲を動かすことができます。
背景マップのはみ出た分は、逆方向の端に繋がって表示されます。
ウインドウ
背景の上に、ウインドウを載せて表示することができます。
ウインドウはスクロールできません。表示範囲は、常に左上の位置から始まります。
ウインドウの表示開始位置は、 WX、 WY レジスタでそれぞれ指定します。
画面上の左上の位置は、 WX -7, WY で表されます (7 ピクセル分ずれます)。
ウインドウのタイルは、タイルデータテーブルに配置されています。
タイルデータテーブルは、背景とウインドウで共有されます。
背景とウインドウは、 LCDC レジスタで有効・無効をそれぞれ別に指定できます。
最終更新:2017年08月30日 16:34