# FF41 - STAT - LCDステータスレジスタ (R/W) ``` Bit 0-1 R モード 0b00: HBlank中 0b01: VBlank中 0b10: OAMスキャン 0b11: 画面描画中 2 R LYC == LY一致フラグ 3 R/W モード0 H-Blank割り込み (1 = 有効) 4 R/W モード1 V-Blank割り込み (1 = 有効) 5 R/W モード2 OAM割り込み (1 = 有効) 6 R/W LYC = LY一致割り込み (1 = 有効) ``` `STAT.2`は、LYがLYCと同じ値を含む場合にセットされます。このbitはリアルタイムで更新されます。 `STAT.3-6`はどのソース(イベント)がSTAT割り込みを起こしているかを表しています。 LCDコントローラは、`2^22Hz = 4.194MHz` のドットクロックで動作します。 ドット(dot)とは、PPUが1つのピクセルを出力できる最短期間のことです。ドットクロックが4.194MHzなので、DMGやCGBの通常速モードでは1クロックサイクル、CGBの倍速モードでは2クロックサイクルに相当します。モード3の各ドットでは、PPUがピクセルを出力しているか、フェッチャーがFIFOをストールさせているかのどちらかです。 フレーム全体では、154スキャンライン、70224ドット、16.74msとなります。 スキャンライン0\~143では、PPUは456ドットごとにモード2,3,0を循環させます。スキャンライン144\~153はモード1(VBlank)です。 ``` Mode 2 2_____|2_____|2_____|2_____|2_____|2_____|______________|2____ Mode 3 _33___|_33___|_33___|_33___|_33___|_33___|______________|_3___ Mode 0 ___000|___000|___000|___000|___000|___000|______________|__000 Mode 1 ______|______|______|______|______|______|11111111111111|_____ ``` PPUがグラフィック用のメモリを読み込んでいるとき、そのメモリ部分にはCPUからアクセスできません。 モード2,3では,CPUはOAM(`0xFE00..FE9F`)にアクセスできません。さらに、モード3では、VRAMおよびCGBパレットデータ(`FF69,FF6B`)へのアクセスはできません。