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