第２章

## 第２章　NESASM

### バンク

プログラムやグラフィックのデータは、バンク という単位に分けることができます。このサイトでは、以下のように３つに分けて格納します。

    	Bank 0 - $8000番地から始まるプログラムROM領域。ここにプログラムを入れる。

    	Bank 1 - 割り込みテープル。$FFFA番地から始まる。

    	Bank 2 - スプライトと背景データを入れるバンク。VRAMの$0000番地から始まる。

ここまでRAMやROMという言葉が出てきていますが、RAMはファミコンハード本体の中にあるデータが読み書き可能な領域、 ROMはカセットの中にある読み取りしかできない領域と理解してください。

### iNESヘッダ

エミュで動かすために、iNES形式のソースファイルには、ヘッダ情報を入れる必要があります。以下の４つを記述します。 また、各行の先頭には必ずタブを入れてください。

    	.inesprg 1	; - プログラムにいくつのバンクを使うか。今は１つ。
    	.ineschr 1	; - グラフィックデータにいくつのバンクを使うか。今は１つ。
    	.inesmir 0	; - VRAMのミラーリングを水平にするか垂直にするか。とりあえず0(水平)にする。
    	.inesmap 0	; - マッパー。０番にする。

マッパーというのは、ファミコンの容量制限を超えるために作られたROMの種別のことです。 0番の初期状態はプログラム32kb,キャラクタ8kbが限界ですが、これを増やすために 各メーカーが独自に開発したものです。VRAMのミラーリングについては、ずっと後の章で説明します。

### プログラム

プログラムはバンク０に配置し、開始アドレスは$8000とします。以下のように記述します。

    	.bank 0		; バンク０
    	.org $8000	; $8000から開始

    	; ここからプログラムコード開始

### ３つの割り込みハンドラ

バンク１には割り込みベクタテーブルを記述します。割り込みは非常に重要な処理を行う機能ですが、ここではリセットボタンを押すと最初に戻るだけにします。 割り込みを使う場合は、.dwには割り込みハンドラの先頭アドレスを記述します

    	.bank 1      ; バンク１に切り替える
    	.org $FFFA   ; $FFFAから開始

    	.dw 0        ; VBlank割り込み
    	.dw Start    ; リセット割り込み。起動時とリセットでStartラベルに飛ぶ
    	.dw 0        ; ハードウェア割り込みとソフトウェア割り込みによって発生

### グラフィックデータ

バンク２にはVRAM領域の$0000から開始する、背景BGデータ（背景にしか使えないわけではない）と スプライトを格納します。VRAMとは、6502が使用するRAMとは別に存在する、グラフィックデータのためだけのRAMだと思ってください。

    	.bank 2       ; バンク２に切り替える
    	.org $0000    ; $0000から開始

    	.incbin "giko.bkg"  ; 背景データのバイナリィファイルをincludeする
    	.incbin "giko.spr"  ; スプライトデータのバイナリィファイルをincludeする

この順番で並べると、背景がパターンテーブル０、スプライトがパターンテーブル１になります。このincbinはC言語の#includeのようなものです。対象はテキストファイルではありませんが。 (拡張子が背景は.bkg、スプライトは.sprとなってますが、.chrというのが一般的な気もしないでもないです)

VRAMにも当然メモリマップの概念があり、以下のようになっています。それぞれの領域の役割は以後の章で説明します。

    	$0000〜$0FFF パターンテーブル０
    	$1000〜$1FFF パターンテーブル１
    	$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のミラー

トップページ 前のページ 次のページ

FC2 |  | キャッシング 花 | 無料 掲示板 無料ホームページ