おもちゃバコ

中身スカスカ♡

ゲームボーイ開発環境の構築

ゲームボーイの開発環境を構築したので,それについてのメモです.

ゲームボーイの開発環境として有名なものは,
  1. GameBoy Developers Kit (GBDK) : C言語
  2. Rednex Game Boy Development System (RGBDS) : アセンブリ
の2つが挙げられますが,今回はRGBDSを使用しました.


1. 開発環境

  • OS: Windows10 (May 2020 Update済み)
  • CPU: Intel Core i7-3517U 1.90Ghz
  • RAM: 8.00GB

2. ソフトウェア


3. ソースコード

動作確認プログラムとして,ISSOtm’s code warehouseで公開されている「Hello World!」のプログラムを改良したものを使用しました.
ISSOtm’s code warehouseさんの方では,「hardware.incfont.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で起動するとチェックサムがおかしいと警告が出ます.
f:id:lambda410:20200811172949j:plain

なので,リンク後は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!」と表示されます.
f:id:lambda410:20200811173131j:plain


5. まとめ

ゲームボーイの開発環境構築を行いました.
子供の頃に遊んでいたゲームを個人で開発できることは,とても感慨深いですね.

これからは,少しずつゲームボーイへの理解を深めながらゲームの開発と実機での実行環境を整えたいと思います.