ドラクエ風RPGファミコンプログラム講座 パターンテーブルの仕組み

第17回
アセンブラ入門編】

『2進数と16進数の解説』

アセンブラを学習するには、2進数と16進数は避けて通れないものです
 ✖✖進数というのは、××になると桁上がりするということです
 すなわち2進数なら2になったら、16進数なら16になったら桁が上がる
 ということです、具体的に言うと 0000,0001,0010,0011,0100
 のようになります、 16進数のほうは、1桁に0~15を表現しなければ
 なりません、どの様に表現するかというと0~9はそのまま10~15を
 アルファベットのA~Fで代用します、 0,1,3,4,5,6,7,8,9
 A,B,C,D,E,F のように表現します。
アドレス空間とBANK』
*PPUアドレス空間は、BANK 2に割り当てられてます、BANK 0は
メインメモリのアドレス空間、BANK 1は、割り込みベクターになっています。


『パターンテーブルの仕組み』
PPUアドレス
$0000-$0FFF パターンテーブル LOW
$1000-$1FFF パターンテーブル HIGH

ファミコンのパターンテーブルは8×8ピクセルのタイルパターンを256個格納出来ます、1ピクセル当たり2ビットで表現され4色が使用可能です、

それが BG・スプライト用に2つあります、それを切り替えることもできます。

 

プレーン0   プレーン1   16進データ
00100000   00000000    $20  $00
00110000   00000000     $30  $00
00111000   00000000    $38  $00
00111100   00000000    $3C  $00
00111100   00000000    $3C  $00
00111000   00000000    $38  $00
00110000   00000000    $30  $00
00100000   00000000    $20  $00

 

『パレットとプレーンの関係』

 

*1ピクセル2ビットというのは、プレーン0が0プレーン1が0のとき、

 パレット番号は0 プレーン0が1 プレーン1が0のとき パレット番号は1 

 プレーン0が1 プレーン1が1のとき、それがパレット番号は3になります。 

 下のコードを【画像1】のように入力して、コンパイル実行して、

 FUECXのPPU Viewerで確認して下さい。

 パターンテーブルに、カーソルが設定されているのが、わかります。

【画像2】 本来ならば、パターンエディター等を使うところですが、

 仕組みを,覚えることも大事なことなので、今回は手作業でやってみました。

 次回は、スプライトを、表示してみようと思います。

;********************************************************************
.bank 2
.org $0000
.db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.db $20,$30,$38,$3C,$3C,$38,$30,$20,$00,$00,$00,$00,$00,$00,$00,$00

f:id:chien1956:20200106084540p:plain

【画像1】

f:id:chien1956:20200106085156p:plain

【画像2】