LinuxでGBAゲーム開発
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
* LinuxでGBAゲーム開発 [#ic9b4010]
- [[Linuxから目覚めるぼくらのゲームボーイ!:http://www.am...
上記の書籍を参考に、GBA上でミニゲームを作ってみました。た...
&color(#DD0000){''まだ書き途中であり、適宜補足していく予...
** ダウンロード [#x075b968]
バイナリと、一部ソースコードを置きます。参考書籍からほと...
前述の事情により、ソースファイルは歯抜けになっています。...
- &attachref(mirmo_dance_gba.lzh);
- [[参考書籍「Linuxから目覚めるぼくらのゲームボーイ!」著...
*** スクリーンショット [#pe3afdcd]
&attachref(mirmo_dance_ss.jpg,nolink);
** メモリマップ [#d26be9db]
|0x0000000|BIOS ROM|
|0x2000000|外部RAM|
|0x4000000|I/Oレジスタ|
|0x5000000|パレット|
|0x6000000|VRAM|
|0x7000000|OBJ属性|
メモリマップがないと、始まりません。とりあえず、ざっくり...
作成したコードは、外部RAMに置くことになります。このさい、...
実行ファイルはELF形式となりますが、とりあえず覚えておくべ...
|.text|メインとなる命令コード|
|.data|初期化済変数|
|.bss|未初期化変数|
|.rodata*|定数|
ELF形式(参考:[[ELFSection:http://meraman.dip.jp/index.php...
$ objdump -h a.out
** リンカスクリプト [#c9fac3e8]
gcc.ls
OUTPUT_ARCH(arm)
SECTIONS {
.text 0x2000000 : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
.rodata : { *(.rodata*) }
}
簡単なリンカスクリプトの例です。開始アドレスを0x2000000と...
- [[GNU LD リンカの使い方:http://www.sra.co.jp/wingnut/ld...
** スタートアップルーチン [#jcc0d28c]
main関数を備えたCソースをコンパイル、アセンブルしたオブジ...
$ ld-arm -o mirmo_dance.out -T gcc.ls crt0.o mirmo_dance...
`gcc-arm -print-libgcc-file-name`
試しに、crt0.o(スタートアップルーチン)とmirmo_dance.o(mai...
以下は、crt.sの例です。
.text
bl main
"bl main" で、メイン関数アドレスへ飛びます。
&color(#DD0000){''個人的にすっきりしないのは、なぜmainはe...
main関数の前処理や後処理もできます。具体的には、割込み処...
#define INT_VECTOR 0x03007FFC // 割り込み処理アドレスの...
.extern int_handler
.text
ldr r0, =int_handler // レジスタにユーザー割り込み処理...
ldr r1, =INT_VECTOR // 割り込み処理アドレスの格納先
str r0, [ r1 ] // r1 に r0 の値を格納
bl main
loop:
b loop // 無限ループ
*** 参考 [#caa4823e]
- [[「組み込み」ならではの基礎知識――スタートアップ・ルー...
** 基本要素 [#qf485ea6]
GBAゲーム開発における、基本的な要素を列挙します。
** スクリーン関連 [#f02f8248]
GBAの画像表示モードには、いくつか種類があります。色数が多...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** スプライト関連 [#m6c4029b]
背景画像ではなく、アクションゲームのキャラクターのように...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** 用意する画像 [#j4ef7067]
画像は、1ドットのRGBを2バイトで保存する形式になっています...
RAW形式の画像ファイルは、参考書籍に付属したmaketileプログ...
** 文字表示 [#r68bc7ff]
そもそもデフォルトでは文字がありません。そのため、フリー...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** 割り込み [#v2a3954b]
スタートアップルーチンで設定した割り込み処理です。後述す...
** タイマー [#i89d2115]
GBAでは、合計4つのタイマを使うことができます。これらは、...
タイマは、カウンタを指定された初期値から順次加算し、65535...
なお、タイマはサウンド関連のところでも利用するので、予め...
** キー入力 [#wc9bfaaa]
キー入力は、割り込みで通知されます。キーの状態は、レジス...
** サウンド [#uf21c27c]
サウンドは、画像のときと同じように、WAVEファイルを、GBA用...
** DMA [#j7e60ba4]
とはいえ、FIFOバッファへのデータ転送をずっと続けるのは、C...
----
** 履歴 [#ie34a210]
- 2007/07/29 bokupi 新規作成
終了行:
#contents
* LinuxでGBAゲーム開発 [#ic9b4010]
- [[Linuxから目覚めるぼくらのゲームボーイ!:http://www.am...
上記の書籍を参考に、GBA上でミニゲームを作ってみました。た...
&color(#DD0000){''まだ書き途中であり、適宜補足していく予...
** ダウンロード [#x075b968]
バイナリと、一部ソースコードを置きます。参考書籍からほと...
前述の事情により、ソースファイルは歯抜けになっています。...
- &attachref(mirmo_dance_gba.lzh);
- [[参考書籍「Linuxから目覚めるぼくらのゲームボーイ!」著...
*** スクリーンショット [#pe3afdcd]
&attachref(mirmo_dance_ss.jpg,nolink);
** メモリマップ [#d26be9db]
|0x0000000|BIOS ROM|
|0x2000000|外部RAM|
|0x4000000|I/Oレジスタ|
|0x5000000|パレット|
|0x6000000|VRAM|
|0x7000000|OBJ属性|
メモリマップがないと、始まりません。とりあえず、ざっくり...
作成したコードは、外部RAMに置くことになります。このさい、...
実行ファイルはELF形式となりますが、とりあえず覚えておくべ...
|.text|メインとなる命令コード|
|.data|初期化済変数|
|.bss|未初期化変数|
|.rodata*|定数|
ELF形式(参考:[[ELFSection:http://meraman.dip.jp/index.php...
$ objdump -h a.out
** リンカスクリプト [#c9fac3e8]
gcc.ls
OUTPUT_ARCH(arm)
SECTIONS {
.text 0x2000000 : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
.rodata : { *(.rodata*) }
}
簡単なリンカスクリプトの例です。開始アドレスを0x2000000と...
- [[GNU LD リンカの使い方:http://www.sra.co.jp/wingnut/ld...
** スタートアップルーチン [#jcc0d28c]
main関数を備えたCソースをコンパイル、アセンブルしたオブジ...
$ ld-arm -o mirmo_dance.out -T gcc.ls crt0.o mirmo_dance...
`gcc-arm -print-libgcc-file-name`
試しに、crt0.o(スタートアップルーチン)とmirmo_dance.o(mai...
以下は、crt.sの例です。
.text
bl main
"bl main" で、メイン関数アドレスへ飛びます。
&color(#DD0000){''個人的にすっきりしないのは、なぜmainはe...
main関数の前処理や後処理もできます。具体的には、割込み処...
#define INT_VECTOR 0x03007FFC // 割り込み処理アドレスの...
.extern int_handler
.text
ldr r0, =int_handler // レジスタにユーザー割り込み処理...
ldr r1, =INT_VECTOR // 割り込み処理アドレスの格納先
str r0, [ r1 ] // r1 に r0 の値を格納
bl main
loop:
b loop // 無限ループ
*** 参考 [#caa4823e]
- [[「組み込み」ならではの基礎知識――スタートアップ・ルー...
** 基本要素 [#qf485ea6]
GBAゲーム開発における、基本的な要素を列挙します。
** スクリーン関連 [#f02f8248]
GBAの画像表示モードには、いくつか種類があります。色数が多...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** スプライト関連 [#m6c4029b]
背景画像ではなく、アクションゲームのキャラクターのように...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** 用意する画像 [#j4ef7067]
画像は、1ドットのRGBを2バイトで保存する形式になっています...
RAW形式の画像ファイルは、参考書籍に付属したmaketileプログ...
** 文字表示 [#r68bc7ff]
そもそもデフォルトでは文字がありません。そのため、フリー...
&color(#DD0000){''ここのモジュールは、そのまま使っていま...
** 割り込み [#v2a3954b]
スタートアップルーチンで設定した割り込み処理です。後述す...
** タイマー [#i89d2115]
GBAでは、合計4つのタイマを使うことができます。これらは、...
タイマは、カウンタを指定された初期値から順次加算し、65535...
なお、タイマはサウンド関連のところでも利用するので、予め...
** キー入力 [#wc9bfaaa]
キー入力は、割り込みで通知されます。キーの状態は、レジス...
** サウンド [#uf21c27c]
サウンドは、画像のときと同じように、WAVEファイルを、GBA用...
** DMA [#j7e60ba4]
とはいえ、FIFOバッファへのデータ転送をずっと続けるのは、C...
----
** 履歴 [#ie34a210]
- 2007/07/29 bokupi 新規作成
ページ名: