ゲームボーイアドバンス用プログラム開発雑感 (2005-10-23)
ゲームボーイアドバンス(以下GBA)での開発について、開発環境の概要をさらっと紹介。
開発環境
- DevKit Advance (http://devkitadv.sourceforge.net/)
今回の開発では、開発環境として「DevKit Advance」を使いました。というか、昔GBAの開発を始めたときにインストールしたものが残っていたのでそのまま使っているだけなのですが。
当時の定番的な環境の一つですが、バージョンが「Release 5 (Beta 3)」という状態で開発が止まっているように見えるのがちょっと気にかかります。それと、ベースとなっているgccのバージョンも「gcc version 3.2.2 (DevKit Advance R5 Beta 3)」とやや古い。普通に使う分には問題ないとは思いますが。
ハードウェアについての資料
DevKit Advanceには、GBAのハードウェアを制御するためのライブラリは特に含まれていません。ハードウェアの制御を行うには、メモリマップされたレジスタ群を直接アクセスすることになります。そのため、ハードウェアについての詳細な資料は必須です。
GBAのハードウェアは単純明快でわかりやすく、かなり扱いやすいのではないかと思います。なので、ハードウェアのリファレンスマニュアル的資料さえあれば、プログラム開発はじゅうぶん可能でしょう。
エミュレータ
- VisualBoyAdvance (http://vba.ngemu.com/)
ビルドして生成された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オス端子」の変換コネクタが出てくれればいいのですが……。