La SuperSwag 64

Ce noël, je me suis amusé pendant mes vacances à réaliser une console de retro gaming qui regroupe toutes les consoles de l’ancienne génération : NES, Super Nintendo, Nintendo 64, MegaDrive, Master System, GameGear, Atari, etc…

En réutilisant un ancien boîtier d’une Nintendo 64 et une Raspberry Pi, j’ai assemblé THE console de retro gaming ultime permettant de jouer aux bons vieux jeux de mon enfance, tout en utilisant les périphériques d’aujourd’hui (manettes de Xbox 360 et téléviseurs HDMI). Grandement aidé de la communauté de bricoleurs sur Internet, j’ai utilisé la distribution RetroPie qui regroupe à elle seule tous les émulateurs qui vont bien !

Ce guide est un tutorial de A à Z pour expliquer comment faire d’une vielle Nintendo 64 la console de divertissement retro la plus do it yourself (DIY) possible ! Il explique pas à pas comment modifier la console pour y intégrer les différents composants, comment paramétrer Raspbian OS et RetroPie pour faire fonctionner les jeux et les manettes le tout de manière … soignée :-)

Sommaire

  1. Dans un premier temps, toute la partie matérielle du projet sera détaillée,
    L'assemblage final est montré à la fin.
     
  2. Puis dans un second temps, la configuration logicielle de la Raspberry sera expliqué.
    Une petite vidéo montre le fonctionnement une fois tout terminé !

La partie matérielle (Hardware)

Ouvrir et vider le boîtier de la Nintendo 64

A la base, le boîtier de la Nintendo 64 est fermé par plusieurs vis un peu particulières, que Nintendo a utilisées sur plusieurs de ses consoles pour s’assurer qu’elles ne seront pas ouvertes et modifiées. Il s’agit d’un pas de vis en étoile, plutôt rare sur le marché.

Les vis spéciales de Nintendo Ne possédant pas le tournevis adapté, j’ai recherché vite fait sur Google une solution, et je suis tombé sur ce site qui donne une astuce assez simple : prenez un stylo bic, retirez la cartouche d’encre et la pointe pour ne conserver que le corps en plastique. Brulez ensuite l’extrémité avec une flamme afin de ramollir le plastique, puis écrasez la partie fondue contre la tête de la visse. Maintenez ensuite quelques secondes afin que le plastique se solidifie en prenant l’empreinte du pas de vis. Retirez le ensuite, assurez-vous qu’il ait bien refroidi, et vous pourrez l’utiliser pour retirer les vis. Personnellement, il a fallu que je réitère l’opération quasiment à chaque vis, tant le plastique se déforme rapidement malgré tout.

Boîtier ouvert avec ses composants originaux

Boîtier ouvert avec ses composants originaux

Pour plus du détails sur l'ouverture du boîtier de la Nintendo 64, je vous conseille ce lien.

Ensuite, il suffira d’un tournevis cruciforme ordinaire pour retirer le composant électronique de la Nintendo 64. Une fois nettoyée, le boîtier offre une place raisonnable quoique de nombreuses excroissances en plastique viennent réduire l’espace disponible.

Boîtier ouvert et vidé

Boîtier ouvert et vidé de ses composants.

La préparation des connecteurs en façade

A la base, les connecteurs de la Nintendo 64 sont d’un type propriétaire, qui n’est absolument par compatible avec de l’USB. Ainsi, j’ai choisi de conserver les connecteurs eux-mêmes, et de remplacer le port à l’intérieur par de l’USB femelle de type A. Pour être retirés du composant électronique orignal de la Nintendo 64, j’ai dû utiliser une pince afin de sectionner les 3 grosses tiges métalliques le reliant aux connecteurs en façade.

Observé de près, l’intérieur des connecteurs fait apparaitre que le port d’origine est fixé au reste au connecteur par trois petites pattes en plastique. En utilisant une perceuse avec une mèche très fine, j’ai attaqué directement ces trois petites pattes. Une fois retirée, le centre du connecteur laisse un espace suffisant pour y insérer un embout USB femelle.

Connecteurs normaux et vidés

Le connecteur original (à droite) et une fois que le port à l'intérieur est retiré (à gauche).

