ドラクエ風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     ;文字コード

 

*今回で、文字列を自由に表示することができるようになりました、

 次回からは、ライブラリーの整理とゲームシステムとして

 メインループの実装とTEST用プログラムを掲載します。