One Note Jam

ゲームボーイアドバンス用プログラム開発雑感 (2005-10-23)

ゲームボーイアドバンス(以下GBA)での開発について、開発環境の概要をさらっと紹介。

開発環境

今回の開発では、開発環境として「DevKit Advance」を使いました。というか、昔GBAの開発を始めたときにインストールしたものが残っていたのでそのまま使っているだけなのですが。

当時の定番的な環境の一つですが、バージョンが「Release 5 (Beta 3)」という状態で開発が止まっているように見えるのがちょっと気にかかります。それと、ベースとなっているgccのバージョンも「gcc version 3.2.2 (DevKit Advance R5 Beta 3)」とやや古い。普通に使う分には問題ないとは思いますが。

ハードウェアについての資料

DevKit Advanceには、GBAのハードウェアを制御するためのライブラリは特に含まれていません。ハードウェアの制御を行うには、メモリマップされたレジスタ群を直接アクセスすることになります。そのため、ハードウェアについての詳細な資料は必須です。

GBAのハードウェアは単純明快でわかりやすく、かなり扱いやすいのではないかと思います。なので、ハードウェアのリファレンスマニュアル的資料さえあれば、プログラム開発はじゅうぶん可能でしょう。

エミュレータ

ビルドして生成されたROMイメージはエミュレータにて動作確認します。「VisualBoyAdvance」は、グラフィックビューア・I/Oポートビューア・メモリビューア・逆アセンブル表示などなど、開発に役立つ便利な機能が満載です。

ブートケーブル

せっかくプログラムを作っても、実機で動かせないと面白くありません。コンソールゲーム機プログラム開発に代表されるこの種の「非公式開発」においては、えてして「実機動作」を行うための敷居が非常に高い場合が多いものです。

その点GBAの場合は比較的敷居は低く、「ブートケーブル」なるケーブルを使うことで、自作プログラムを実機へ簡単に送信・起動することができます。GBA本体の改造などは必要ありません。

GBAの市販ゲームソフトには、ROMカートリッジ1つで複数人との対戦プレイができるものがあります。この「1カートリッジプレイ」では、ROMカートリッジが刺さっているGBAが「親機」となり、対戦ケーブル経由でプログラムを「子機」に送信するという形で、子機でプログラムを実行できるようになっています。これを、PCを親機として同様のことを行えば、任意のプログラムをGBAに送信して起動させることが可能になるという仕組みです。これを行うためのケーブルがこの「ブートケーブル」というわけです。

入手方法

問題となるのはブートケーブルの入手方法です。ここ最近は、非ライセンス品の怪しげな周辺機器などもゲームショップで普通に売られていたりしていますが、これくらい特殊な周辺機器となると普通の店では売っていません。

容易に入手するには「Linuxから目覚めるぼくらのゲームボーイ!」という書籍を購入するのがよいでしょう。解説書のほかに、付録としてUSB対応のブートケーブルと、KNOPPIXによる1CD Linux開発環境が入っています。

問題点

ゲームボーイミクロ(以下GBm)ではコネクタの形状が変わっていて、従来GBAのケーブル類は軒並み接続できません。当然、ブートケーブルも使えないわけで、これには困っています。

一応、純正品の変換コネクタは存在するようですが、どうもこれ、両端が「従来GBAオス端子 - GBmメス端子」という形状になっているらしく、これではブートケーブル(従来GBAオス端子)は接続できません。サードパーティから「従来GBAメス端子 - GBmオス端子」の変換コネクタが出てくれればいいのですが……。

posted at 2005-10-23 | Permalink

ゲームボーイアドバンス用プログラム開発はじめました (2005-10-18)

ここのところ非常に忙しく、平日はたいてい終電、休日も出勤するか寝ているかのどちらかという不毛な毎日。Symbian OS上でのプログラミングは正直おなかいっぱいという気分。

そんな中、先月はついつい「ゲームボーイミクロ」を買ってしまいました。おまけに「ファミコンミニ・スーパーマリオブラザーズ」と「Dr.MARIO & パネルでポン」も買ってしまい、すっかり任天堂に踊らされている状態です。忙しい身には電源オンですぐ起動という手軽さがありがたいところ。寝る前のちょっとした時間などにすぐ遊べるのはいいですね。

そんなわけで、8-1がクリアできなかったり11連鎖を出してみたりしているわけですが、ふとゲームボーイアドバンス(以下GBA)上でのプログラム開発をやりたくなりました。GBAプログラムの個人レベルでの開発というのは、初代GBA発売以降から世界中で活発に行われていて、フリーの開発環境や各種資料なども豊富に存在しています。実は私も3年前くらいにちょっと手を出してみたことがあるのですが、短いプログラムを作って動かしてみてひとしきり遊んだ程度です。

ちょうど先週の土日は休みがとれたので、昔に書き散らしたソースコードを整備しながら、ちょっとしたゲームの作成を始めてみました。「まずは習作として単純なゲームを……」と思いつつも「せっかくGBAで作るんだから、GBAの機能を駆使しないとなー」などと矛盾したことを考えながら、今作っているのはこんなゲーム。

GBAゲーム・開発中画面1 GBAゲーム・開発中画面2

かつて「マイコンBASICマガジン(通称: ベーマガ)」などの雑誌投稿プログラムで飽きるほど見かけた「キーを押すと上昇・離すと下降・壁に当たらないように進む」というワンキーゲームです。ゲームプログラムを作ったことがある人なら、誰しも一度くらいは作ったことがあるんじゃないかと思います。

GBAらしい唯一のフィーチャーは、自機(?)の上昇・下降の角度に応じて画面全体が傾く(回転する)という点です。以前やはりベーマガで見かけた記憶があるのですが、この手のワンキーゲームで「見た目を3D視点にして新感覚に」というアレンジを施した作品がありました。このゲームもそういう方向性を狙って、目先を変えることで新鮮な感覚を得られないものかと目論んでいたわけですが、実際に動き始めたゲームを見てみると……うーん、試みが成功したとは言い難いかな……。

ま、このゲームはあくまでGBAプログラミングの習作ということで、さっさと完成させて終わりにしましょうかね。暇ができたらまた何か作ってみたいところです。

posted at 2005-10-18 | Permalink

© 2004-2008 ENDO