Avec une lime, j’ai ensuite nettoyé l’intérieur des connecteurs des aspérités plastiques pour faciliter l’insertion de l’USB. Au final, il m’est resté les ports des anciens connecteurs.

Partie intérieur des anciens connecteurs

La partie centrale des anciens connecteurs qu’il faut retirer.

Une fois ce travail terminé, il suffit d’insérer le port femelle USB à l’intérieur (en pressant comme un forcené) et de mettre un peu de pâte plastique autour pour solidifier l’ensemble. J’ai utilisé une pâte SADER « Répare Tout » pour cela. Il s’agit d’un polymère thermoplastique, qui se présente sous la forme de petits boudins faits de deux matières, qu’il faut préalablement malaxer pour les mélanger. Une fois la pâte prête, elle est malléable et peut être placée à la main sur les connecteurs, entre la partie plastique et le port USB.

Les connecteurs en façade terminés

Les connecteurs en façade pour les manettes, une fois terminés.

L'assemblage des différents composants

Au final, le boîtier devra contenir :

  • La Raspberry Pi, dont les dimensions sont 85,60 mm × 53,98 mm × 17 mm
  • Les 4 rallonges USB type A (la forme classique) mâle-femelle pour les connecteurs en façade
  • Une rallonge RJ45 pour mettre à disposition un port Ethernet au dos de la console
  • Une rallonge HDMI (son et image) pour connecter la console à une télévision
  • Le câble d'alimentation de la Rasbperry, un USB de type micro-B mâle vers USB A mâle
  • Un switch USB 4 ports pour rassembler les connecteurs en façade

L’ensemble de la console sera alimentée directement au niveau de la Raspberry, le switch s’alimentant via le câble de réplication. J’ai essayé plusieurs confgurations, dont une où l’alimentation arrivait au switch et où c’était la Raspberry qui tirait son alimentation du switch. Mais cela entrainait des comportements étranges, comme des redémarrages inopinés de la Raspberry ou des problèmes avec les manettes/claviers connectés.

Au final, j’ai retenu la configuration suivante :

Schéma de connexions des composants

Schéma des composants connectés dans et autour du boîtier de la console.

Ensuite, il a fallu réfléchir à la disposition des composants dans le boîtier...

Le problème, c’est que la Raspberry a ses connecteurs orientés dans toutes les directions, et qu’il faut prendre en compte le passage des câbles dans le boîtier de la Nintendo 64. Surtout que les câbles n’ont pas tous les même rigidité, et que les connecteurs n’ont pas tous le même encombrement.

Raspberry Pi Model B

La Raspberry Pi, et ses connecteurs.

Là encore, trouver la bonne configuration pour disposer les composants dans le boîtier de la console a été particulièrement tendu. Le gros problème venait des câbles, qu'il fallait tordre ou torsader pour arriver à tout connecter en même temps. Au final les composants ont été ajustés de la manière suivante :

Agencement des composants

Agencement des composants dans le boîtier de la console.

Les obstacles maintenant, ce sont les petits morceaux de plastiques à l’intérieur qui gênent l’intégration du switch et de la Rapberry. Ces petites excroissances servent à la fois à faire passer des vis, ou à maintenir la cartouche de jeu, ou encore à placer l’extension de mémoire de la Nintendo 64.

Avec ma Dremel, j’ai retiré toutes les parties plastiques gênantes, comme indiqué sur cette photo :

Découpes du boîtier

Emplacements des excroissances en plastique qu'il a fallu découper.

Ensuite, comme chaque composant devait être solidement arrimé à l’intérieur, il a fallu réfléchir aux moyens de fixations disponibles. Pour la Raspberry, c’est relativement simple car la modèle B dispose de deux trous pour des vis de fixations. J’ai tout simplement percé le dessous du boîtier de la Nintendo 64 afin de faire remonter deux vis.

Pour le switch, comme il ne dispose pas de moyens de fixation propres, je l’ai entouré avec deux vis longues qui maintiennent sur le dessus une petite languette en aluminium, fixée solidement avec deux boulons. Bien serré, ce dispositif évite tous déplacements du switch dans la console.

