Future Driver

メモリー マッパー

カートリッジに割り当てられたリニアなメモリー空間は 0x000000 〜 0x7FFFFF の4MBytesですが、後期のソフトはより大きなROMサイズを必要とする様になります。 つまり4MBytesを超えるメモリー空間が必要なソフトでは、 他機種と同じくメモリー マッパーが必要になります。 ここでは Super Street Fighter II に搭載されたマッパーについて解説します。

マッパー I/Oのアドレス

以下の8つのI/Oポートがあります。

0xA130F1	ROM/RAM選択
0xA130F3	68000のメモリー空間 0x080000 〜 0x0FFFFF に割り当てるカートリッジ領域
0xA130F3	68000のメモリー空間 0x100000 〜 0x17FFFF に割り当てるカートリッジ領域
0xA130F5	68000のメモリー空間 0x180000 〜 0x1FFFFF に割り当てるカートリッジ領域
0xA130F7	68000のメモリー空間 0x200000 〜 0x27FFFF に割り当てるカートリッジ領域
0xA130F9	68000のメモリー空間 0x280000 〜 0x2FFFFF に割り当てるカートリッジ領域
0xA130FB	68000のメモリー空間 0x300000 〜 0x37FFFF に割り当てるカートリッジ領域
0xA130FD	68000のメモリー空間 0x380000 〜 0x3FFFFF に割り当てるカートリッジ領域

メモリータイプとプロテクト

ポート 0xA130F1 で68000のメモリー空間 0x200000 〜 0x3FFFFF がROMかRAMかを指定します。 これはバックアップRAM等の書き込み可能なメモリー空間を持つカートリッジで有用です。 Bit 0 に 1 をセットするとRAMとなります。 Bit 1 に 0 をセットすると書き込み可能になります。 つまりROMのみで構成されたカートリッジでは0xA130F1 に 0x00 を書き込めば良い事になります。

バンク切り替えポート

ポート 0xA130F3 〜 0xA130FF は 512KBytes 単位で区切られた個々のバンクに割り当てるカートリッジ領域をセットします。 68000のメモリー空間 0x000000 〜 0x07FFFF に対してバンク切り替えを行うことは出来ず、 カートリッジ領域 0x000000 〜 0x07FFFF に固定されています。

コード例

簡易的にROMカートリッジの前半4MBytesをリニアにマッピングする例を以下に挙げます。

	*(uchar *)0xA130F1 = 0x00;	/* ROM/RAM Select & Writable */
	*(uchar *)0xA130F3 = 0x01;	/* 0.5M */
	*(uchar *)0xA130F5 = 0x02;	/* 1.0M */
	*(uchar *)0xA130F7 = 0x03;	/* 1.5M */
	*(uchar *)0xA130F9 = 0x04;	/* 2.0M */
	*(uchar *)0xA130FB = 0x05;	/* 2.5M */
	*(uchar *)0xA130FD = 0x06;	/* 3.0M */
	*(uchar *)0xA130FF = 0x07;	/* 3.5M */


inserted by FC2 system