ドラクエ風RPGファミコンプログラム パレットの設定

第15回

*今回からは、やっと本題であるファミコン

 プログラミングをやります。  

【パレットの設定】

 ファミコンのパレットコードは $00~$3f で、

 64色(実際には52色)中、同時に16色使えます。
 パレットは BG・スプライト各 4色4セット

 用意されて います。

f:id:chien1956:20200104080721j:plain

【パレット1欄】

 

 パレットテーブルは、PPUメモリの$3F00~$3F1F

 なの で、アドレスレジスタの$2006に、
 ロード先のアドレス$3F00を書き込みます。
 しかしレジスタのサイズは8ビットなので、

 2回に分けて書き込みます。

*下は、パレットテーブルのアドレスを

 アドレスレジスタ に書き込むコード。

lda #$3f     

sta $2006  ;アドレスレジスタ $2006に、

                     ; パレットテーブルのアドレス上位$3fを

                         ;書き込む。

lda #$00   ;アドレスレジスタ $2006に、

sta $2006      ;パレットテーブルのアドレス下位$00を

                         ;書き込む。

パレットデーターの書き込みは、データーレジスタ$2007に、書き込みます。

*下は、パレットデーターをアドレスを

   データーレジスタに書き込むコード。

lda #$20      ;パレットデーター(白色)をAレジスタsta $2007             ;にセット。
                     ;パレットデーターを,データーレジスタ                               ;$2007に、書き込む。

*上に記載したコードをTEST用のプログラムに書いて、      コンパイル、実行してください。
    画面が白くなったと思います、それは背景色に $20 を        設定したからです。
    FUECXのDebug~PPU Viewerで、確認してください。
    パレットが 設定されているのがわかります。

    ×印が、設定されたところ。

 

f:id:chien1956:20200104081158p:plain

【PPU画像】

 *パレットデータの値を変えて、試して見て下さい、

  0番目は、$0f(黒色)を設定するのが、

  一般的です。

  次回は、パレットの続きをやります。