
マルチメモリコントローラまたはメモリ管理コントローラ[ 1 ](MMC )は、さまざまなビデオゲーム開発者が任天堂エンターテインメントシステム(NES)カートリッジで使用するために設計したさまざまな特殊チップです。これらのチップは、元のコンソールの機能を拡張し、元のコンソールだけでは提供できない機能を備えたNESゲームを作成することを可能にします。基本的なNESハードウェアは、合計40KBのROM、最大32KBのPRG、および8KBのCHRしかサポートしていないため、単一のタイルとスプライトテーブルしか使用できません。この制限は、ファミコンが市場に出てから最初の2年以内に急速に達し、ゲーム開発者はコンソールの機能を拡張する方法を求め始めました。
エミュレーションやホームブリューのコミュニティでは、これらのチップはマッパーとしても知られています。[ 2 ]
CNROM は、ファミコンに導入された最も初期のバンキング ハードウェアです。これを使用した最初のゲームは、 1985 年後半にリリースされた忍者じゃじゃ丸くんです。単一の 7400 シリーズのディスクリート ロジック チップで構成されています。CNROM は、単一の固定 PRG バンクと最大 8 つの CHR バンクをサポートし、合計 96KB の ROM になります。サードパーティのバリエーションの中には、追加の機能をサポートするものもありました。CNROM ゲームの大半は 32k CHR ROM ですが、16k CHR ROM を持つものもあります。3 つのゲーム (忍者じゃじゃ丸くん、ジャスト、シティ コネクション (J)) は、16k PRG ROM と 16k CHR ROM を持っています。ファミコンの CNROM ゲームの中には、ROM ではなく RAM で実行されていることがゲームに検出された場合に CHR データへのアクセスを防止するように設計されたダイオード セットアップで構成される弱いコピー プロテクションを組み込んだものもありました。ほとんどの CNROM ゲームは、ゲームのレベル データを CHR ROM の未使用部分に配置し、それを読み取るために PPU をブランクします。これにより、PRG ROMの空き容量が増え、追加のゲームロジックやその他のデータに利用できるようになります。
初期のNESマッパーは、7400シリーズのディスクリートロジックチップで構成されています。[ 1 ] : 29 UNROMは1986年後半に登場しました。1つの固定16KB PRGバンクをサポートし、残りのPRGは切り替え可能です。[ 3 ]グラフィックデータを保持するための専用ROMチップ(任天堂ではCHRと呼ばれています)の代わりに、UNROMを使用するゲームはプログラムROMにグラフィックデータを格納し、実行時にカートリッジのRAMにコピーします。これにより、アニメーションタイルやグラフィック変換などの効果が可能になり、CHR ROMゲームよりも必要なタイルの総数が少なくなります。後者はバンク間でタイルを複製する必要があることが多いためです。ただし、PRG ROMの一部はグラフィックを保持するために使用する必要があるため、コードやその他のデータのためのスペースが少なくなります。UNROMゲームの大部分は128k PRG ROMを使用していますが、Paperboy 2などの一部のゲームは256kを使用しています。クレイジークライマーというゲームでは、PCMチャネルサンプルをサポートするために、通常の$C000-$FFFFではなく、$8000-$BFFFに固定されたPRGバンクが設定されている。[ 1 ]: 29

MMC1は、PRG RAM、バッテリーバックアップセーブ、および多方向スクロール構成をサポートする任天堂初のカスタムMMC集積回路です。これは最も広く使用されているファーストパーティマッパーであり、MMC1カートリッジボードのバリエーションは他のどのタイプよりも多く存在します。最大メモリ容量は、PRG ROMが512k、CHR ROMが128kです。オプションでCHR RAMを使用することもできます。その場合、グラフィックはPRG ROMに保存され、必要に応じてCHR RAMにコピーされます。[ 1 ] : p.30このチップには、 MMC1A、MMC1B1、MMC1B2、MMC1B3 、およびMMC1C の少なくとも5つの異なるバージョンがあります。異なるバージョン間の違いはわずかで、主にセーブゲームメモリ保護動作によるものです。MMC1チップは、異なるメモリバンクの切り替えを可能にします。プログラムROMは16KBまたは32KBのチャンクで選択でき、キャラクターROMは4KBまたは8KBのチャンクで選択できます。このメモリコントローラの珍しい特徴は、入力がパラレルではなくシリアルであるため、回路にコマンドを送信するには5回の連続書き込み(ビットシフト付き)が必要であることです。MMC1にはPRG RAMへの書き込みアクセスを無効にする機能がないため、バッテリーセーブを使用するゲームでは、セーブデータの破損を防ぐために電源オフ時にリセットボタンを押し続ける必要があります。チップのレジスタはシリアルにアクセスされるため、複数の書き込みが必要となり、結果としてMMC1でのROMバンクの切り替えは遅くなります。[ 4 ]
MMC2は、 マイク・タイソンのパンチアウト!!と、マイク・タイソンに代わる後の再リリース版でのみ使用されています。8KBのプログラムROMバンクを1つ選択でき(残りの24KBはロックされます)、キャラクターROMは4KBバンクの2組で選択できます。ビデオハードウェアがメモリから特定のグラフィックタイルをロードしようとすると、これらは自動的に切り替わり、ゲーム自体が手動で切り替える必要なく、画面上でより多くのグラフィックを使用できるようになります。[ 5 ]

