Skip to content

Latest commit

 

History

History
38 lines (26 loc) · 1.85 KB

interrupt.md

File metadata and controls

38 lines (26 loc) · 1.85 KB

割り込みとステータス

0x0400_0004 - DISPSTAT - LCDステータス (R/W)

表示ステータスと割り込み制御に関するレジスタです。

HBlankは、VBlank中の画面外のスキャンラインを含め、スキャンラインごとに1回発生します。

bit RW 内容
0 R V-Blankフラグ (1=VBlank)
1 R H-Blankフラグ (1=HBlank)
2 R V-Counterフラグ (1=Match) (set in selected line)
3 RW V-Blank割り込み有効フラグ (1=有効)
4 RW H-Blank割り込み有効フラグ (1=有効)
5 RW V-Counter割り込み有効フラグ (1=有効)
6 R 0, 不使用
7 R 0, 不使用
8-15 RW V-Count設定 (LYC) (0..227)

VBlankフラグはVBlank期間であることを表すフラグで後述のスキャンラインが160~226のときにセットされます。227ではクリアされます。

HBlankフラグはHBlank期間であることを表すフラグで、毎スキャンライン、フラグがトグルされます。

V-Count設定(bit8-15)の値はゲームボーイのLYCとほぼ同じで、その値がVCOUNTレジスタの内容と同じであれば、V-Counterフラグがセットされ(bit2)、(bit5で有効になっていれば)割り込みがリクエストされます。

描画時間はわずか960サイクル(240×4)ですが、H-Blank期間は"0"で合計1006サイクルです。

0x0400_0006 - VCOUNT - スキャンライン (R)

ゲームボーイのLYレジスタとほぼ同じで現在描画されているスキャンライン(画面の行)を示し、この値が(画面にない)160~227の範囲にあるときはVBlank期間であることを示しています。

bit RW 内容
0-7 R 現在のスキャンライン (LY) (0..227)
8 R 0, 不使用
9-15 R 0, 不使用