タイトル画面をつくってみる
まずはタイトル画面をつくってみようと思います。
この画像をタイルデータに変換して、表示させようと思います。rgbgfx で変換できるらしいのですが、4色のpngでないとだめらしく、ImageMagickで変換しました。
% magick logo.jpg -resize 64x64 -dither None -colors 4 -define png:color-type=3 logo.png
% rgbgfx -o logo.bin -t tilemap.bin logo.png
タイルは8x8ドットなので、64個分のタイルデータ logo.bin が出来上がります。これを
SECTION "LOGO Tile", ROM0
LogoTiles: INCBIN "logo.bin"
LogoTilesEnd:
とすればタイルデータの完成です。チュートリアルと同じようにVRAMにコピーすれば、表示できました。まだパレットが考慮されておらす、また、ゲームボーイカラーにも対応していませんので、2階調のモノクロですが、あとで対応します。
スクロール
スクロールは簡単で、rSCY というレジスタにオフセットの値をいれればY座標がずれるようですので、最初に 64(タイル8枚分) を入れておき、VBlank中にデクリメントすることによって、スクロールができました。
; VBlank中
ld a, [rSCY]
cp 0
jp z, Main
dec a
ld [rSCY], a
jr Main
jr は相対ジャンプで jp よりも命令サイズが小さいそうです。cp 0 は or aのほうがいいのかな。