pal.exeを実行すると、このような画面が出ます。上段の16x2のマスは作成するパレットデータ、下段の16x4のマスは選択する色です。ここから色を上にドラッグドロップします。
上段の上の行がBG、下の行がスプライトのパレットです。
左から0番、1番、2番、、となります。スプライトやBGは、0・1・2・3、4・5・6・7、のように、連番で4色一組で使われます。
ただし、0番、4番、8番、12番は背景色になります。このうちスプライトの0番は背景全体の色になります。
lda #$3F sta $2006 lda #$00 sta $2006この後、2つ目のVRAMアドレスレジスタの$2007に、指定したアドレスにロードするパレットの値(1バイト)を書き込みます。 書き込むたびに対象が次のアドレスに自動的に移るので、必要な数だけストア(sta)を繰り返せば良いようになっています。
;Xの値は6 lda $2002, x ; Aに($2002+6)番地、つまり$2008の値をロードする。 ;Yの値は9 lda $2000, y ; Aに($2000+9)番地、つまり$2009の値をロードする。このインデックスレジスタの機能で、先ほどのパレットからのデータを順次読み込むことができます。
pallabel: .incbin "giko.pal" ; パレットをincludeする lda pallabel, x ; Aに(pallabel+x)の値をロードする。
; VRAMアドレスレジスタの$2006に、パレットのロード先のアドレス$3F00を指定する。 lda #$3F sta $2006 lda #$00 sta $2006 ldx #$00 ; Xに0をロードする。パレットの0番目 loadPal: ; ラベルは、「ラベル名+:」の形式で記述 lda pallabel, x ; Aに(ourpal + x)番地のパレットをロードする sta $2007 ; $2007にパレットの値を読み込む inx ; まだ説明されて無いが、これはXレジスタに値を1加算している cpx #32 ; Xを32(10進数。BGとスプライトのパレットの総数)と比較して同じかどうか比較している bne loadPal ; 上が等しくない場合は、loadPalラベルの位置にジャンプする ; Xが32ならパレットロード終了ラベルは":"をつけなくても良いのですが、このサイトでは":"をつけるように統一します。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||