ドラクエ風RPGファミコンプログラム講座 初期化の再考

第22回

☆今回は、これから本格的なプログラミングに入っていくまえに
 初期化について、再考します。

ファミコンの初期化】
1)初期化1:プログラムが走る状態。
*headerの設置
 .inesprg 1
 .ineschr 1
 .inesmir 1
 .inesmap 0

⁂上の2行は、4行目のマッパーが関係しています、いまの段階では
 深く知る必要はないでしょう。
 3行目のミラーリングは、画面のつながりを設定するもので0が水平
 1が垂直です、ドラクエ風の4方向スクロールは垂直に、
 設定されていますので、垂直にしました。
 ミラーリングのところは0を設定してFUECXの
 Name Tablu Viewerで確認して下さい。

*割り込みベクトルの設定
 .bank 1     ; バンク1
.org $FFFA    ; $FFFAから開始

.dw mainloop ; VBlank割り込み
.dw Start ; リセット割り込み。
.dw IRQ ; ソフトウェア割り込みによって発生
⁂VBlankについては、ゲームループのところで解説します。
 2行目は、電源投入時やリセットボタンが押されたとき、ジャンプするアドレス。
 3行目は、BRK割り込み発生時にジャンプするアドレス。
2)初期化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
.db $00,$42,$42,$42,$7E,$42,$42,$42,$00,$00,$00,$00,$00,$00,$00,$00
*CPUの初期化
   sei ; 割り込み不許可(MNI)
   cld ; デシマルモードフラグクリア
   ldx #$ff
   txs ; スタックポインタ初期化
*コントロールレジスタのクリア
⁂$2000,$2001 に #0をロードするのは
 画面表示のOFFするため。

lda #0
sta $2000
sta $2001

*パレットの設定
ldx #0
pal_loop:
lda pall,x
sta $2007
inx
; txa
cpx #32
bne pal_loop
loop000:
jmp loop000
pall:
.db $0f,$30,$33,$22
.db $0f,$00,$01,$02
.db $0f,$03,$04,$05
.db $0f,$06,$07,$08
.db $0f,$09,$21,$22
.db $0f,$23,$24,$25
.db $0f,$26,$27,$28
.db $0f,$11,$12,$13
*BG・スプライトの初期化
$2000:#%00001000

⁂設定内容は、VBlank割り込み禁止、スプライトサイズ8×8、

 GB用パターンテーブル 0、スプライト用パターンテーブル 1、

 PPUアドレス増加値 +1、表示するName Table ナンバー。


$2001:#%00011110

⁂設定内容は、背景色強調無し、スプライトの表示ON、BGの表示ON、

 スプライトクリップON、BGクリップON、モノクロモード。

☆次回は、初期化とパレットの設定のサブルーチン化します。