ドラクエ風RPGファミコンプログラム講座 ゲームライブラリー編
第29回
*今回は、任意の位置に文字列を表示するサブルーチンです。
【ロケーションと文字列表示】
string_buffに文字列DATAをセット、エンドコードは $ffです。
X座標とY座標を変数loc_x,yにセットして locate:をサブルーチンコール
VRAMアドレスを取得し stringsを呼び出す。
lda #10
sta loc_x ;x座標
lda #10
sta loc_y ;y座標
jsr locate ;VRAMアドレスを取得する。
strings:
ldx #$00
str_lp:
lda string_buff,x
cmp #$ff ;ffは、エンドコード
beq skip01 ;$ffなら終了
inx
sta $2007
jmp str_lp
sk:
rts
locate:
lda loc_y ;Y座標
tax ;カウンターをセット
lp:
lda Vram_add_low ;アドレス下位
clc ;キャリーフラグリセット
adc #$20 ;VRAMの横幅(32)を加算する。
sta Vram_add_low
lda Vram_add_hi ;アドレス上位
adc #$0 ;繰り上がり分を加算する。
sta Vram_add_hi
dex ;Xを-1する。
bne lp
lda Vram_add_low
clc ;キャリーフラグリセット
adc loc_x ;x座標
sta Vram_add_low
rts
string_buff:
.db $0f,$11,$12,$13,$ff ;文字コード
*今回で、文字列を自由に表示することができるようになりました、
次回からは、ライブラリーの整理とゲームシステムとして