ドラクエ風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座標の順番が不定な為それをリセットする必要があるからです。。

*次回は、プログラムの検証をしてみます。