Détail de la fixation du switch

Le switch est maintenu par une languette métallique, elle-même fixée par deux vis longues qui viennent prendre appui sous le boîtier.

Une fois le boîtier préparé, et les composants fixés, il a fallu intégrer le tout en ajoutant les connectiques. Pour les connecteurs en façade, les câbles une fois pliés s’ajustent parfaitement aux emplacements initiaux. Pour le port RJ45, j’ai réutilisé la pâte plastique pour fixer l’embout femelle de la rallonge à la petite partie plastique du boîtier qui accueillait précédemment la sortie multi (son et image). Enfin, pour le port HDMI, j’ai réalisé une petite découpe dans le boîtier, au niveau du creux conçu pour accueillir le bloc d’alimentation. Avec de la pâte plastique, j’ai fixé solidement le connecteur au boîtier afin de résister aux manipulations répétées de la console.

Au final, les composants une fois intégrés dans la console ressemblent à cela :

Intérieur du boîtier une fois terminé

Intérieur de la console une fois terminée. On distingue la Raspberry au centre, le switch en bas à droite, les connecteurs USB, RJ45 et HDMI, et les ports en façade imbriqués dans le boîtier.

Détail de l'intérieur du boîtier

Détail de l’intérieur du boîtier. On remarque la Raspberry et son câble HDMI qui fait une boucle vers l’arrière de la console.

Au final, il ne reste plus qu’à faire passer le câble de l’alimentation (après avoir fait une petite découpe au boîtier) et à refermer la console. Cette fois, en utilisant des vis normales :-)

Le petit plus : utiliser le bouton d'alimentation du boîtier

A l’heure actuelle, je n’ai pas encore relié le bouton d’alimentation du boitier original de la Nintendo 64 avec la Raspberry. Le problème vient essentiellement du fait que la Raspberry contient un système d’exploitation Linux, et que celui-ci n’est pas fait pour être coupé directement par l’alimentation électrique. Au contraire, il a besoin d’un certain temps pour fermer toutes les applications et sauvegarder des données avant sa coupure.

Pour réussir à utiliser le switch d’origine il ne suffit donc pas simplement de placer un petit interrupteur sur les fils d’alimentation de la Raspberry. Il faudrait au contraire que cela lance un signal d’interruption (shutdown) qui provoque l’arrêt du système.

Je n’ai pas encore eu trop le temps de m’y pencher, mais dès que j’ai une solution je complète cet article :-)

La partie logicielle (Software)

A comparer, la partie logicielle a été beaucoup plus simple que la partie matérielle !

En fait, tout se trouve sur Internet. Déjà, la Raspberry est fournie avec un OS spéciale, Raspbian OS, basée sur une distribution Debian optimisée. Mais il existe surtout une autre distribution, déjà toute configurée pour créer une console de retro gaming : le projet RetroPie.

Il s’agit en fait de plusieurs émulateurs d’anciennes consoles qui ont été rassemblées dans une seule et même distribution, et avec une surcouche graphique en plus pour offrir un menu de sélection de la rom à lancer.

Une fois que vous aurez téléchargé la dernière version de l’image SD RetroPie, vous disposerez d’un fichier .IMG qui pourra être copié directement sur une carte SD, et utilisable ensuite sur la Raspberry.

Préparation de la carte SD

Pour commencer, formatez la carte SD (4Go minimum) à l’aide du logiciel SD Formatter. Choisissez un formatage complet (FULL Erase) avec l’option AutoAdjustment sur OFF. Une fois le formatage terminé, fermez ce logiciel.

Ensuite, utilisez le logiciel Win32 Disk Imager pour charger l’image de RetroPie sur la carte SD. Pour cela, sélectionnez le fichier image (.IMG) sur votre disque dur, et cliquez sur le bouton WRITE.

Le logiciel Win32 Disk Imager

Le logiciel Win32 Disk Imager.

Une fois le chargement de la carte SD terminé, vous pouvez fermer ce logiciel.

Configuration de l'OS Rasbian

Insérez ensuite la carte SD dans la Raspberry, connectez un clavier au dispositif, mettez l’alimentation et laissez l’application RetroPie se lancer. Une fois que l’initialisation est terminée, vous devriez vous retrouver sur une page d’accueil. Appuyez sur la touche F4 du clavier pour fermer cette application, et revenir dans la console.

