Tout simplement parce que je voulais m'amuser à modifier une Megadrive 1
(Jap pour l'occasion) en version Multizone et Multifréquence.
Oui en 2020 on peut très bien s'en passer grâce aux cartouches
universelles comme l'Everdrive, mais c'est pas marrant ;)
Et puis aussi parce que j'en ai plusieurs en loose, qui attendent depuis
quelques années !!!
Après avoir parcouru le net à la recherche des informations concernant
le dézonage et le changement de fréquence des Megadrive 1.
Il faut soit passer par un PIC16Fxxx, couper des pistes, souder des
fils sur des pattes de composants, remplacer la LED originale par une bicolore, détourner l'usage du bouton reset, etc,
etc, et même pour les premières versions installer des interrupteurs à
l'arrière de la console (ça pique les yeux).
En étudiant tout ça je me dis que je pourrais simplifier le switch et
comme je n'ai pas de PIC16F sous la main je peux très bien utiliser un
Arduino c'est aussi un microcontrôleur puisque basé sur un ATMEGA
168/328,
ca tombe bien j'en ai en stock, et je sais bien les programmer.
Vous comprenez déjà pourquoi Switch et Duino pour Vox vous comprendrez
en lisant la suite ;)
Donc dans un premier temps il faut comprendre comment est géré le
zonage et la fréquence
:
C'est très simple les cartes-mères de Megadrive 1 (hormis les V4) sont
identiques pour toutes les zones, il y a juste une configuration qui
est faite en usine selon la destination (JAP, USA, EURO), et donc toutes
peuvent afficher du 50Hz ou 60Hz ;)
Et tous ça grace à une seule puce la 315-5433 et seulement 2 pins (pin
71 : fréquence et pin 72 : langue), ces 2 pins sont reliés la
zone des jumpers JP1 à JP4, c'est cette zone qui nous intéresse, ces
jumpers
sont reliés par paires = JP1 et JP2(Fréquence) ainsi que JP3 et
JP4(Langue) selon que Fréquence et Langue soit connecté au 5V ou GND la
console est configurée pour une zone ou une autre, donc avec 2 bit on a
4 possibilités mais on peut simplifier à 3 possibilités, parce qu'à mon sens la quatrième serait Japan 50Hz qui n'apporte rien,
et je n'en vois pas l'utilité donc je simplifie de la manière résumée
dans ce petit tableau que je vous ai préparé :
Combinaisons possibles :
Freq.
Lang.
JAPAN (60hz)
5V
GND
USA (60hz)
5V
5V
PAL (50hz)
GND
5V
La zone des jumpers :
La
synthèse en photo :
De quoi avons-nous besoin pour ce bricolage
:
-
Megadrive 1 (Japonaise de préférence).
- Arduino nano ou autre type mais à 16Mhz et 5V impératif.
- Bouton momentané.
- 1 résistance 390R.
- quelques fils de différentes couleurs de longueur suffisante pour
relier l'Arduino à la zone des jumpers.
Toutes
les versions de Megadrive 1 conviennent sauf les cartes-mères de
révision V4 qui ne sont pas compatibles (d'après ce que j'ai pu lire
sur le net).
Je
conseille de prendre une Megadrive japonaise car la fente cartouche
permet d'insérer tous les types de cartouches (Jap, Euro, US), alors que
les versions EURO de Megadrive ont une fente légèrement différente et
rendent l'insertion de cartouche japonaise très difficile voir impossible,
sauf à limer l'ouverture cartouche de la console.
On
commence par ouvrir la console, et on profite pour faire un peu de ménage.
Ensuite il faut dévisser les
vis qui maintiennent la carte-mère, sans oublier les vis de la plaque
du dissipateur :
Ainsi
que les 2 vis du port cartouche :
Uniquement pour les Megadrive 1 japonaises :
Les
cartouches de Megadrive japonaises ont une forme un peu différente et
surtout possédent une encoche dans laquelle vient se coincer un loquet
activé lors de la mise sous tension de la console.
Ceci pour éviter que les petits Japonais n'insérent ou n'enlévent une
cartouche lorsque la console est allumée.
Donc pour pouvoir utiliser toutes les cartouches du monde entier !!! il
vous faut enlever ce loquet c'est très simple et n'empèche absolument
pas la console de fonctionner, le loquet n'est tenu que par un vis.
On
commence par localiser la zone des Jumpers:
En
gros plan :
Maintenant
il nous fait dessouder le condensateur si il est présent
Ensuite
déboucher les trous à la pompe à dessouder :
Maintenant
il nous faut couper les pistes définissant la configuration d'origine:
Attention
il faut impérativement s'assurer que vous ayez bien coupé les 2
pistes, car sinon vous allez griller votre Megadrive, pour cela
utilisez un multimètre en position diode (continuité) et vérifiez qu'il
n'y ait plus aucun contact entre les pastilles côté JP1-2-3-4 et les
pastilles de l'autre côté.
Comme
indiqué plus haut, le 5V et GND de la console sont présents sur les
pastilles face à JP1-4,on
soude 2 fils : rouge pour le +5V et noir pour le GND.
Ou les couleurs qui
vous plaisent, après venez pas râler si vous grillez quelque chose ;)
Ensuite
on soude 2 fils de couleur autre que rouge et noir sur JP3 et
JP1.
Pour ceux qui suivent ça correspond à quoi ?
Maintenant
on prépare le bouton pour switcher de zone:
Tous ça c'est bien
beau mais il nous faut choisir comment indiquer dans quelle zone la
console est lorsque l'on appuiera sur le bouton.
Deux solutions me viennent à l'exprit :
- utiliser une LED et faire un petit trou dans la coque
- changer la LED power par une bicolore comme cela est fait sur
certains tutos mais ça me parait pas très original.
Je reflechis à ce qui serait
vraiment très original sans modifier l'esthétique de la console :
Et si une voix nous indiquait la zone de la console à chaque fois que
l'on appuie sur le bouton et à chaque démarrage, puisque je compte bien
conserver la sélection même la console éteinte (facile à faire avec un
Arduino).
Voila vous comprenez maintenant le Vox ;)
Pour réaliser cette
fonctionnalité, je commence par faire un test avec un Arduino et un
petit speaker, mais le son va être étouffé si le speaker est enfermé
dans la console.
La meilleure solution est de sortir le son directement par la sortie
son de la console.
Pour
cela nous allons commencer par souder un fil sous la carte-mère. avec
un fil encore d'une autre couleur, précisément à cet endroit :
Maintenant que nous avons tous nos fils
soudés côté console, il nous faut les relier à l'Arduino.
Au préalable pensez à téléverser le programme dans l'Arduino depuis
votre PC.
Ensuite suivez le schéma ci-dessous pour relier les fils entre
l'Arduino
et la console :
Placez
l'Arduino à un endroit qui ne gène pas la fermeture de la coque,
heureusement il y a de la marge.
Placez
le bouton en face du petit trou présent d'origine derrière la console,
et fixez-le avec un peu de colle chaude:
Surtout
pensez à bien isoler les pins de l'Arduino de la carte-mère pour éviter
les courts-circuits.
Pour ça vous pouvez utiliser du scotch d'électricien ou toute autre
solution.
Le bouton dépasse
juste ce qu'il faut pour pouvoir l'utiliser sans être proéminant.
Résultat
final vue arrière de la console, le bouton est très discret, et surtout
aucun perçage ni modification esthétique, puisque le trou existe
d'origine sur la coque :
Quelques vidéos pour vous rendre compte du
résultat :
Conclusion:
C'est un bricolage qui est beaucoup plus simple que ce que l'on
pourrait croire, et amusant à faire.
La partie Arduino est enfantine, et encore une fois grâce aux
nombreuses
librairies existantes ça nous fait gagner pas mal de temps,
notamment pour la partie sonore.
Le code utilise la librairie "PCM" pour jouer les samples à 8Khz ce qui
a l'avantage de ne pas demander de trop gros fichiers car la mémoire
interne de l'Arduino est limité.
Pour réaliser les samples j'ai utilisé naturalreaders en ligne, le
résultat est vraiment pas mal, même si j'ai capturé le son depuis
l'entrée micro vers la sortie son avec un cable jack/jack, puis
downsamplé en 8Khz.
Je suis assez fier du résultat et l'originalité du projet, et surtout
je me suis bien amusé ;)
Les
fichiers nécessaires pour programmer l'Arduino sont disponibles sur mon
site :
Pour
d'éventuelles questions vous pouvez consulter le forum :