Skip to content

Latest commit

 

History

History
47 lines (41 loc) · 2.03 KB

control.md

File metadata and controls

47 lines (41 loc) · 2.03 KB

BG制御レジスタ

BGモードによっては、タイルやマップの使い方を指定するため、BG制御レジスタを設定します。

背景はBG0~BG3の4枚があり、それぞれに対応するBG制御レジスタがあります。

  0x0400_0008 - BG0CNT - BG0制御レジスタ (R/W) (BGモード 0,1 のみ)
  0x0400_000a - BG1CNT - BG1制御レジスタ (R/W) (BGモード 0,1 のみ)
  0x0400_000c - BG2CNT - BG2制御レジスタ (R/W) (BGモード 0,1,2 のみ)
  0x0400_000e - BG3CNT - BG3制御レジスタ (R/W) (BGモード 0,2 のみ)
  Bit 0-1    BG優先度(0~3, 0=最高)
               優先度が同じBGが複数ある場合はBG0 -> BG3の順に優先(つまりBG0が最優先)
  Bit 2-3    タイルデータ(16KB単位)を置くブロック
               0: 0x0600_0000
               1: 0x0600_4000
               2: 0x0600_8000
               3: 0x0600_C000
  Bit 4-5    未使用(0b00)
  Bit 6      モザイク (0=無効, 1=有効)
  Bit 7      カラーモード
               0: 16/16(16色のパレットが16個)
               1: 256/1(256色のパレットが1個)
  Bit 8-12   マップデータ(2KB単位)を置くブロック (0-31)
               n: 0x0600_0000 + (0x800)*n
  Bit 13     画面オーバーフロー時の挙動 (BG2,3のみ)
               0: Transparent
               1: Wraparound
  Bit 14-15  画面サイズ
              通常時:
                0: 256×256   px
                1: 512x256   px
                2: 256x512   px
                3: 512x512   px
              伸縮回転モード時:
                0: 128x128   px
                1: 256x256   px
                2: 512x512   px
                3: 1024x1024 px

タイルモードでは、VRAMをタイルデータ(16KB単位)とマップデータ(2KB単位)で共有しますので、各データサイズを計算して、アドレスがが互いに重ならないように注意する必要があります。

たとえばタイルブロック番号2、マップ番号16のようにしてはいけません。