ファミリーコンピューター 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 へ戻る