こちらのgistに「GBおよびGBC開発者向けのプログラミングツールチェーン、コーディング手法、および言語」について説明されている記事がありました。
詳しくは元の記事を読んで欲しいのですが、いくつか気になった点をメモしておきます。
GBAのアーキテクチャについて
Important: this document only applies to the Game Boy and Game Boy Color. Game Boy Advance programming has nothing in common with Game Boy programming.
GameBoy Advanceではアーキテクチャが改良されていて、C言語でのプログラミングに適したアーキテクチャになっているようです。もしC++やRustでの開発をしたいならアリかもしれない。
開発ツールについて
主に以下の選択肢があるようです。
- GBDK: C言語。SDCC compilerが利用されているらしい。「Windowsで動く」って書いてますが、Macでも少し工夫すればインストールできました。
- RGBDS: アセンブリ(ASM)。png画像をタイルフォーマットに変換するツールなどが含まれている。
- WLA-DX: RGBDSよりうまく構造体をサポートしている(?)
エミュレータについて
動作確認はエミュレータで行う。
- BGB: ほぼ完璧にサポートされている。Windowsのみだが、Wine上でもうまく動作するらしい。
- Gambatte: BGBと同等。デバッガはないが、様々なプラットフォームで動く。コンパイルが必要。
フラッシュカードのおすすめ
実機で動かす場合はkrikzz's carts、特にparticularly the Everdrive GB X5が薦められている。
言語を選ぶ
- C言語はオーバーヘッドがでかい。こちらのブログで比較されている。
- オーバーヘッドはCが「stack-oriented language」で、GBのアーキテクチャが「register-oriented strategy」向けに設計されているため。
- BGBのデバッガの利用が難しくなる。
その他
GB向けのLLVMバックエンドの実装してる方がいるらしい。
ASMの挙動を知りたいときは、ここからゲームボーイのドキュメントを追う。
様々なリソースやチュートリアルはawesome-gbdevを読もう。
コミュニティは以下の3つが紹介されている。
- 歴史的なIRC: EF Net
- Discord
- GBDevフォーラム