第１９章

## 第１９章　マッパー３

### バンク切り替え

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

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

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

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

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

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

    	.bank 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するなんてとんでもない！となるはずですが、０番以外のマッパーではこれが常套手段になります。 マッパー３では、$8000~$FFFFまでのどこかに、切り替えたいバンクを書き込むだけでバンク切り替えができます。

### マッパー３サンプル

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

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

スクロール移動や地形の判定は、次章のテーマにでもしましょう。ちょっと難航しているので・・・。 他のマッパーも扱いたいところです。
近況(2004/6/20)　４方向スクロール面倒くさくてやる気でねー・・・。
４方向スクロールはnesdev.parodius.comにScroll Demoというサンプルがあるので、それを参考にするといいと思います。

トップページ 前のページ

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