NDSアプリ開発二日目: 実機で動いた!
先日動かないよー!と言ってたデモプログラムが、ようやく実機で動いた!
背景に絵を表示して、タッチペンで赤い字が書けるデモアプリ。
nintendogsは自分で書きました。:)
いつもながら、こういった携帯機器で自分の作ったプログラムが動くと、感動するなあ。
嬉しくて、誰かにしゃべりたいので、さっそくブログに書いてます。^^;
まあ動いたといっても、本当にしょぼいテストプログラムを走らせただけなんだけど。
自分用のメモも兼ねて、実機で動かす際のTips等を。
なお、今回のアプリ制作にはNDS Dev Env 2.3.0、PassMe及びFlash2Advanceを使用しました。
NDS Dev Envのサンプルは、そのままでは動かない
NDS Dev Env 2.3.0のサンプルは、コンパイルしただけでは動かないようだ。
バージョンによっては、コンパイルすら通らない場合がある。
サンプルはバージョンごとにアップデートされていないようなので、それが原因か?
ネットにはサンプルアプリのソースを公開されている方がいらっしゃるので、参考にするといいだろう。
特にht9さん、SaTaさんのサイトには、大変お世話になりました。
この場を借りて、お礼申し上げます。(_O_)
ぼくのデモアプリのソースも後ほど公開する予定。
あまり参考にはならないと思うけど、誰かの役に立てば幸いかと。
エミュレータで動いても、実機で動くとは限らない
現在はエミュレータも開発環境も発展途上にあるので、いろいろ試してみないとダメみたい。
開発環境が整備されれば、エミュレータでもかなりのデバッグができるようになると思うけどね。
swiWaitForVBlank()は使わない
前回ARM7側のコードが動いていないと言っていたが、実はそうではなく、swiWaitForVBlank()が制御を戻さないのが原因だった。(エミュレータだけの問題?)
これに気が付くのに、えらく時間がかかったよ。
よく見ると、動くサンプルもコメントアウトしてある。
サンプルコード、直しておいてくれー!(笑)
メインVRAMに書く、一番簡単な方法
いろいろサンプルを見たが、なんかVRAMのアクセスは難しそうだ。
とりあえずやっつけ的に試してみるが、ちゃんと仕様を理解してないため、なんかうまくいかない。
GBAのMode3みたいに、単純にフレームバッファに書きたいだけなんだけどなー。
と思っていたら、DSEmuのページに、いいチュートリアルがあった。
なるほど。単純にフレームバッファを使うだけだったら、これだけでいいんだ。
// Turn on the screens and 2D cores and switch to mode 0 powerON(POWER_ALL); // Set up display videoSetMode(MODE_FB0); videoSetModeSub(MODE_FB1); vramSetBankA(VRAM_A_LCD); vramSetBankB(VRAM_B_LCD); lcdSwap();
ていうか、あのデモだったら、フルカラーいらないだろ>わし
ちなみにここのチュートリアルは、基本的なことが分かりやすく書いてあるので、初めてNDS開発をする時にはオススメです。