ドラクエ風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、モノクロモード。
☆次回は、初期化とパレットの設定のサブルーチン化します。