ファミリーコンピューター ROMカセット マッパー1(MMC1)
PRG 512KBまたは256KB PRG32KBモード 16バンク、PRG16KBモード16バンク
CHR 128KB CHR 8KBモード 16バンク、CHR 4KBモード32バンク
拡張メモリ 16KB 2バンク(バックアップ可)
マッパー1のバンク切り替え
SPレジスタ(シリアル・パラレル)
/ROMSELアドレス($8000−$FFFF)内に
d7=1($80−$FF)のデータを書き込む事によってリセットされます
1回クリアビットを1にするだけでよい
d7=0にしてd0にシリアルデータを書き込む事によって
SPレジスタにシリアルデータが1ビット転送されます(d4からd0へ)
SPレジスタ自身は8ビットあるみたいですが
コントロールレジスタに5ビット転送されると
シフトレジスタからMMC1内のレジスタに転送されます
シリアルデータ出力途中で別のシリアルデータ出力を行うと
SPレジスタはリセットされるようです
$8000−$9FFF:設定レジスタR0 V−RAMコントロール
$A000−$BFFF: 〃 R1 CHRバンク0
$C000−$DFFF: 〃 R2 CHRバンク1
$E000−$FFFF: 〃 R3 PRGバンク
d7:クリアビット 1=オン、0=オフ
d6: −
d5: −
d4: −
d3: −
d2: −
d1: −
d0:セット データビット(クリアビットd7=0のとき)
コントロールレジスタ
R0 V−RAMコントロール
d4:CHRバンク 1=4KB 、0=8KB
d3:バンクサイズ 1=16KB 、0=32KB
d2:常駐PRG16KB(d3=1のみ)1=$8000 、0=$C000
d1:画面 1=4画面 、0=1画面
d0:スクロール モード 1=スクロールH、0=スクロールV
*クリアビット1後はd3=1、d2=1になる
d2の常駐PRG16KB d3=0の場合は無効
512KB(4MBit)ロムのカセットの場合 CHRバンクモードがA18の制御になります
画面モードで1画面モードではBG1のみが有効で残りはBG1のミラーになります
RPGバンク16KBモードは1=$8000〜$BFFFがバンク切換えエリア、$C000〜$FFFFがホームバンク
0=$C000〜$FFFFがバンク切換えエリア、$8000〜$BFFFがホームバンク
d1=0(1画面)の場合
d0 1=VRAM10H固定、0=VRAM10L固定
R1 CHRバンク指定コード下4K/8K (PPU$0000〜$0FFF)
d4:CRA16(4K)/CRA16(8K)
d3:CRA15 /CRA15
d2:CRA14 /CRA14
d1:CRA13 /CRA13
d0:CRA12 / −
*R0のd4 1=4Kバンク、0=8Kバンクによって変わる
4K PPU $0000〜$0FFF
8K PPU $0000〜$1FFF
R2 CHRバンク指定コード上4K (PPU$1000〜$1FFF)
d4:CRA16
d3:CRA15
d2:CRA14
d1:CRA13
d0:CRA13
*R0のd4 1=4Kバンク、0=8Kバンクによって変わる
4K PPU $1000〜$1FFF
8K PPU 未使用
R3 PRGバンク
d4:RAMバンク/ROMバンク 1=RAM、0=ROM
d3:RAM1 /PRA17
d2: PRA16
d1: PRA15
d0: PRA14 (R0 d3=0 32Kの時使用不可)
拡張メモリ(WRAM)
$6000−$7FFFに配置されます
HVC−SNROM−04の回路図
HVC−SNROM−07ではMMC1がMMC1Aになっているようです
HVC−SOROM−03の回路図
HVC−SUROM−01の回路図
MMC1の11ピン CRA16がPRG ROMのA18に繫がっています
MMC1 R1またはR2レジスタの設定でA18をコントロールできます
CHRバンクでコントロールする為、128KBのROMは使用できません
尚、HVC−SUROMでは8KBのCHR RAMを使用しています
Home へ戻る