MMC3は1988年に発表され、8 Eyesが初めて使用されたゲームです。スプライト0を犠牲にすることなく分割画面スクロールを可能にするIRQタイマーが追加され、2つの選択可能な8KBプログラムROMバンクと、2つの2KB+4つの1KBの選択可能なキャラクターROMバンクが追加され、スプライトとタイルデータの簡単な即時スワップが可能になりました。8KBのセーブゲームRAMがサポートされています。最大ROM容量は512k PRGと256k CHRです。MMC1のシングルスクリーンミラーリングモードはありません。MMC3はPRG RAMへの書き込みアクセスを無効にすることをサポートしているため、バッテリーバックアップセーブを使用するゲームでデータ損失を防ぐために電源オフ時にリセットを押し続ける必要がありません。MMC3レジスタは2回の書き込みでアクセスできるため、MMC1よりも高速にROMバンクを切り替えることができます。シャープとNECによって製造された2つの異なるMMC3バリアントがありました。NECチップは1つのIRQのみをサポートし、シャープのチップは画面の8行ごとに1つのIRQをサポートします。[ 6 ]
このチップは3つのゲームでのみ使用されており、いずれも日本国内でファミコン向けにのみ発売され、インテリジェントシステムズによって開発されました。機能的にはMMC2とほぼ同じですが、唯一の違いは、MMC4がプログラムROMを8KBバンクではなく16KBバンクで切り替え、ゲームデータを保存するためのバッテリーバックアップSRAMをサポートしている点です。[ 7 ]
MMC5は任天堂の最も先進的なMMCです。当初は最も高価なものでもありました。このチップを定期的に使用したのはコーエーだけでした。コナミのVRC6に似ていますが、割り込み処理の仕組みが異なります。このチップには、1KBの追加RAM、2つの追加の矩形波サウンドチャンネル、1つの追加のPCMサウンドチャンネル、垂直分割画面スクロールのサポート、グラフィック機能の向上(画面ごとに256種類ではなく16,384種類のタイルが使用可能になり、8x8ピクセルの背景タイルそれぞれに、2x2タイルグループごとに1つのカラーセットに制限されるのではなく、独自のカラー割り当てが可能)、高度に設定可能なプログラムROMとキャラクターROMバンク切り替え、スキャンラインベースのIRQカウンターがあります。MMC5は合計2MBまでのROMをサポートしていますが、市販のゲームで1MBを超えるものはありませんでした。[ 8 ]
MMC6はMMC3と似ていますが、バッテリーバックアップで保存できる1KBのRAMが追加されています。[ 9 ]
ファミコンディスクシステムのASICは拡張オーディオチップであり、周波数変調合成と同様の音生成のための位相変調器(PM)を内蔵した、シングルサイクル(6ビット×64ステップ)のウェーブテーブルルックアップ合成の1チャンネルをサポートしています。ディスクシステムゲームのカートリッジ版の中には、オーディオチャンネルをMMCに置き換えたものもあります。
A*ROM MMCは、それを使用するAMROM、ANROM、AOROMカートリッジボードにちなんで名付けられ、RareのChris Stamperによって開発され、任天堂によって製造されました。Rareが任天堂、Tradewest、GameTek、Acclaim、およびMilton Bradley向けに開発したゲームに搭載されています。[ 10 ] PRG ROMを32KBの単一のピースで切り替えることができ、CHR RAMを使用して最大256KBの合計ROMを実現します。他のチップとは異なり、1つのスクリーンミラーリングを使用します。[ 11 ]
コナミ、サンソフト、ジャレコ、アイレム、バンダイ、ナムコなど、日本のメーカー数社が独自のファミコンカートリッジ、PCB、マッパーを製造していた。任天堂はNESカートリッジの製造をより厳しく管理しており、サードパーティは標準の灰色のNESカートリッジシェルと10NESロックアウトチップを搭載した場合にのみ独自のハードウェアを使用できたため、コスト上の理由からほとんどのサードパーティはそうせず、任天堂のハードウェアを購入することを選択した。アクレイム、コナミ、テンゲンは独自のカートリッジPCBを製造し、サードパーティのマッパーを使用していた。サンソフトも1つのゲーム(バットマン:リターン・オブ・ザ・ジョーカー)で同様のことを行った。
VRC2はコナミ製のチップで、プログラムROMを8KBバンクで、キャラクターROMを1KBバンクで切り替えることができます。このMMCにはVRC2aとVRC2bの2つの既知のバージョンがあります。[ 13 ]
日本語版のサラマンダーでのみ使用されます。

