GBAのプログラムは、C言語又はアセンブラで開発する事ができます。GBAに搭載されているCPUはARM7プロセッサーですので、ARM用のクロスコンパイラが必要です。
ここでは、GBA用のコンパイラ環境として定番の「DevkitAdv」を使った例を紹介します。
「DevkitAdv」は、フリーのGCCコンパイラをベースにGBA用にカスタマイズしたコンパイラ環境です。使用するパソコンとしては、WindowsXPパソコンの例で説明していきます。
下記URLの DevKit Advance のホームページより入手できます。
http://devkitadv.sourceforge.net/
DevkitAdvは、Windows版の他にも、Mac OSX版、Linux版もありますが、ここではWindows版で説明していきます。
上記URLから、Downloadのページに行って、Windows版のファイルを入手します。2005年11月現在での最新版、Release 5(Beta 3)で説明していきます。
以下の6つのファイルを、それぞれダウンロードします。
agb-win-binutils-r5-beta-3.zip
agb-win-core-r5-beta-3.zip
agb-win-gcc-r5-beta-3.zip
agb-win-insight-r5-beta-3.zip
agb-win-libstdcpp-r5-beta-3.zip
agb-win-newlib-r5-beta-3.zip
ダウンロードしたあと、それぞれのzipファイルを解凍する(WindowsXPの場合は、ダブルクリックするだけで開けます)と、"devkitadv-r5-beta3"のフォルダがあります。これを、フォルダごと "C:¥" トライブにそのまま全てをコピーしてインストールしてください。
すると、以下のようなフォルダ構成になるはずです。
C:\devkitadv-r5-beta-3
|
+---arm-agb-elf
|
+---bin
|
+---crtls
|
+---doc
|
+---example
|
+---include
|
+---lib
|
+---share
|
+---testsuite
|
\---tools
次に、インストールしたフォルダにあるショートカット(C:\devkitadv-r5-beta-3\DevKit-Advance-R5-Beta-3.lnk)を実行すると、コンパイル環境のDOS窓が開きます。このDOS窓から、GBAプログラムをコンパイルする事ができます。このショートカットファイルは、よく使いますので、デスクトップなどにコピーしておくと便利です。
最後に、そのDOS窓から"gcc -v"とコマンドを実行してみてください。
ずらずらと数行表示して、以下のような表示が出れば、GBAソフトの開発環境の構築は完了です。
gcc version 3.2.2 (DevKit Advance R5 Beta 3)
※注意※
WindowsXP以外で使う場合は、Windowsディレクトリ名や、コマンドシェル名が違いますので、このショートカットファイルは手直しする必要があります。
まず、簡単なプログラムを記述して動作確認してみましょう。下記内容のテキストファイルを"test.c"のファイル名で作成します。このプログラムを実行すると、GBA画面に赤青緑のカラーパターンを表示します。
// // RGB test program for GBA devkitadv // // 型情報 typedef unsigned char u8; typedef unsigned short u16; // 制御レジスタ情報 #define VRAMTOP (u16*)0x6000000 // VRAM frame buffer top address #define register(p) *((u16*) p) // I/O register handling macro #define LCD_CTRL 0x04000000 // LCD control #define LCD_BG2EN 0x0400 // Enable BG2 #define LCD_MODE3 3 // Video mode 3 #define RGB(r, g, b) (((b) << 10) + ((g) << 5) + (r)) // ブートケーブルからも実行できるようにするおまじない int __gba_multiboot = 0; // マルチブート指定 // メインプログラム int main(void) { u8 x, y; u16* vram = VRAMTOP; // Use VRAM as a frame buffer // 画面モードの初期化 register(LCD_CTRL) = LCD_BG2EN | LCD_MODE3; // Mode3, BG2 表示 // 赤青緑のカラーパターン描画 for (x=0; x<80; x++) { for (y=0; y<160; y++) { vram[y*240+x] = RGB(31, 0, 0); // put Red dot vram[y*240+x+80] = RGB(0, 31, 0); // put Green dot vram[y*240+x+160] = RGB(0, 0, 31); // put Blue dot } } // 無限ループ while (1) { ; } } |
≪補足≫
それでは、先ほどのサンプルプログラムをコンパイルしてみましょう。上記で構築した開発環境のDOS窓を起動して、test.cを保存したフォルダに移動します。
そこで、下記コマンドを入力することでコンパイルができます。
gcc -Wall -o test.out test.c
objcopy -O binary test.out test.bin
gccコマンドにて、コンパイルします。-Wall オプションは警告表示を有効にするという指示で、これを指定して文法チェックを強化してます。-oオプションで出力ファイル名を指定します。
objcopyコマンドは、gccで生成した出力ファイルから、シンボル情報などの余計な部分を削除して、プログラムコードのみを抽出するコマンドです。
上記のコマンドを毎回入力するのは面倒ですので、”make1.bat”などの名前で、バッチファイルにしておくと便利です。
以上の操作で、"test.bin"ファイルを作成する事が出来ましたので、早速このファイルを、GBAで実行してみてください。
実行方法は、SDメモリカードに書き込んでSuperCardで実行してもよいですし、ブートケーブルから転送してもよいです。どうですか、赤青緑のカラーパターンが画面に表示しましたでしょうか?
参考にコンパイル時の画面の様子を以下に示します。
尚、上記で説明した"test.c"と"make1.bat"のファイルを圧縮したものを以下においておきます。開発環境のフォルダ("C:\devkitadv-r5-beta-3\test")などにコピーして試してみてください。
サンプルプログラムのファイル: gbatest.zip
≪補足≫
如何ですか。意外に簡単にGBA用のソフトが開発できるのが判って頂けたと思います。あとは、GBAのレジスタ機能や使い方を習得すれば、かなりのことが出来るようになります。
この先は、参考文献や関連リンクを参考に、頑張ってみてください。きっと、GBAプログラミングのプロフェッショナルになれる日も遠くありません。