Executez ensuite la commande suivante :

sudo raspi-config

L’utilitaire de configuration de Raspbian OS devrait maintenant se lancer. Il va permettre de configurer correctement l’utilisation de la carte SD, et paramétrer la langue et le clavier pour correspondre au Français.

Pour commencer, sélectionnez le choix 1 Extend Filesystem, et suivez les différentes étapes en cliquant sur Entrée à chaque fois.

Une fois revenu au menu d’accueil, selectionnez le choix 4 Internationalisation Options et suivez les opérations suivantes :

  • Choix I1 Select Local
    1. Retirer en_GB.UTF8
    2. Ajouter fr_FR.UTF8
  • Choix I2 Select Timezone
    1. Sélectionner Europe
    2. Puis Paris
  • Choix I3 Keyboard Layout
    1. Choisir Generic 105-key (intl) PC
    2. Pour le layout, choisir Keyboard layout: other
    3. Ensuite, choisissez l’option French à deux reprises
    4. A la question suivante, choisissez The default for the keyboard layout
    5. Enfin, à la question suivante, choisissez No compose key

La configuration de Raspbian OS est maintenant terminée. Vous pouvez quitter l’utilitaire de configuration afin de revenir à la console.

Setup du driver XBox pour les manettes

Revenu sur la console, il va maintenant falloir connecter la Rasberry à Internet via le câble RJ45. Redémarrez la console pour être sûr, en utilisant la commande suivante :

sudo reboot now

Executez ensuite la commande suivante afin d'installer le pilote pour les manettes :

sudo apt-get install xboxdrv

Une fois l’installation terminée, il faut configurer le driver pour se lancer au démarrage de la Raspberry. Pour cela, entrez la commande suivante :

sudo nano /etc/rc.local

Modifiez le contenu du fichier pour qu’il ressemble à celui donné ci-dessous. Ce que l’on fait ici, c’est lancer 4 fois le driver pour qu’il reconnaisse les 4 manettes. J’utilise pour ma console des manettes filaires, ce qui explique la présence de -–wid dans les commandes. Si vous souhaitez utiliser des manettes sans-fils, remplacez -–wid par -–id tout simplement.

#!/bin/sh -e
#
# rc.local
#
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

xboxdrv --trigger-as-button --wid 0 --led 2 --deadzone 4000 &
sleep 1

xboxdrv --trigger-as-button --wid 1 --led 3 --deadzone 4000 &
sleep 1

xboxdrv --trigger-as-button --wid 2 --led 4 --deadzone 4000 &
sleep 1

xboxdrv --trigger-as-button --wid 3 --led 5 --deadzone 4000 &
sleep 1

exit 0

Fermez ensuite l’éditeur de fichier en sauvegardant les modifications.

Connexion via WinSCP

Le reste des modifications se fait maintenant via le réseau, en utilisant un autre PC connecté avec WinSCP à la Raspberry.

Sur la console Linux de la Raspberry, entrez la commande ifconfig afin d’obtenir votre adresse IP.

Utilisez ensuite WinSCP pour vous connecter sur cette adresse IP. Par défaut, le login pour l’authentification est « pi » et le mot de passe « raspberry ».

Remplacez ensuite le fichier /home/pi/configs/all/retroarch.cfg par celui-ci. C’est un script préconfiguré pour les manettes de Xbox.

Pour prendre en compte les changements, redémarrez la console en lui envoyant la commande sudo reboot now via WinSCP. La partie logicielle est maintenant configurée, il suffit juste de rajouter les roms dans les répertoires correspondants aux différents émulateurs. Ces répertoires se trouvent dans /home/pi/RetroPie/roms/ et il suffit d’y copier les fichiers, tout simplement :-)

Le petit plus : modifier l'image au lancement de la console

Avec les dernières versions de RetroPie, le fichier /etc/splashscreen.list contient la liste des images à utiliser pour l’écran de lancement de la console (SplashScreen). Si le fichier contient plusieurs chemins d’images, la console en choisira un aléatoirement à chaque démarrage.

