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

【第47回】

*キャラクターの歩行アニメーション、方向による切り替え

 キャラクターの方向による切り替えは、dire_f によって行います。

 0.正面 1.後面 2.右向き 3.左向き

 

;********メインルーチン*************************
main000:
lda CT
and #$0f            ;16回に1度切り替える。
bne sk5
lda char_f   ;キャラクター切り替え用フラグ
eor #01              ;フラグの反転
sta char_f

 

jsr player_pr

rti

;************************************************

player_pr:
ldx #0
lda dire_f
beq sk2
sta counter0
lda #0
lp6:
clc
adc #32
dec counter0
bne lp6
tax

lda char_f
cmp #0
beq sk6

txa
clc

adc #16              ;スプライトDATAオフセット

tax
sk6:
lda #16
sta counter1
lda #0
sta $2003
sp_loop:
lda sp_data,x
sta $2004
inx
dec counter1
bne sp_loop
rts

*キャラクターパターンDATA  

 

  .org $1000
.db $03,$07,$04,$0F,$0F,$3F,$7F,$1F,$23,$3F,$1F,$0F,$0A,$32,$78,$26 ;yuusha(DQ)正面
.db $C0,$E0,$20,$F0,$F0,$FC,$FE,$F8,$C4,$FC,$F8,$F0,$50,$4C,$1E,$7C
.db $1F,$04,$0F,$1B,$13,$0E,$0E,$00,$27,$3F,$0F,$1F,$1F,$00,$0E,$00
.db $F0,$26,$F6,$D8,$C8,$00,$F0,$F0,$FE,$F0,$F0,$F8,$F8,$F0,$00,$F0
.db $02,$04,$04,$0C,$04,$3E,$7F,$1F,$23,$3F,$1F,$0F,$0F,$3F,$7F,$3F ;yuusha(DQ)後向
.db $40,$60,$E0,$F0,$E0,$FC,$FE,$F2,$C4,$FC,$F8,$F0,$F0,$FC,$FE,$FC
.db $0F,$64,$6F,$1B,$13,$0E,$0E,$00,$7F,$0F,$0F,$1F,$1F,$00,$0E,$00
.db $F0,$20,$F0,$D8,$C8,$00,$F0,$F0,$FC,$F0,$F0,$F8,$F8,$F0,$00,$F0

.db $06,$06,$0E,$0F,$0F,$01,$0F,$0C,$0F,$1F,$3F,$3F,$3F,$27,$0F,$0F ;yuusha(DQ)左右向
.db $E0,$70,$40,$F8,$F0,$F0,$F0,$F8,$E0,$F0,$F8,$F8,$A0,$20,$80,$C0
.db $08,$03,$0F,$1B,$13,$0E,$0E,$00,$0F,$0C,$08,$1F,$1F,$00,$0E,$00
.db $F8,$20,$F0,$D8,$C8,$00,$F0,$F0,$E0,$F0,$F0,$F8,$F8,$F0,$00,$F0
.db $06,$06,$0E,$0F,$0F,$01,$0F,$0C,$0F,$3F,$7F,$6F,$6F,$47,$0F,$0F
.db $E0,$70,$40,$F8,$F0,$F0,$F0,$E0,$E0,$F0,$F8,$F8,$A0,$20,$80,$80
.db $0C,$04,$0F,$1B,$13,$00,$0F,$0F,$0F,$0F,$0F,$1F,$1F,$0F,$00,$0F
.db $60,$20,$F0,$D8,$C8,$70,$70,$00,$80,$F0,$F0,$F8,$F8,$00,$70,$00

*スプライト構成DATA

 sp_data:
.db 100, 0, 0,100
.db 100, 1, 0,108
.db 108, 2, 0,100
.db 108, 3, 0,108
.db 100, 1,$40,100
.db 100, 0,$40,108
.db 108, 3,$40,100
.db 108, 2,$40,108

.db 100,$04,$00,100
.db 100,$05,$00,108
.db 108,$06,$00,100
.db 108,$07,$00,108
.db 100,$05,$40,100
.db 100,$04,$40,108
.db 108,$07,$40,100
.db 108,$06,$40,108

.db 100,$08,$00,100
.db 100,$09,$00,108
.db 108,$0a,$00,100
.db 108,$0b,$00,108
.db 100,$0c,$00,100
.db 100,$0d,$00,108
.db 108,$0e,$00,100
.db 108,$0f,$00,108

.db 100,$09,$40,100
.db 100,$08,$40,108
.db 108,$0b,$40,100
.db 108,$0a,$40,108
.db 100,$0d,$40,100
.db 100,$0c,$40,108
.db 108,$0f,$40,100
.db 108,$0e,$40,108

f:id:chien1956:20200203100328p:plain