VRC4チップはVRC2チップと似ていますが、VRC4では512KBのCHR容量、2つの8KB PRG ROMバンキングモード、および1つのスクリーンミラーリングが可能になっています。
コナミの教育ゲーム「スペーススクール」シリーズのQTaアダプタでのみ使用されています。[ 15 ]

VRC6 (Virtual Rom Controller) は、コナミ製の高度な MMC チップで、プログラム コードとグラフィックの両方のバンク切り替えと、スキャンライン カウンターとしても機能する CPU サイクルベースのIRQカウンターをサポートしています。このチップには、3 つの追加サウンド チャンネル (それぞれ8デューティ サイクルの 2 つの矩形波、100% デューティ サイクルを使用して PCM サンプルを再生するように構成可能、および 1 つのノコギリ波) も含まれています。これは、 Castlevania III: Dracula's Curseの日本版であるAkumajō Densetsuで使用されていますが、欧米版では任天堂の MMC5 を使用しています。Nintendo Entertainment Systemは設計上、カートリッジで追加のサウンド チャンネルを追加できないため、ファミコン版のサウンド トラックはこれらの仕様に従って再作成されました。欧米版のサウンド トラックは、NES に組み込まれている 5 つの標準サウンド チャンネルを使用しています。[ 16 ]
VRC7はコナミの高度なMMCチップで、VRC6と同等のバンク切り替えとIRQカウントをサポートし、6チャンネルの2オペレーションFMシンセシスを提供するYM2413派生チップも搭載しています。高度なオーディオハードウェアはファミコンゲーム「ラグランジュポイント」でのみ使用されています。日本版の「タイニートゥーンアドベンチャーズ2」もVRC7を使用していますが、拡張オーディオは利用していません。[ 17 ] [ 18 ]拡張オーディオ部分の欠点は、低音域で目立つ量子化ノイズが発生することです。これはVRC7のFMチップのベースとなっているYM2413からの引き継ぎです。
FCG-1またはFCG-2は、機能面ではMMC3と類似しています。オプションとして、バンダイのデータックシステム、または128バイトもしくは256バイトの小型シリアルSRAMをサポートしており、このSRAMはマッパーレジスタを介して間接的にアクセスされるため、ファミコンのCPUからは直接アクセスできません。
109は、NESカートリッジに搭載された数少ない任天堂製以外のマッパーの一つでした。MMC1に似ていましたが、アドレス指定できるメモリ容量ははるかに小さく、8KBのPRGバンキングと1KBのCHRバンキングに対応していました。
163は日本限定のゲームでのみ使用されました。その性能は任天堂のMMC3より若干優れていました。バリエーションには4ビットの波形サンプルを再生する追加のサウンドハードウェアが搭載されていました。1~8チャンネルの追加サウンドチャンネルをサポートしていますが、十分な数のチャンネルを有効にすると、時分割多重化のノイズが目立つようになるため、エイリアシングが発生します。
FME-7は、サンソフトがNESおよびファミコンカートリッジ向けに開発したメモリマッピング回路です。プログラムROMを8KBバンク、キャラクターROMを1KBバンクで切り替えます。また、指定されたCPUクロックサイクル数後にIRQ信号を生成するハードウェアも内蔵しており、処理能力を最小限に抑えながら分割画面効果を実現します。

このバージョンのFME-7には、広く使用されているヤマハYM2149(SSG)の派生版が搭載されており、これは人気のAY-3-8910チップの派生版です。
一部の個人開発者(自作開発者)や非公式開発者は、NES用のカスタムMMCを作成しており、そのほとんどは単に利用可能なメモリを拡張するものです。
228は、ゲーム「Action 52」と「Cheetahmen II」で使用するために開発された、シンプルなバンク切り替え式MMCです。ネームテーブル制御ビットは備えていません。「Action 52」のマルチカートリッジには、ゲーム終了時に古いメニュー選択内容を格納する16ビットの小さなレジスタ領域も含まれています。
GTROM(またはCheapocadabra)は、2015年にホームブリュー市場向けに開発された、自己書き換え可能なMMCです。このボードには、512KBのPRG ROM、16KBのCHR ROM、および2つのLEDが搭載されています。GTROM自体にはPRG RAMは搭載されていませんが、NESソフトウェアでPRG ROMを書き換えることができるため、セーブデータの保存が可能です。
MXM-1は、自作ゲームFormer Dawnで使用するために2022年に開発されたカスタムMMCです。ほとんどの非ライセンスMMCとは異なり、標準NESの機能セットを大幅に拡張し、より多くの色を使用するために8x1属性を使用できるほか、FMV再生、拡張オーディオ(エコーバッファ、ウェーブテーブルサポート、スムーズシンク関数ベースの補間を備えた8チャンネルのPCMオーディオ)、768MのROM(間接的に2.8G)と1MのRAMへの直接アクセスも実現しています。[ 19 ]