Bank 0 - $8000番地から始まるプログラムROM領域。ここにプログラムを入れる。 Bank 1 - 割り込みテープル。$FFFA番地から始まる。 Bank 2 - スプライトと背景データを入れるバンク。VRAMの$0000番地から始まる。ここまでにRAMやROMという言葉が出てきていますが、RAMはファミコンハード本体の中にあるデータが読み書き可能な領域、 ROMはカセットの中にある読み取りしかできない領域と理解してください。
.inesprg 1 ; - プログラムにいくつのバンクを使うか。今は1つ。 .ineschr 1 ; - グラフィックデータにいくつのバンクを使うか。今は1つ。 .inesmir 0 ; - VRAMのミラーリングを水平にするか垂直にするか。とりあえず0(水平)にする。 .inesmap 0 ; - マッパー。0番にする。4行目のマッパーとは、ファミコンの容量制限を増やすためなどの目的で作られたROMの種別のことです。 0番は初期状態で、プログラム32kb,キャラクタ8kbが最大サイズです。3行目のVRAMのミラーリングについては、後の章で説明します。
.bank 0 ; バンク0 .org $8000 ; $8000から開始 ; ここからプログラムコード開始
.bank 1 ; バンク1に切り替える .org $FFFA ; $FFFAから開始 .dw 0 ; VBlank割り込み .dw Start ; リセット割り込み。起動時とリセットでStartラベルに飛ぶ .dw 0 ; ハードウェア割り込みとソフトウェア割り込みによって発生
.bank 2 ; バンク2に切り替える .org $0000 ; $0000から開始 .incbin "giko.bkg" ; 背景データのバイナリィファイルをincludeする .incbin "giko.spr" ; スプライトデータのバイナリィファイルをincludeするこの順番で並べると、背景がパターンテーブル0、スプライトがパターンテーブル1になります。このincbinはC言語の#includeのようなものです。対象はテキストファイルではありませんが (拡張子が背景は.bkg、スプライトは.sprとなってますが、.chrという拡張子のほうが一般的かもしれません)。
VRAMにもメモリマップの概念があり、以下の通りになっています。それぞれの領域の役割は以後の章で説明します。
$0000〜$0FFF パターンテーブル0 $1000〜$1FFF パターンテーブル1 $2000〜$23BF ネームテーブル $23C0〜$23FF 属性テーブル $2400〜$27BF ネームテーブル $27C0〜$27FF 属性テーブル $2800〜$2BBF ネームテーブル $2BC0〜$2BFF 属性テーブル $2C00〜$2FBF ネームテーブル $2FC0〜$2FFF 属性テーブル $3000〜$3EFF $2000-$2EFFのミラー $3F00〜$3F0F BG用パレット $3F10〜$3F1F スプライト用パレット $3F20〜$3FFF パレットミラー $4000〜$FFFF $0000-$3FFFのミラー
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||