世間がポケモンGOで沸き立つ中、なんだかゲームボーイが懐かしくなって色々調べてたら、ソフトの開発環境を見つけたので、やってみたくなった。
しかしポケモンGO人気スゴイなー。
初めてポケモンを知ったのは女の子がゲームボーイに片方だけ通信ケーブルさして、もう片方をくるくる振り回してるCMを見た時だったなぁ。
あの時はこのゲームが世界的な社会現象になるとは微塵も思わなかった。
さて、環境のセットアップとか"Hello World"を表示させるまでに色々と手間取ったので、備忘録として。
同時に今回初めてLinuxをいじってみたので、ところどころLinux絡みの覚書も残します。
あと、プログラミングはほぼ素人です。
[環境]
・OS
Linux Bean(Ubuntu 12.04.5 LTS)
・GBDK
http://gbdk.sourceforge.net/
からLinux版をダウンロード。
俺がダウンロードしたときは2.96だった。
・エミュレータ
PC上で動作確認をするために必要。
bgb(V1.5.2)とkigb(V2.05)を使用。
(なんで2種類使ったかは後述。本来だったら1種類でいいはず。)
[環境の構築]
①ダウンロードしたファイルを解凍する。
圧縮ファイルを保存したディレクトリまで移動し、
tar xzf gbdk-2.96a-i586-pc-linux2.2.tar.gz -C $HOME
のコマンドを実行。/home/user/以下にgbdkというディレクトリが現れる。この時初めて知ったんだけど、$HOMEはホームディレクトリを指すんだね…。ここでは/home/userと同義ってことなんだなぁ。
②環境変数の設定
export GBDKDIR=$HOME/gbdk/
を実行して環境変数を設定する。
これを設定しないとコンパイルができない様子。
PCを再起動するとこの設定が消えてしまうようで、純粋にこの設定をしただけだとまた次回起動時に同じ設定をしなくちゃいけないらしい。
次回起動時にもこの設定を生かしたままにする方法があるみたいなんだけど、そこまで詳しく調べてないのでそれについては追記予定。
③コンパイルできるかどうかを確認。
配布ファイルに同梱されているサンプルをコンパイルして、ちゃんと
コンパイルができるかどうかを確認する。
cd /home/user/gbdk/examples/gb
でサンプルプログラムのディレクトリまで移動して
make
を実行し、コンパイルをする。
何種類かのサンプルがコンパイルされ、いくつかファイルが生成されるので、何らかのゲームボーイエミュレータで「.gb」ファイルを実行する。
(例えば、space.gbを実行するとシューティングゲームみたいな画面が確認できる)
無事実行できたら、とりあえず開発環境の構築はOK(だと思う)。
[Hello Worldしてみる]
①下記のディレクトリ構造を構築する。
/home/user/gbdk/projects/gb/tests
②testsディレクトリ内にテキストエディタでtest01.cというファイルを作り、以下を記述する。
# include <gb/gb.h>
# include <stdio.h>
void main()
{
printf("HELLO WORLD");
}
③Makefileを編集する。
/home/user/gbdk/examples/gb/dscan
内の「Makefile」をtestsディレクトリにコピーしてテキストエディタで開き、「dscan」の文字列を「test01」に置換して上書き保存。
④コンパイルする。
make
を実行する。
warning: no newline at end of file
という警告が出る場合があるけど、これは「ファイルの最後の行に改行コードが入ってませんよ!」って意味の警告で、気にしなくていいそうな。本来一番最後の行が改行コードを入れるのが決まりなのかな?
とりあえず、この警告が出ても実行ファイル「test01.gb」は生成される。同時に、「test01.o」「test01.map」「test01.lst」の3つのファイルも生成される。
コンパイルはここまで。
[実行]
ゲームボーイのエミュレータでtest01.cを実行する。
俺はbgbというので実行してみた。
…あれ。
何も表示されない。
サンプルはbgbで実行できたのになぁ。
VirtualBoy Advanceも試してみようとしたけどWineで起動することができず、さらにKigbで試してようやくHello Worldを表示することができた。
うーん?これはなんでだろう。
同じ環境下でコンパイルしたはずなのに、動作がエミュレータに依存するのか??
ちょっと原因調べているけど、自分で書いたソースで動作させるところまではできたので、とりあえずここまで。
次は図形の描画なんぞ試してみたいですね。