0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゲームボーイ RGBDS 開発メモ 第13回 文字の表示

Last updated at Posted at 2025-01-13

タイトルに文字を表示したい

ビットマップデータを探したところひらがなも対応している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 でおしまいまで飛ばしてあります。

スクリーンショット 2025-01-13 17.11.54.png

Windowとかは使わず背景でやっています。スクロールさせたいからBGですね。

次回

スタートボタンを押すと次の画面へ遷移させます!ゲームの内容は
連射測定ゲームにする予定です!

雑談

今は、資料や開発環境も無料で使えて本当にいい時代になりました。昔は、LSI C 試食版しかなかった(笑)
スクロールやBGMはMSXではマシン語を使わないと難しかったので、今、コードを書いていてうれしいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?