ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編
第25回
*今回は、BG(背景)の描画手順を解説していきます、
ファミコンのがBGは大変複雑で、解説が後回しになったのはその為です。
ファミコンのハードについて、少しふれておきます。
ファミコン画面の解像度は、256×240で
16×16のタイルパターンが横16、縦15並びます。
【PPUアドレスレジスタと VBlank】
*BG描画用VRAMは、1画面$2000~$23ff.3画面$2400~$27ff(水平ミラーリング時)
1画面$2000~$23ff.2画面$2400~$27ff(垂直ミラーリング時)
*アドレスレジスタへDATAを書き込むには、VBlank時に書き込む必要があります。
例)
VBlank:
lda $2002 ;VBlank待ちループ
bpl VBlank
lda #$20 ;VBlank時に$2000(画面左上隅)に
sta $2006 ;#$01(1番目のパターン)が書き込まれます。
lda #$00
sta $2006
lda #$01
sta $2007
【スクロールレジスタ】
*上のコードでは、不完全で正しく表示されません、それはコントロールレジスタが
関係していますVRAMにアクセスするとスクロールレジスタも書き換えられてしまう ので
DATAをストア後、スクロールレジスタをリセットする必要があります。
例)
lda $2002 ;スクロールレジスタをリセット
lda #$00
sta $2005 ;X座標
sta $2005 ;Y座標
⁂ lda $2002 の意味はX座標とY座標の順番が不定な為それをリセットする必要があるからです。。
*次回は、プログラムの検証をしてみます。