第19章 マッパー3


バンク切り替え

 これまでずっとマッパー0という前提で説明してきましたが、これでゲームを作るとなると、やはりメモリ容量が不足します (初期のファミコンゲームはこの容量で非常に頑張っているのですが)。 特にグラフィックデータ8キロバイトでは、RPGやSLGを作るのはとても無理でしょう。 そこで、ファミコンが発売されてしばらくすると、ROM容量を拡張したさまざまな種類のカセットが登場しました。 NESASMではマッパーというフォーマットを設定すれば、様々なロムのフォーマットを利用することができます。

 まずは簡単なマッパーを試してみましょう。最も簡単なマッパーは、マッパー3(CNROM)だと思われます。 このマッパーはファミコンの歴史の中でも初期のマッパーで、特長は容量がマッパー0の倍になっていることです。 たったそれだけか!と言われればその通りで、倍でも足りないのですが、まずは最初ってことでこのマッパーを使用しましょう。

 マッパー3を使用するには、NESヘッダを以下のように設定します。


	.inesprg 1 ;   - プログラム1バンク
	.ineschr 2 ;   - グラフィック2バンク
	.inesmir 1 ;   - 垂直ミラーリング
	.inesmap 3 ;   - マッパー3番(CNROM)

 グラフィックを倍の2バンク使用するので、.neschrに2を指定します。.inesmapには3を指定します。 グラフィックのバンクは以下のように記述します。

	.bank 2			; バンク2
	.org $0000		; $0000から開始
	.incbin "giko4.spr"	; スプライトデータ
	.incbin "giko7.bkg"	; 地形BGデータ

	.bank 3			; バンク3
	.org $0000		; $0000から開始
	.incbin "giko4.spr"	; スプライトデータ
	.incbin "giko8.bkg"	; 敵&メッセージBGデータ

 このように、スプライトとBGを従来の倍持つことができます。ただし、同時に使用できる量は変わりません。 同時に使える量は、ファミコンハードのRAM容量の問題なので、いくらROM容量を増やしてもどうにもなりません。 また、倍になったバンクから、好きなデータを自由に選んで利用することもできません。バンク2か3どちらか一方だけを 同時に使用できます。それを切り替えるにはバンク切り替えを行います。バンク切り替えは以下のようにします。

	; VROMバンク切り替え
	lda #3			; バンク3
	sta $8000

 従来ならROM領域の$8000にstaするなんてとんでもない!となるはずですが、0番以外のマッパーではこれが常套手段になります。 マッパー3では、$8000~$FFFFまでのどこかに、切り替えたいバンクを書き込むだけでバンク切り替えができます。

マッパー3サンプル

 これをダウンロードして実行してください。RPGっぽい画面が出ます。 しかし移動はできません(4方向スクロールは次章に持ち越しってことで・・・)。Aボタンを押すとバンク切り替えを行い、 画面が切り替わります。

 このサンプルのBGキャラはマッパー0でも入りきるので、2バンクにする意味はあまり無いのですが、まあサンプルだからってことで。

 スクロール移動や地形の判定は、次章のテーマにでもしましょう。ちょっと難航しているので・・・。 他のマッパーも扱いたいところです。

 近況(2004/6/20) 4方向スクロール面倒くさくてやる気でねー・・・。
4方向スクロールはnesdev.parodius.comにScroll Demoというサンプルがあるので、それを参考にするといいと思います。


トップページ 前のページ
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送