ゲームボーイの開発環境を構築したので,それについてのメモです.
ゲームボーイの開発環境として有名なものは,
1. GameBoy Developers Kit (GBDK) : C言語
2. Rednex Game Boy Development System (RGBDS) : アセンブリ
の2つが挙げられますが,今回はRGBDSを使用しました.
1. 開発環境
2. ソフトウェア
- RGBDS -ver. 0.4.1-
- BGB -ver. 1.5.8-
- デバッガ機能が豊富なエミュレータ
- RGBDSとの相性が良いらしい
- デバッガ機能が豊富なエミュレータ
- Visual Studio Code
3. ソースコード
動作確認プログラムとして,ISSOtm’s code warehouseで公開されている「Hello World!」のプログラムを改良したものを使用しました.
ISSOtm’s code warehouseさんの方では,「hardware.incとfont.chrをダウンロードして同じディレクトリに入れてね」と書いてありますが,ハードウェアへの理解を深めるためメモリは直書きし,font.chrの方だけ使用しました.
hello_world.asm
SECTION "Header", rom0[$100] EntryPoint: di jp Start rept $150 - $104 db 0 endr SECTION "Game Code", rom0 Start: .waitVBlank ld a, [$ff44] cp 144 jr c, .waitVBlank xor a ld [$ff40], a ld hl, $9000 ld de, FontTiles ld bc, FontTilesEnd - FontTiles .copyFont ld a, [de] ld [hli], a inc de dec bc ld a, b or c jr nz, .copyFont ld hl, $9800 ld de, HelloWorldStr .copyString ld a, [de] ld [hli], a inc de and a jr nz, .copyString ld a, %11100100 ld [$ff47], a xor a ld [$ff42], a ld [$ff43], a ld [$ff26], a ld a, %10000001 ld [$ff40], a .lockup jr .lockup SECTION "Font", rom0 FontTiles: INCBIN "font.chr" FontTilesEnd: SECTION "Hello World string", rom0 HelloWorldStr: db "HELLO, WORLD!", 0
4. ROM生成
アセンブラとリンクだけでROMファイルの生成は出来ますが,そのままBGBで起動するとチェックサムがおかしいと警告が出ます.
なので,リンク後はrgbfixを使用してROMの修正を行います.
1. rgbasm -o hello_world.o hello_world.asm
2. rgblink -o hello_world.gb hello_world.o
3. rgbfix -v -p 0 hello_world.gb
実行すると「プッツ」という音が一瞬鳴って「HELLO, WORLD!」と表示されます.
5. まとめ
ゲームボーイの開発環境構築を行いました.
子供の頃に遊んでいたゲームを個人で開発できることは,とても感慨深いですね.
これからは,少しずつゲームボーイへの理解を深めながらゲームの開発と実機での実行環境を整えたいと思います.