waitpad() モドキ関数を作ってみる。


RGKT-NDS-STDY-014(001)
RGKT-NDS-HMBR-003(001.5)


GBDK にあった特定キーの入力があるまで待機って関数ね。
そもそも GBDK 触ったことないけどw
GBDK のは本当にそこでウエイト掛かって他の処理まで止まってしまってるようだったが
それだと他の演出処理とかまで止まって都合が悪いので(DSに関して言えば、音は割り込みで鳴らせば大丈夫?)
特定キーの入力があるまで false を返し
入力があったら true を返す関数というのがあれば
そこから if 分岐掛けられるって思って書いてみた。

bool isKeysDown(uint32 keypad_bits)
{
	if(keysDown() & keypad_bits)
		return true;
	return false;
}


こんな感じ。
keysUp() 用や keysHeld() 用も同じように作れるんじゃないかなと。

if(isKeysDown(KEY_LEFT | KEY_UP | KEY_RIGHT)){
	
	//左キー、上キー、右キーの何れかのダウンエッジを検出した場合の処理
	
}


こうすることで
特定キーが押されるまでその if ブロックは実行されることがないんで。
使い勝手も GBDK の waitpad() ぽくなった。<そこかよ


ちなみに libnds のキー関数には
現在の全てのキー状態を取得する関数ってのが用意されてないので
だからあえてこうワンクッションを置いてたりするんです
レジスタ指定して読めばいいんですけどね。あえて正攻法(用意されてるもの)で攻めるw)。