ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第36回

*今回は、ステータスの表示の準備の続編です。
①HP・MP・L:の表示
②fontの追加
③ウインドウ用FONTの追加

④記号の追加(* :)

 

;***************** DATA *********************************

 .bank 2
 .org $0000
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;
 .db $3C,$42,$42,$42,$42,$42,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00 ;0
 .db $10,$30,$10,$10,$10,$10,$10,$38,$00,$00,$00,$00,$00,$00,$00,$00 ;1
 .db $3C,$42,$02,$04,$18,$20,$40,$7E,$00,$00,$00,$00,$00,$00,$00,$00 ;2
 .db $7E,$02,$04,$18,$04,$02,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00 ;3
.db $0C,$14,$24,$44,$44,$7E,$04,$04,$00,$00,$00,$00,$00,$00,$00,$00 ;4
.db $7E,$40,$40,$7C,$02,$02,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00 ;5
.db $1C,$20,$40,$7C,$42,$42,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00 ;6
.db $7E,$42,$42,$04,$08,$10,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00 ;7
.db $3C,$42,$42,$3C,$42,$42,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00 ;8
.db $3C,$42,$42,$42,$3E,$02,$04,$18,$00,$00,$00,$00,$00,$00,$00,$00 ;9
.db $82,$82,$82,$FE,$82,$82,$82,$82,$00,$00,$00,$00,$00,$00,$00,$00 ;M
.db $82,$C6,$AA,$92,$92,$82,$82,$82,$00,$00,$00,$00,$00,$00,$00,$00 ;P
.db $FC,$82,$82,$82,$FC,$80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00 ;G
.db $00,$42,$42,$42,$7e,$42,$42,$42,$00,$00,$00,$00,$00,$00,$00,$00 ;H
.db $00,$7e,$40,$40,$7c,$40,$40,$7e,$00,$00,$00,$00,$00,$00,$00,$00 ;E
.db $00,$40,$40,$40,$40,$40,$42,$7e,$00,$00,$00,$00,$00,$00,$00,$00 ;L
.db $00,$3c,$42,$42,$42,$42,$42,$3c,$00,$00,$00,$00,$00,$00,$00,$00 ;O
.db $00,$42,$62,$52,$5a,$4a,$46,$42,$00,$00,$00,$00,$00,$00,$00,$00 ;N
.db $00,$3c,$42,$40,$3c,$02,$42,$3c,$00,$00,$00,$00,$00,$00,$00,$00 ;S

.db $00,$3F,$7F,$70,$60,$60,$60,$60,$00,$00,$00,$00,$00,$00,$00,$00 ;Win左上隅
.db $00,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Win上
.db $00,$FC,$FE,$0E,$06,$06,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00 ;Win右上隅
.db $60,$60,$60,$60,$60,$60,$60,$60,$00,$00,$00,$00,$00,$00,$00,$00 ;Win左端
.db $06,$06,$06,$06,$06,$06,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00 ;Win右端
.db $60,$60,$60,$60,$70,$7F,$3F,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Win左下隅
.db $00,$00,$00,$00,$00,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Win下
.db $06,$06,$06,$06,$0E,$FE,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;Win右下隅
.db $00,$10,$92,$54,$38,$54,$92,$10,$00,$00,$00,$00,$00,$00,$00,$00 ;*
.db $00,$18,$18,$00,$00,$18,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;:

*文字列DATAの追加変更。

str_data:

.db $14,$15,$15,$15,$15,$16,$ff
.db $17,$0e,$00,$02,$06,$18,$ff
.db $17,$00,$00,$00,$00,$18,$ff
.db $17,$0e,$00,$02,$06,$18,$ff
.db $17,$10,$1d,$03,$07,$18,$ff
.db $19,$1a,$1a,$1a,$1a,$1b,$ff

*ライブラリーの追加

 

string:
    ldy #0
lp2:
    lda str_data,x
    sta str_buff,y
    inx
    iny
    cmp #$ff
    bne lp2
    ldy #0
lp1:
    lda str_buff,y
    iny
   cmp #$ff
    beq exit
    sta $2007
    jmp lp1
exit:
    jsr scroll_zero

*ウィンドウ表示のプログラム
    lda #15
    sta loc_x
    lda #12
    sta loc_y
    jsr locate
    ldx #0
    jsr string

    lda #15
    sta loc_x
    lda #13
    sta loc_y
    jsr locate
    ldx #7
    jsr string

    lda #15
    sta loc_x
    lda #14
    sta loc_y
    jsr locate
    ldx #14
    jsr string

*実行の結果3行目までしか表示されなかった、

それは、メインループ内では、VBlankの時間制限を超えてるためで

分割して表示する必要があります、次回は、プログラムを改良する予定です。

 

f:id:chien1956:20200123201112p:plain

f:id:chien1956:20200123201150p:plain

【予定している画像】