ピンポンゲーム(簡易版)。(2)


RGKT-NDS-HMBR-005(002)


各場面毎の遷移の一部には少しの待ち時間を置いて状態遷移を行ってます。
市販ゲームでよくあるような挙動に近付けるためです。
ウェイト動作無しで順次駆動させるだけだと目まぐるしいというか
味気ないゲームになってしまうからです。


で、以下のようなウェイトを掛ける極単純な関数を作ってみました。

void setWaitForVBlank(u32 frame)
{
	while(frame){
		swiWaitForVBlank();
		frame--;
	}
}


とある処理の後に、少し待ち時間を設けたいといったとき、
そこで待ちたいだけの V-BLANK 割り込み回数を指定すると
そこの関数で処理を固めて、指定した割り込み回数分ウェイトを得るというものです。
V-BLANK 割り込みは約1/60秒に1回発生しますので
1秒ぐらい待ちたいときは

setWaitForVBlank(60);


という風に指定することで、その場でその間の割り込み動作以外の
一切の動作を止めるということが可能です
(例えばサウンドを一定周期で割り込み再生するような処理を組んでるとした場合
サウンド割り込み以外の一切の動作は行われないということです。)。


ただ、一見便利そうに見えるこの関数ですが先に言っておくと
本来こんな風に処理を固めてウェイトを取って良いのは
絵的要素の少ないアプリケーションだけです(…だと思います)。
ちゃんとした売り物ゲームでは
逐一リソースを更新して、それが見栄えに貢献する一要素だったりもするので
(ようは常に何がしかのアニメーション動作が画面上にあるということ)
ほとんど見受けられない手段ですのでご注意を。
簡単なウェイトを手軽に得る為の応急処置だと捉えてもらえると良いです。