タイトルに文字を表示したい
ビットマップデータを探したところひらがなも対応しているhttps://amaitorte.jp/others/lab/amtjp-gbstudio-font がありましたので、利用させていただきました。
こちらも rgbgfx で変換してロードしています。
SECTION "font", ROM0
FontTiles: INCBIN "font.bin"
FontTilesEnd:
224個のタイルデータを消費してしまうので、動的にタイルにロードするのも
考えたのですが、今回は贅沢にそのままロードさせました。
本当は表示する文字だけタイルに定義しているんだろうなあ。市販のROMのタイル見てみたい衝動に駆られます(笑)
; Param HL 文字列のアドレス
; Param DE 表示したいタイルマップ先頭
DrawCaption:
.loop
ld a, [hl+] ; 文字コードを得る
or a
ret z
add 32 ; 文字コードからインデックスを得る
ld [de], a
inc de
jr .loop
静的なら簡単ですね。C言語と同じように最後に0をいれておいて、
みつかったらretです。呼び出し側はこちら
DrawTitleCaptions:
ld hl, .START_GAME ; 文字列のアドレス
ld de, $9925 ; 表示したいタイルマップ先頭
call DrawCaption
ld hl, .CREDIT ; 文字列のアドレス
ld de, $9983 ; 表示したいタイルマップ先頭
call DrawCaption
jr .done
.START_GAME: db "START GAME", 0
.CREDIT: db "2024 HIRO824AB", 0
.done
CHARMAPで文字列のコードを定義してあります。
CHARMAP "あ", 65
CHARMAP "ぃ", 66
CHARMAP "い", 67
CHARMAP "ぅ", 68
CHARMAP "う", 69
CHARMAP "ぇ", 70
CHARMAP "え", 71
CHARMAP "ぉ", 72
CHARMAP "お", 73
ドットから始まるラベルはそのラベルからだけ参照できるので、ローカルなものを定義するときいい感じ。
db "あい" で db 65,67 と定義したのと同じになります。これはプログラムとして実行されてはまずいので、jr でおしまいまで飛ばしてあります。
Windowとかは使わず背景でやっています。スクロールさせたいからBGですね。
次回
スタートボタンを押すと次の画面へ遷移させます!ゲームの内容は
連射測定ゲームにする予定です!
雑談
今は、資料や開発環境も無料で使えて本当にいい時代になりました。昔は、LSI C 試食版しかなかった(笑)
スクロールやBGMはMSXではマシン語を使わないと難しかったので、今、コードを書いていてうれしいです。