NESCD-001 : un véritable lecteur CD-ROM pour la Nintendo NES
Quand la NES rencontre le CD-ROM, plus de 40 ans après sa conception
Et si la Nintendo NES avait elle aussi eu droit à son lecteur CD-ROM ?
C'est précisément l'idée derrière NESCD-001, un projet open source développé par Throaty Mumbo qui transforme cette idée improbable en véritable extension matérielle fonctionnelle.
L'objectif n'est pas d'émuler une NES ou simplement de placer des ROM sur un CD : le NESCD utilise une véritable console Nintendo NES, un véritable lecteur CD-ROM IDE et un EverDrive N8 Pro.
Le CD devient ainsi un support depuis lequel la NES peut charger un jeu, mais également accéder à des pistes audio.
GitHub officiel du projet NESCD-001

Une NES équipée d'un lecteur CD-ROM
Le projet NESCD-001 est né d'une idée volontairement décalée.
ThroatyMumbo s'intéressait initialement au célèbre projet de lecteur CD-ROM destiné à la Super Nintendo, développé dans les années 1990 avant d'être abandonné.
Plutôt que d'en réaliser une nouvelle interprétation pour la SNES, il décide d'aller encore plus loin :
Pourquoi ne pas construire un lecteur CD pour la NES ?
Une machine commercialisée au Japon dès 1983 et dont l'architecture n'avait évidemment jamais été pensée pour manipuler directement plusieurs centaines de mégaoctets de données.
Le résultat est le NESCD-001.
Architecture du NESCD-001
RP2350B + EverDrive N8 Pro + lecteur CD-ROM IDE
Le NESCD ne transforme pas directement le bus cartouche de la NES en interface CD-ROM.
Le projet utilise une architecture intermédiaire particulièrement intéressante :
Code : Tout sélectionner
CD-ROM IDE
|
v
RP2350B
/ \
/ \
USB Audio
| |
v v
EverDrive Port d'expansion NES
N8 Pro
|
v
NES
Celui-ci sert de passerelle entre :
- le lecteur CD-ROM IDE 40 broches ;
- l'EverDrive N8 Pro ;
- la Nintendo NES ;
- et le circuit audio du système.
Comment un jeu NES peut-il démarrer depuis un CD ?
La NES n'exécute pas directement le programme depuis le CD.
Lorsqu'un disque compatible est inséré, le RP2350B lit la ROM NES présente sur le CD.
Cette ROM est ensuite envoyée par USB vers l'EverDrive N8 Pro.
Le microcontrôleur demande alors au menu de l'EverDrive d'installer puis d'exécuter automatiquement le jeu.
Le chemin est donc approximativement :
Code : Tout sélectionner
CD-ROM
|
Lecture de la ROM
|
v
RP2350B
|
USB
|
v
EverDrive N8 Pro
|
Chargement du jeu
|
v
NES
Le lecteur CD devient donc une véritable source de données externe, tandis que l'EverDrive assure l'interface avec l'architecture mémoire de la NES.
Et le CD continue à servir pendant le jeu
Le rôle du NESCD ne s'arrête pas au chargement de la ROM.
Une fois le jeu lancé, le RP2350B surveille une zone utilisée comme "mailbox" dans la CHR RAM de l'EverDrive.
Le logiciel exécuté sur la NES peut ainsi écrire une commande dans cette zone afin de demander au NESCD de lancer une piste musicale.
Le principe devient alors :
Code : Tout sélectionner
Jeu NES
|
Commande audio
|
CHR RAM / Mailbox
|
v
RP2350B
|
v
CD-ROM
|
Lecture de la piste
Audio CD : le port d'expansion de la NES entre en jeu
Pour l'audio, Throaty Mumbo avait initialement envisagé de transmettre les données via l'EverDrive.
La bande passante disponible sur la liaison USB de l'EverDrive s'est cependant révélée trop limitée pour cette utilisation sans mettre en œuvre une compression importante.
Le NESCD exploite donc une autre particularité intéressante de la NES : son port d'expansion inférieur.
Le système intègre notamment un DAC PCM5102.
Le signal audio provenant du CD est converti puis injecté dans l'entrée de mixage audio disponible via le port d'expansion de la console.
Cette solution présente également un autre avantage : elle permet de conserver un réglage indépendant du volume.
C'est la raison de la présence du potentiomètre visible sur la façade du NESCD.
La NES devient également... un lecteur de CD Audio
Conséquence assez amusante de cette architecture : le NESCD peut tout simplement transformer la Nintendo NES en lecteur de CD Audio.
Le projet fournit une ROM spécifique :
Code : Tout sélectionner
cdplayer.nes
La NES peut alors servir d'interface pour la lecture du disque.
Une fonction presque évidente une fois le matériel réalisé... mais à laquelle le créateur reconnaît lui-même ne pas avoir pensé lors de la conception initiale du projet !
Le hardware nécessaire
La configuration actuelle du NESCD-001 repose principalement sur :
- Nintendo NES
- EverDrive N8 Pro
- RP2350B
- lecteur CD-ROM IDE 40 broches
- DAC audio PCM5102
- PCB NESCD spécifique
- interface avec le port d'expansion de la NES
- alimentation 5 V / 12 V pour le lecteur et l'électronique

