Les contrôleurs multi-mémoire ou contrôleurs de gestion de mémoire[1] ( MMC ) sont des puces spéciales conçues par divers développeurs de jeux vidéo (notamment Nintendo) pour être utilisées dans les cartouchesNintendo Entertainment System (NES). Elles élargissent le champ des possibles de la console et permettent de créer des jeux NES que la console seule n'était pas en capacité d'exécuter. Le matériel de base de la NES ne prend en charge que 40 Ko de ROM au total, jusqu'à 32 Ko de PRG et 8 Ko de CHR, donc une seule tuile et une seule table de sprites sont possibles. Cette limite a été rapidement atteinte au cours des deux premières années de commercialisation de la Famicom et les développeurs de jeux ont commencé à demander un moyen d'étendre les capacités de la console. Cette capacité d'évolution fut un des grands arguments de Nintendo quant au support cartouche jusqu'à la Nintendo 64 qui fut la dernière à en tirer partie.
Dans les communautés d'émulation et de Homebrew, ces puces sont également connues sous le nom de mappeurs[2].
CNROM est la toute première puce introduite sur la Famicom début 1986, avant même son arrivée en Europe. Il se compose d'une seule puce de la série 7400. CNROM prend en charge une seule banque PRG fixe et jusqu'à huit banques CHR pour une ROM totale de 96 Ko. Certaines variantes tierces prenaient en charge des fonctionnalités supplémentaires. De nombreux jeux CNROM stockent les données de niveau du jeu dans la ROM CHR, effaçant au passage l'écran durant leur lecture.
Les premiers mappeurs NES sont composés de puces de la série 7400[3]. L'UNROM est apparu fin 1986. Il prend en charge une seule banque PRG fixe de 16 Ko, le reste du PRG étant modifiable[4]. En lieu et place d'une puce ROM dédiée pour contenir les données graphiques (appelée CHR par Nintendo), les jeux utilisant UNROM stockent les données graphiques sur la ROM du programme et les copient sur une RAM de la cartouche durant son fonctionnement[3].
Le Multi Memory Controller 1 est le premier circuit intégré MMC personnalisé de Nintendo à permettre de sauvegarder et d'utiliser des scrolling multidirectionnel[5]. La puce possède au moins cinq versions différentes : MMC1A, MMC1B1, MMC1B2, MMC1B3 et MMC1C . Les différences entre les différentes versions sont minimes et tournent autour du comportement de protection de la mémoire des sauvegardes. La puce MMC1 permet de changer de banque de mémoire. La ROM du programme peut être sélectionnée en morceaux de 16 Ko ou 32 Ko, et la ROM des caractères peut être sélectionnée en morceaux de 4 Ko ou 8 Ko. Il se démarque du fait de son entrée qui est en série plutôt qu'en parallèle, donc 5 écritures séquentielles (avec décalage de bits) sont nécessaires pour envoyer une commande au circuit[6].
La MMC2 n'est utilisé que dans Mike Tyson's Punch-Out!! et la réédition qui a remplacé Mike Tyson (nommé simplement Punch-Out!! avec comme adversaire final un certain Mr.Dream) Une seule banque de 8 Ko de ROM de programme peut être sélectionnée (les 24 Ko restants étant verrouillés) et la ROM de caractères peut être sélectionnée dans deux paires de banques de 4 Ko, qui seraient automatiquement changées lorsque le matériel vidéo tente de charger des tuiles graphiques particulières depuis la mémoire, permettant ainsi plus de graphiques à utiliser sur l'écran sans que le jeu lui-même ait besoin de les changer manuellement[7].
La MMC3 a été introduit en 1988. Il ajoute une minuterie IRQ pour permettre le scrolling de l'écran partagé sans sacrifier le sprite 0, ainsi que deux banques ROM de programme sélectionnables de 8 Ko et deux banques ROM de caractères sélectionnables de 2 Ko + quatre de 1 Ko, permettant de rendre plus efficaces les changements des données de sprite et de tuile. 8 Ko de RAM sont alloués aux sauvegardes[8].
Cette puce n'est utilisée que dans trois jeux, tous sortis uniquement pour la Famicom au Japon et développés par Intelligent Systems. Elle est presque identique dans son fonctionnement au MMC2, l'unique différence étant que le MMC4 commute la ROM du programme dans des banques de 16 Ko contrairement au 8 Ko de la MMC3 et prend en charge une SRAM alimentée par batterie pour permettre de sauvegarder[9].
La MMC5 est la MMC la plus avancée de Nintendo. C'était à l'origine aussi la plus cher. Seul Koei utilisait régulièrement cette puce. Elle est similaire à la VRC6 de Konami, mais la gestion des interruptions fonctionne différemment. La puce dispose d'un Ko de RAM supplémentaire, de deux canaux sonores à ondes carrées supplémentaires, d'un canal sonore PCM supplémentaire, de la prise en charge du scrolling vertical de l'écran partagé, de capacités graphiques améliorées (rendant 16 384 tuiles différentes disponibles par écran au lieu de seulement 256, et permettant à chaque écran individuel de 8x8). une tuile d'arrière-plan de pixels pour avoir sa propre attribution de couleur au lieu d'être limitée à un jeu de couleurs par groupe de tuiles 2x2), une commutation de ROM de programme et de banque de ROM de caractères hautement configurable ou encore d'un compteur IRQ basé sur une ligne de balayage. Le MMC5 prend en charge des ROM de 2 Mo au total, mais aucun jeu commercialisé ne dépasse 1 Mo[10].
L'ASIC du Famicom Disk System est une puce audio étendue, qui prend en charge un canal de synthèse de recherche par table d'ondes à cycle unique (6 bits × 64 pas) avec un modulateur de phase (PM) intégré pour une génération de son similaire à la synthèse par modulation de fréquence. Certaines conversions de jeux Disk System vers le support cartouche (le Disk System étant une exclusivité nippone, nombre d'exclusivité ont dû être retravaillées pour arriver en occident) ont des MMC pour remplacer le canal audio manquant.
L'A*ROM MMC, du nom des cartouches AMROM, ANROM et AOROM qui l'utilisent, a été développée par Chris Stamper, cofondateur de Rare, et fabriquée par Nintendo. On la retrouve dans les jeux développés par l'entreprise anglaise pour différents éditeurs tels que Nintendo, Tradewest, GameTek, Acclaim et Milton Bradley. Il permet de commuter la ROM PRG en un seul morceau de 32 Ko et utilise la RAM CHR pour un total de ROM de 256 Ko. Contrairement à d'autres puces, il utilise la mise en miroir d'un seul écran[12].
Puces tierces
Nintendo a gardé le contrôle sur le matériel commercialisé à l'échelle internationale et n'a pas autorisé des développeurs tiers à utiliser leurs propres PCB et autres mappeurs. Ce fut le cas jusqu'à la fin de vie commerciale de la NES où Nintendo a assoupli les restrictions. C'est pour cette raison que la plupart des mappeurs tiers ne seront trouvés que dans les cartouches Famicom ou sans licence.
Le VRC2 est une amélioration de la précédente, elle permet de commuter la ROM dans des banques de 8 Ko et la ROM de caractères dans des banques de 1 Ko. Cette MMC possède deux révisions connues : VRC2a et VRC2b[14].
Jeux : Gradius IIJP, Crisis Force, Bio Miracle : Boku tte Upa, Ganbare Goemon Gaiden 2, WaiWai World, WaiWai World 2, Twinbee 3[15].
La puce VRC4 est similaire à sa prédécesseure, à l'exception qu'elle permet une capacité CHR de 512 Ko, 2 modes bancaires ROM PRG de 8 Ko ainsi qu'une mise en miroir d'écran.
La VRC6 (Virtual Rom Controller) est une puce MMC de Konami qui prend en charge la commutation de banque pour le code de programme ainsi que les graphiques, ainsi qu'un compteur IRQ basé sur le cycle du processeur, qui peut également servir de compteur de balayage. La puce prend en charge trois canaux sonores supplémentaires (deux ondes carrées de huit cycles de service chacune, configurables de manière à lire des échantillons PCM en utilisant un cycle de service de 100 %, et une seule onde en dents de scie ). Il est utilisé dans Akumajō Densetsu (le Castlevania III : Dracula's Curse japonais), tandis que la version occidentale utilise le MMC5 officiel. Étant donné que la Nintendo Entertainment System n'offre pas la possibilité aux cartouches d'ajouter des canaux sonores supplémentaires, la bande originale de la version japonaise a été retravaillée pour suivre ces spécifications; ainsi, la bande-son de la version occidentale est implémentée par les cinq canaux sonores intégrés à la NES occidentale[17]. C'est pour cette raison que les deux bandes sonores des deux versions sont très différentes dans leur sonorité malgré le fait que les musiques soient les mêmes[18],[19].
Le VRC7 est une puce MMC très avancée de Konami, prenant en charge la commutation de banque et le comptage IRQ équivalents au VRC6, et contenant un dérivé YM2413 fournissant 6 canaux audio de synthèse FM. Cette capacité est utilisé uniquement dans le jeu Lagrange Point, exclusivement sorti au Japon . La version japonaise de Tiny Toon Adventures 2 utilise le VRC7 mais pas les capacités audio du VRC7[20]. Cependant, il présente un bruit de quantification, perceptible dans les notes les plus graves.
Le 163 n'a été utilisé que dans des jeux exclusivement japonais. Ses capacités étaient un peu meilleures que celles du MMC3 de Nintendo. Une variante contenait du matériel sonore supplémentaire qui lit des échantillons d'ondes 4 bits. Il prend en charge 1 à 8 canaux sonores supplémentaires, cependant, un aliasing sonore apparaît lorsqu'un nombre important de canaux est activé en raison du multiplexage temporel de plus en plus audible.
Le FME-7 est un circuit de mappage mémoire développé par Sunsoft pour être utilisé dans les cartouches, peu importe la région. Il change la ROM du programme dans des banques de 8 Ko et change les banques de ROM de caractères de 1 Ko. Il contient également de quoi générer des signaux IRQ après un nombre spécifié de cycles d'horloge du processeur, obtenant ainsi des effets d'écran partagé en utilisant un minimum de puissance du processeur.
Certains indépendants (homebrew) et développeurs non licenciés ont créé des MMC personnalisées pour la NES, dont la plupart étendent simplement la mémoire disponible.
228 est une simple MMC de changement de banque développée pour les jeux non-licenciés Action 52 et Cheetahmen II. Il n'a pas de bit de contrôle nommable. Dans le multicart Action 52, il contient également une petite zone de registre de 16 bits qui contient le menu lors du changement de jeu (le jeu étant composé de 52 jeux sur le papier).
GTROM
Fabricant: Membler Industries
GTROM ou Cheapocadabra est une MMC auto-flashable développée en 2015 pour le marché des homebrews. La carte contient 512 Ko de ROM PRG, 16 Ko de ROM CHR ainsi que deux LED. Bien que le GTROM ne contienne pas de RAM PRG, il est possible de sauvegarder sa partie grâce à la ROM PRG pouvant être flashée directement par le jeu.