Skip to content

Latest commit

 

History

History
37 lines (22 loc) · 2.2 KB

keypad.md

File metadata and controls

37 lines (22 loc) · 2.2 KB

キー入力

0x0400_0130 - KEYINPUT - キー入力レジスタ (R)

ボタンの入力はIOレジスタの0x0400_0130、0x0400_0131の値で判定します。

下位のビットから順番に、Aボタン、Bボタン、セレクトボタン、スタートボタン、 十字キーの→、←、↑、↓、最後はRボタン、Lボタンとなっています。

ビット 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ボタン L R Start Select B A

ビットが立っている時は押されていない状態、ビットが立っていない時は押されている状態です。

どの程度の強さで押されているか、といった判定はできません。

通常、このレジスタの読み出しは1フレームに1回だけにして、現在の状態をメモリに保存することをお勧めします。

0x0400_0132h - KEYCNT - キー割り込み制御レジスタ (R/W)

キー割り込み機能は、非常に低消費電力のSTOPモードを終了させるためのもので、通常のユーザ入力を処理するのには適していません。

ビット 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ボタン IRQ条件 IRQ有効 L R Start Select B A

A,B,Select,Start,... はbitが0ならその入力は無視する、1なら無視しない

IRQ条件は

  • 0: bitが1の入力のどれかが押されたらIRQ (logical OR)
  • 1: bitが1の入力すべてが押されているときにIRQ (logical AND)

ゲームボーイ互換モードでは、LボタンとRボタンを使って、通常の160x144ピクセルと240x144ピクセルの間で画面サイズを切り替えます。

GBASPにはさらに、バックライトのオンオフを切り替えるための*ボタンがあります(別のハードウェアロジックで制御され、ソフトウェアで現在のバックライトの状態を検出したり変更したりする方法はありません)。