index
開発環境の構築 (Windoews版)

自宅のコンピュータが Windows を使用している場合などは、下記の要領で、開発環境を構築できます。ところで、最近は大容量ハードディスクが低価格化していますので、ハードディスクを増設して、自宅の環境を Windows と UNIX 系OSのマルチブートにしておくと便利ですね。

*注意書き

開発したソフトウエアを製品化するつもりなら、ハードウエアメーカ認定のソフトウエア開発環境を購入するのが正道かもしれません。しかし、ゲームに限らず、一般ユーザの開発したソフトウエアのほうがメーカ製より優れたものが多いのも事実です。ここでは、Windows 用のGBA開発環境として有名な DevKitAdvance の導入手順をまとめておきます。こうした開発ツールには、使い方によっては違法となるものも含まれています。著作権侵害には特に注意してください。

*開発環境のダウンロード

DevKit Advance は、ARMプロセッサ用GNU Cコンパイラやリンカーをベースとしています。開発用ライブラリも付いていますので、手軽に開発を開始することができます。しかし、ライブラリを使いこなすためには、結局、GBAのハードウエアを理解し、ライブラリ関数やヘッダーの内容を読む必要があります。

参考URI説明
DevKit AdvanceDevKit Advance 配布ページ
基礎から学ぶGBAプログラミングDevKit Advanceインストールの解説

*開発環境のインストール

*スタートアッププログラムとリンカースクリプトの作成

crt (c runtime startup) ファイルは、実行開始アドレス以外の場所に配置された main 関数のポインタに branch するための細工です。crtint.S は、割り込み処理を行う関数を登録してあります。割り込み処理を行うときに使用してください。

crt file

下記の内容で、crt.S と crtint.S というファイルを作成します。

crt.S
.text
	b		main

gcc-arm -c crt.S を実行して crt.o を作成します。

crtint.S
#define INT_VECTOR	0x03007FFC

.extern int_handler

.text
	ldr	r0, =int_handler
	ldr	r1, =INT_VECTOR
	str	r0, [ r1 ]

	b1		main
loop:
	b		loop

gcc-arm -c crtint.S を実行して crtint.o を作成します。

下記の内容で、リンカースクリプト gcc.ls を作成します。リンカーは、オブジェクトファイルの内容にメモリアドレスを割り当て、ELF(Executable and Linking Format)形式の実行ファイルを出力します。このスクリプトを実行すると、外部RAMの先頭アドレスである 0x02000000 から、プログラムが配置されます。ROM カートリッジにプログラムを配置したいときは、".text 0x8000000" に変更します。

OUTPUT_ARCH(arm)

SECTIONS {
    .text    0x2000000 : { *(.text) }
    .data              : { *(.data) }
    .rodata            : { *(.rodata*) }
    .bss               : { *(.bss) }
}

以上で、実行ファイルを出力するためのツール群が揃いました。GBAは、ELF形式のファイルを直接実行できませんので、最後に、objcopy コマンドを使って、GBAに必要のないELFヘッダー情報等を削除します。

assembly process

*グラフィクス開発支援ツール

C言語の図形描画関数で複雑なCGを作成したり、高速描画するには無理があります。そこで、ゲーム機には専用の高性能グラフィクス・ハードウエアが用意されています。高度なCGは、このグラフィクス・ハードウエアを直接制御することにより実現されます。GBAのグラフィクスは、8x8ドットのキャラクタにより画面を構成するタイルモードと最大240x160ドットのビットマップモードがあります。タイルモードでは、仮想画面の使用も可能です。GBA グラフィクス開発用のツールとして、GBA プログラミング研究所の bmp2rgb と bmp2rgb2 というBMP形式からGBA形式に変換するツールと WideMapEditor というマップを作成するツールを利用させてもらいます。

参考URI説明
GBA プログラミング研究所各種 GBA 開発ツールを公開
gbadev各種 GBA 開発ツールやドキュメントを公開

*エミュレータ

エミュレータ(ゲーム開発者はエミュと呼んでいる)は、ハードウエアをソフトウエアでリアルタイムに模倣します。開発したプログラムの動作やメモリ内容ををPC上で確認できるので、デバッグに必要なツールですが、ネットに流通している違法コピーソフトを実行できるため、ゲームメーカでは流通を認めていないようです。ゲーム機のエミュレータを違法とするか否かは、微妙な線のようです。本実習では、VisualBoy Advance というものを使わせてもらいます。このエミュレータは、GB, GBC, GBA のプログラムが全て動くそうです。この手のサイトは、よくアドレスを変えたりするので、検索して探したほうが良いかもしれません。

参考URI説明
VisualBoy AdvanceVisualBoy Advance 公式サイト
エミュレータ情報局各種エミュレータの解説とリンク集
OcianBlue エミュの部屋各種エミュレータの解説とリンク集

1.インストール

上記 URI より VisualBoy Advance をダウンロードし、解凍するだけです。Windows版は、skin がネットに流通しているようです。

*書き込みツール

PCやWS上で開発したプログラムを、ゲーム機のメモリに転送して実行させたり、書換え可能カートリッジ(ブランクカートリッジ)に書き込むデバイスおよびソフトウエアです。このツールも市販のROMカートリッジのソフトをコピーするために使用できるため、大っぴらには流通していないグレイマーケット品ですが、ネット販売等を通じて入手可能です。ブートケーブル USB という書込みツールとフラッシュアドバンスという書込み用カートリッジがあると便利です。

参考URI説明
オプティマイズブートケーブルの開発・販売元
GAMES'ARKフィラッシュアドバンスの取扱業者


お問い合わせはこちらまで: kitagawa@is.t.kanazawa-u.ac.jp

(c) Kanazawa Univ., 2004