Email: Takayama Fumihiko <tekezo@pqrs.org>

簡単 GBA プログラミング (1)

簡単 GBA プログラミング (1)

GBA ならではのグラフィックとかサウンドまわりとかを除くと、普通の C++ のコードが動きます。 なので基本的には

int main()
{
  ...
  return 0;
}
のようなコードで OK です。

最初はグラフィックを表示するところから。

sprite01.png

ソースコード一式

サンプルのソースコードはこちら

devkitPro r18 (buildscripts 20060412) 用なので devkitPro r18 をインストールして から、

% tar zxf sprite.tar.gz
% cd sprite
% make
とします。

また、BMP イメージを GBA 用に変換するツールは

になります。 これを以下のようにしてホームディレクトリの gba/tools 以下にインストールします。
% cd
% tar zxf tools.tar.gz
% cd tools/bmp2c
% make
こうすると bmp2c (Windows の場合は bmp2c.exe) というコマンドが出来て、 BMP を GBA 用のデータに変換できます。

素材を用意しよう

まずは GBA で表示するためのドット絵を用意します。

ドット絵の編集は EDGE を使います。 いまのところ、これ以上手軽で使いやすいツールはありません。

Linux や MacOSX の場合は Wine を使えば動くので、あえて Windows を用意しなくても大丈夫。

GBA 用の素材について

GBA では 8x8 ドットの絵が基本です。 これを横に 30 個、縦に 20 個並べて 240x160 の画面を表示します。

cross.png

素材その1

まずは背面に敷き詰めるための 8x8 ドットの画像を作ります。 ちなみにパレットの最初の色は透過色になります。

bg_background.png

そうしたら 16 色の bmp で保存します。

save-as-16color.png

素材その2

背景の上に表示する画像を用意します。ここでは 256x160 の画像を用意しました。

パレットの最初の色 (緑色) は透過色となり、GBA で表示するときは透明になります。

bg_logo.png

これも 16 色の bmp で保存します。

素材その3

次にスプライト用の画像を用意します。 以下の中から適切なサイズを選んで作成します。

  • 正方形: 8x8, 16x16, 32x32, 64x64
  • 横長: 16x8, 32x8, 32x16, 64x32
  • 縦長: 8x16, 8x32, 16x32, 32x64

ここでは 32x32 のスプライトを 4 パターン分用意しています。

スプライトをアニメーションさせる場合は、パターンを縦に並べます。

spr-load1.png

これも 16 色の bmp で保存します。

素材その4

同じように 16x16 のスプライトも用意しました。

spr-load2.png

これも 16 色の bmp で保存します。

素材を GBA 用に変換しよう

素材が出来たら、BMP ファイルを GBA 用に変換します。

ソースコード一式 から tools.tar.gz をインストールして、

% ~/gba/tools/bmp2c/bmp2c spr/spr_loading1.bmp
といったように bmp2c の引数に BMP ファイルを渡すと cpp が出力されます。

あとは、この出力を cpp ファイルに流し込めば OK です。

% ~/gba/tools/bmp2c/bmp2c spr/spr_loading1.bmp > cpp/spr_loading1.cpp
ここら辺の処理はサンプルコードだと images/conv.sh で一括して行えるようになっています。

素材を GBA のコードに組み込もう

あとは変換後のデータをコードに組み込むだけです。

ここは ソースコード一式 のサンプルコードの imagehandler.hpp, imagehandler.cpp あたりを見ればわかると思います。

わからない場所については以下を見れば OK。


Comments for This Page.
Date: 2007-05-29 00:00 (JST)