Le projet ne se limite pas à un prototype présenté en vidéo.
Throaty Mumbo publie les fichiers nécessaires à sa reproduction.
Un projet entièrement documenté et reproductible
Le dépôt GitHub contient notamment :
- les schémas électroniques ;
- le design du PCB ;
- le firmware ;
- les outils permettant de créer les disques ;
- un jeu de démonstration ;
- les modèles STL du boîtier à imprimer en 3D ;
- les fichiers destinés aux stickers et labels ;
- plusieurs captures et éléments de documentation.
Télécharger les sources du NESCD-001 sur GitHub
Créer son propre CD NESCD
Le dépôt fournit également les outils permettant de fabriquer une image disque.
Pour compiler la démonstration et générer le disque, plusieurs outils sont utilisés :
- cc65 / ca65 / ld65 ;
- Python 3 ;
- NumPy ;
- FFmpeg ;
- xorriso.
Code : Tout sélectionner
mktrack.py
mkgamedisc.py
Exemple donné par le projet :
Code : Tout sélectionner
python3 firmware/tools/mktrack.py theme.wav -o theme.rom --loop-start 4.2
python3 firmware/tools/mkgamedisc.py -o mygame.img --title "MY GAME" --nes mygame.nes --track 1=theme.rom --verify
Code : Tout sélectionner
ROM NES
+
Piste audio 1
+
Piste audio 2
+
Piste audio 3
+
...
Insertion du disque et démarrage automatique
L'utilisation est particulièrement sympathique.
La NES est démarrée normalement sur le menu de l'EverDrive N8 Pro.
Il suffit ensuite d'insérer un disque NESCD compatible.
Le système :
- détecte le disque ;
- lit son contenu ;
- récupère la ROM NES ;
- transfère la ROM vers l'EverDrive via USB ;
- demande son installation ;
- puis lance automatiquement le jeu.
Une alimentation commune
Le lecteur CD nécessite naturellement davantage de puissance que ce que l'alimentation originale de la NES peut confortablement fournir.
Le prototype utilise donc une alimentation externe disposant des rails 5 V et 12 V nécessaires au lecteur CD-ROM.
Le 12 V est également abaissé aux environs de 9,5 V grâce à un convertisseur afin de pouvoir alimenter la NES.
Le NESCD et la console peuvent ainsi fonctionner à partir d'une seule alimentation.
Il reste néanmoins possible d'alimenter la NES avec son adaptateur d'origine.
Pourquoi ne pas tout faire passer par le port d'expansion ?
La question est intéressante car la NES dispose justement de son connecteur d'expansion sous la console.
Le développeur a étudié cette possibilité.
Mais sa bande passante est insuffisante pour remplacer efficacement la liaison USB utilisée avec l'EverDrive.
Le port d'expansion est donc principalement exploité ici pour l'intégration audio, domaine dans lequel il apporte justement un avantage important.
Quelques limitations
NESCD-001 reste un projet expérimental et plusieurs points peuvent encore évoluer.
Le retour automatique au menu EverDrive après le lancement d'un disque n'est par exemple pas totalement résolu.
Le développeur envisage notamment la possibilité de contrôler l'alimentation de la NES avec un relais afin de provoquer un véritable redémarrage de la console lorsque cela devient nécessaire.
Autre absence volontaire : le code permettant les démonstrations de type FMV montrées par le créateur n'est pas publié.
Une partie de ce travail reposait sur de la rétro-ingénierie autour du projet Bad Apple!! Ultimate NES Demake et de technologies développées pour Former Dawn. Throaty Mumbo a donc préféré ne pas redistribuer ce code tant que les auteurs concernés n'ont pas publié officiellement leurs propres travaux.
Un périphérique qui n'a jamais existé
Mais qui aurait presque pu sortir d'une autre ligne temporelle
Le NESCD-001 n'a évidemment pas vocation à réécrire l'histoire de Nintendo.
La Famicom avait déjà reçu au Japon une extension officielle destinée au stockage : le Famicom Disk System.
Mais NESCD explore une autre voie : celle d'une hypothétique NES équipée d'un média optique.
Et techniquement, le résultat est particulièrement intéressant.
Il réunit dans une même réalisation :
- une console NES originale ;
- un média optique ;
- un microcontrôleur moderne RP2350B ;
- un EverDrive N8 Pro ;
- une interface IDE ;
- un DAC audio ;
- le port d'expansion de la NES ;
- et du logiciel spécialement développé pour faire communiquer l'ensemble.
Conclusion
NESCD-001 fait partie de ces projets qui mélangent rétro-ingénierie, développement embarqué et une bonne dose de "pourquoi pas ?".
Ce n'est pas simplement un lecteur CD posé à côté d'une NES pour l'apparence.
Le RP2350B pilote réellement le lecteur IDE, récupère les données présentes sur le disque, communique avec l'EverDrive N8 Pro et gère les demandes audio provenant du programme exécuté sur la console.
Le projet exploite même le port d'expansion de la NES pour réinjecter l'audio dans la console.
Et surtout, Throaty Mumbo ne s'est pas contenté de montrer un prototype fonctionnel : schémas, PCB, firmware, modèles 3D et outils sont disponibles publiquement.
Un projet totalement inutile ?
Donc totalement indispensable
Mais voir une Nintendo NES de 1985 charger son jeu depuis un véritable CD-ROM IDE est précisément le genre de détournement hardware que nous aimons voir apparaître plus de 40 ans après la conception de la machine.
Liens
GitHub NESCD-001 :
https://github.com/ThroatyMumbo/NESCD
Vidéo de présentation de Throaty Mumbo :
Creating an NES CD Add-on
Article Hackaday :
Giving The NES An Optical Data Storage Add-On
Source et conception : Throaty Mumbo – NESCD-001
Licence du projet : MIT







