

#include <nitro/pad.h> PAD_Read( void );なし。
現在のキー情報です。
十字キー上下、十字キー左右同時押下といった禁則入力に対しては、
前者は十字キー上、後者は十字キー左だけが押されている状態になるようにフィルタをかけています。
キーやボタンの押下情報を取得します。
キーやボタンの情報は以下の値の論理和となります。
| 値(定義) | 状態 | 値(数値) |
|---|---|---|
| PAD_BUTTON_A | Aボタンを押している | 0x0001 |
| PAD_BUTTON_B | Bボタンを押している | 0x0002 |
| PAD_BUTTON_SELECT | SELECTボタンを押している | 0x0004 |
| PAD_BUTTON_START | STARTボタンを押している | 0x0008 |
| PAD_KEY_RIGHT | 十字キー右を押している | 0x0010 |
| PAD_KEY_LEFT | 十字キー左を押している | 0x0020 |
| PAD_KEY_UP | 十字キー上を押している | 0x0040 |
| PAD_KEY_DOWN | 十字キー下を押している | 0x0080 |
| PAD_BUTTON_R | Rボタンを押している | 0x0100 |
| PAD_BUTTON_L | Lボタンを押している | 0x0200 |
| PAD_BUTTON_X | Xボタンを押している | 0x0400 |
| PAD_BUTTON_Y | Yボタンを押している | 0x0800 |
| PAD_BUTTON_DEBUG | DEBUGボタンを押している | 0x2000 |
X, Y ボタンは、ARM7 が汎用ポートを調べそれを共有領域に書くことで ARM9 から読むことが出来ます。従って、ARM7
の読み込みモジュールが動作していない場合は X, Y ボタンは読み込めません。
ボタン ( PAD_BUTTON_〜 ) のすべての和として、PAD_BUTTON_MASK が、キー (
PAD_KEY_〜 ) のすべての和として、PAD_PLUS_KEY_MASK が定義されています。さらにボタン、キーすべての和として、
PAD_ALL_MASK が定義されています。
ARM7 が読み込む X, Y ボタンと DEBUG ボタンの和は PAD_RCNTPORT_MASK として定義されています。それ以外のボタン・キーの和は PAD_KEYPORT_MASK として定義されています。
| ビット | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| D E B U G |
N / A |
Y |
X |
L |
R |
D O W N |
U P |
L E F T |
R I G H T |
S T A R T |
S E L E C T |
B |
A |
VALUE | ||
| PAD_BUTTON_MASK | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0x2F0F | |
| PAD_PLUS_KEY_MASK | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0x00F0 | |
| PAD_ALL_MASK | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0x2FFF | |
| PAD_RCNPORT_MASK | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x2C00 | |
| PAD_KEYPORT_MASK | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0x03FF | |
u16 padData = PAD_Read();
if ( padData & PAD_BUTTON_A )
{
OS_Printf( "you're pushing A-BUTTON\n" );
}
if ( padData & PAD_PLUS_KEY_MASK )
{
OS_Printf( "you're pushing any PLUS-KEY\n" );
}
本関数 PAD_Read() は、内部的には、IO レジスタの KEYINPUT を読み込み、ARM7が取り込んだ汎用ポートRCNT レジスタからの値を合わせ、キー・ボタンのマスク PAD_ALL_MASK をかけたものを返しています。
DEBUG ボタンは、開発用途でアプリケーションが自由に使用できるボタンとして用意されています。IS-NITRO-DEBUGGER では、デバッガに接続されている DS の電源ボタンがDEBUGボタンになっています。(電源ボタンとしては利きません)
IS-TWL-DEBUGGER でもデバッガに接続されている TWL の本体の電源ボタンが DEBUG ボタンになっていますが、こちらの電源ボタンは実際に電源ボタンとして機能するようになっていますので、IS-NITRO-DEBUGGER とは用途が少々異なります。
2008/04/16 禁則入力フィルタについての記述を追加
2004/08/06 参照から PAD_SetIrq, PAD_ClearIrq を削除
2004/04/13 DEBUGボタン追加
2004/02/19 X,Y ボタン追加
2003/12/01 初版