Par défaut, ce fichier ne contient qu’un chemin qui pointe vers :

/home/pi/RetroPie-Setup/supplementary/splashscreens/retropieproject/splashscreen.png

Si vous voulez faire simple, remplacer simplement ce fichier par l’image que vous souhaitez afficher.


Commentaires

1. Commentaire de testou le vendredi 16 mai 2014

Salut,

Très beau travail ! Félicitations !

J'ai 2 questions à te poser :

Peut-on mettre en place plusieurs drivers de différentes manettes (xbox 360, SNES, N64 ...) sans que cela ne génère des problèmes ?

La Raspberry Pi gère-elle le son des différents émulateurs ?

Merci.

2. Commentaire de Ted le samedi 31 mai 2014

@Testou :

Bonjour,

Pour les manettes, je n'ai testé que le driver des manettes de Xbox 360. Elles ont une connectique USB et semblent relativement standard.
Au point que pour les manettes de PS3, il semble que le même driver xboxdrv soit utilisé : http://gameimps.com/ps3-controller-...
J'imagine que vu le nombre de manettes PS3 en circulation il existe forcément un pilote linux.
Pour les manettes retro, c'est possible en bricolant. Sinon, il existe des sites où ont peut acheter des manettes toutes faites en USB : http://www.thinkgeek.com/product/ba...

Pour le son, il est parfait sur tous les émulateurs. Certains jeux déconnent, ça peut être l'image ou le son. Mais globalement la majorité des roms fonctionnent bien.

3. Commentaire de testou le lundi 2 juin 2014

Bonjour,

Merci pour ces informations.

Encore 2 questions à te poser :

Quel est le modèle de hub usb que tu as utilisé ?

Faut-il installer l'OS Raspbian avec une carte sd avant d'installer l'OS RetroPie ? L'OS Retro Pie n'est-il pas suffisant ? L'OS Raspbian est-il installer de base sur la Raspberry Pi car j'avais lu qu'il fallait installer Noobs pour choisir son OS ?

Merci.

4. Commentaire de Ted le lundi 2 juin 2014

@Damien :

- Pour le modèle du hub, j'ai sélectionné un modèle à 7 port car je voulais faire 4 manettes + 1 alim et je n'ai pas trouvé de 5 port avec le même ampérage.
Pour plus d'infos sur le matos : http://blog.evolya.fr/public/articl...

- La distribution RetroPie se base déjà sur l'OS Raspbian, il n'y a donc aucune installation supplémentaire à faire. Si tu récupère le fichier [RetroPie Project SD-card image] sur le site http://blog.petrockblock.com/retrop... tu as juste un copie à faire sur la carte SD et un peu de configuration.

5. Commentaire de Julian le jeudi 7 août 2014

Bravo pour un super tutoriel!

j'ai une question a te poser.

Arrive tu a faire marcher les rom n64 ? tout le reste marche bien ( SNES megadrive, etc )
Á chaque fois que je lance un rom, ma raspberry crash...

encore bravo,
merci

6. Commentaire de stanx974 le mercredi 3 septembre 2014

hello,

excellent tuto tu as trouvé une solution pour le bouton power?
merci

7. Commentaire de Ted le samedi 13 septembre 2014

@Stanx974

Salut,

Oui, mais par l'achat d'un module additionnel.
En fait, comme l'extinction de la raspberry doit être logiciel (signal d'arrêt) pour que l'OS s’éteigne proprement, le petit module va jouer le rôle d'interrupteur du courant d'alimentation.

http://www.robotshop.com/eu/fr/inte...
https://www.pi-supply.com/product/p...

8. Commentaire de tom le vendredi 14 novembre 2014

C'est génial :)


About the Author

Ted Marklor est un web designer, un web developer et un génie de la nature. Transcendant le web depuis bientôt 15 ans, Ted est une source d’inspiration et de conseil pour toute une génération de jeunes programmeurs. Le Web 2.0, c’est lui. Dans la vie, il aime aussi faire des avions en papier, s’inventer des pseudonymes et une vie de winner, et surtout parler de lui à la troisième personne. Ça se fait en ce moment sur les blogs…


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.