Index de l'article

Origine du projet

Tout est parti d'une envie d'apprendre à jouer à Puyo Puyo!

On m'a recommandé de débuter sur Puyo Puyo Tsuu MegaDrive. Uniquement disponible en version japonaise, il est donc impossible d'y jouer sur ma console européenne sans modifier cette dernière.

Le dézonage de cette console est assez simple, les différences hardware entre les régions étant minimes. Un petit "aménagement" du port cartouche et très peu de modifications sur la "carte mère" de la console suffisent.

Mais j'avais très envie de streamer (sur Hitbox/Twitch/Daylimotion/whatever) mes entrainements. Pour me simplifier la vie et avoir la meilleure qualité d'image possible avec mon matériel, l'ajout d'une sortie s-video me parait indispensable.Mon modèle de console étant une MegaDrive II, mon projet avait un nom tout trouvé : Megadrive II - Stream Edition! MD2-SE pour faire court :p


Switchless region mod

Comment est zonée la console

Ici, je ne vais présenter que de la théorie. Si vous voulez voir comment réaliser les mods, je vous invite à vous rendre dans la section dédiée à ce mod.

Comme la plupart des consoles, la MegaDrive est zonée. Deux méthodes ont été utilisées, la forme physique des cartouches et du slot les accueillant, mais aussi des modifs (très légères) de l'électronique de la console.

Pour rendre la console PAL compatible physiquement avec les cartouches japonaises, un léger "remodelage" du slot cartouche suffit. (voir region switch) Ce n'est pas ça qui m'intéresse ici.

La partie électronique est plus intéressante à mes yeux. Pour mieux comprendre la suite, voici les trois régions de MD (à ma connaissance) :

  • Japon - NTSC 60Hz - Japonais.
  • Etats-Unis - NTSC 60Hz - Anglais.
  • Europe - PAL 50Hz - Anglais (ou plutôt International)Certains jeux étaient disponibles dans d'autres langues. Italien, Français, Espagnol, ... beaucoup de cartouches étaient multilingues, un petit menu permettait de choisir sa langue au démarrage. C'est pourquoi, plutôt que de nommer ce mode "Anglais", je vais utiliser le terme "International"..

Revenons au zonage. Dans la MDII, ce sont deux pins de l'ASICUn ASIC est une puce qui a été créée pour une fonction précise. Dans le cas de la MDII, c'est la grosse puce avec Sega écrit dessus. Elle intègre le CPU et la partie sonore dans une seule et même puce. Sega qui vont définir la région de la console. L'une d'elles définit la fréquence, 50 ou 60Hz et la seconde la langue, Japonais ou international. Ils faut donc alimenter ces pin ou les mettre à la terre en fonction de la combinaison Hz/langue qu'on souhaite atteindre.

Attention, certains jeux vérifient la région. Si elle diffère de celle pour laquelle ils sont prévu, un message apparait à l'écran indiquant que le jeu n'est pas sorti dans cette région et blablabla. La plupart du temps on peut contourner cette vérification simplement en laissant la région que le jeu attend et ensuite, après que la vérification soit passée, changer la région. Il me semble avoir lu que même en utilisant cette manip', certains jeux n'acceptent de tourner que dans leur région d'origine.

Petite info intéressante, la console génère autant d'images qu'elle soit en PAL-50Hz ou NTSC-60Hz. Ce qui signifie que les jeux sur console tournent approximativement 17% moins vite que sur NTSC. Raison de plus pour modifier sa console: jouer aux jeux à leur vraie vitesse!

Principe du region mod

Le mod avec interrupteur est survolé rapidement ici. Si vous souhaitez des explications complètes pour le réaliser, je vous invite a visiter le tuto de mmmonkey. Les tutos disponibles sur son site sont nombreux et couvrent un grand nombre de consoles, uniquement en anglais par contre.

Première étape : Mod du slot cartouche.

La forme des cartouches diffère entre jeux PAL et Japonais. Mais rien qu'un petit coup de lime ou de dremel ne puisse régler en quelques minutes. Par contre, la dremel c'est un peu tendu, le plastique se met assez vite à fondre, même à basse vitesse. (raison pour laquelle mes modifs ne sont pas très propres)

Seconde étape : Mod de la PCB.

La MD2 est assez facilement dézonable. Il suffit de quatre fils, le premier connecté au +5V de la console, le second à la masse, le troisième à la piste gérant la sélection de la langue (Japonais ou International) et le quatrième, celui qui nous intéresse le plus, qui permet de passer la console de 50 à 60Hz.

Parties à modifier Parties à modifier Parties à modifier
Signal Fil n° sur photos
5V Rouge 1
Langue (Japonais/International) Pourpre 2
GND Noir 3
Région (50/60Hz) Vert 4
Zone Région (vert) Langue (pourpre)
Japon 5V (rouge) GND (noir)
USA 5V (rouge) 5V (rouge)
EU GND (noir) 5V (rouge)

Si vous souhaitez vous "arrêter là" et installer deux interrupteurs sur votre MD, je vous invite à nouveau à aller voir le tuto de mmmonkey (attention, je n'ai pas utilisé les mêmes couleurs de fils!). Des schémas viendront illustrer les explications de la pose des switch plus tard, mais je dois encore les dessiner (et j'ai déjà beaucoup à faire entre mon reflow oven et mes autres projets :D ).

Sinon, je vous invite à continuer vers mon switchless region mod!

 


Création de mon switchless region mod

Pourquoi un switchless de plus?

Des switchless region mod pour MegaDrive comme ce mod mis au point par Wolfsoft sont trouvables sur le net. Ce genre de mods fonctionnent très bien et satisferont la plupart des gens... mais pas moi :p. Une première amélioration possible, simplement souder un socket aux fils plutôt que directement sur les pins de la puce. Mais l'idéal pour moi : un petit circuit imprimé qui comprend µC, led et connecteurs pour un montage propre.

Et voici l'autre raison pour laquelle je me suis lancé dans ce projet:
L'électronique m'a toujours intéressé, mais mes projets dépassaient de loin mes compétences (nulles :p). Essayer d'apprendre sur des projets relativement complexes, c'est comme vouloir courir avant de marcher. Donc, un projet simple avec une application concrète me semblait la meilleure solution pour maintenir ma motivation. Il me permettrait d'apprendre à programmer des µC et à créer des circuits à partir de la documentation disponible.

Choix matériel

J'ai choisi de travailler avec les µC STM8S parce qu'ils sont peu cher, qu'ils me semblent assez versatile et que même les modèles les plus bas de gamme sont bien équipés en périphériques. C'est pourquoi je me suis offert une dev board STM8S003K3 to DIP ainsi qu'un programmateur ST-Link/V2.

Les prototypes des PCB seront commandées chez OSHPark parce que pour de très petites séries, ils ont un des meilleurs rapport qualité/prix.

Les composants, dans un premier temps ont été un mix entre through-hole (composants classiques dont les pattes passent à travers la PCB et sont soudées sur l'autre face) et SMD. Mais les through-hole demandant énormément d'espace, le prix des PCB grimpait rapidement. Le projet utilise donc quasi exclusivement des composants montés en surface (mis à part les connecteurs).

Cahier des charges

Fonctions minimales requises pour un switchless pleinement utilisable :

  • Passer à volonté la console en PAL ou en NTSC
  • Passer à volonté la console en anglais ou en japonais
  • Pouvoir changer ces deux options en utilisant un bouton existant de la console : le bouton RESET
  • Remplacer la led POWER par une led multicolore permettant de connaitre le zonage de la console actif et de choisir le zonage vers lequel basculer
  • Optionnel - pouvoir contrôler une PCB fille (un colour fix par exemple)

Tout cela en utilisant le moins de composants possibles. De plus, ils doivent être peu chers et prendre peu d'espace de PCB.


REV 001

Avec toutes ces contraintes dans la tête, les datasheets sous la main et mes pauvres connaissances en électronique, je dessine des PCB dans Eagle. Au début, ce sont des PCB biscornus qui s'adaptent à l'espace disponible dans la console. Sauf que le producteur de PCB qui me semble avoir le meilleur rapport qualité/prix, facture en fonction de la surface du plus petit rectangle comprenant entièrement la PCB. Il faut revenir à un design plus rectangulaire qui permet d'éviter au maximum de payer pour du... vide. Donc abandon quasi total des composants through-hole (sauf pour les connecteurs :p) parce qu'ils prennent bien trop de place.

Ébauche de PCB : pré rev001 Ébauche de PCB rev001

Après réception des trois exemplaires prototypes produits par OSH Park et soudure des composants : mon design est défectueux! Impossible de programmer le STM8S003K3 par SWIM, rien ne fonctionne. Même en modifiant plus ou moins lourdement les PCB, rien ne fonctionne. Les µC sont certainement crâmés...

Il est temps de tirer des conclusions de cet échec!
Énormément de pins du µC sont inutiles et occupent pas mal d'espace pour rien. Du coup je vais rester sur le même type de µC, mais en TSSOP20, le STM8S003F3.
Comme il m'a été impossible de corriger les erreurs qui m'empêchent de programmer la puce, je me suis fournis un TSSOP20 to DIP et des STM8S003F3. Après soudure et quelques tentatives de montages sur breadboard, j'ai un setup qui fonctionne, le programmateur et le µC dialoguent sans problème.

Avec le circuit fonctionnel sous les yeux, c'est plus simple de refaire le schéma dans Eagle. Et au moins, je suis certain qu'il fonctionnera sans me faire de mauvaise surprise!
Il est temps de retourner à la planche à dessin et de créer la révision 2!


REV 002

PCB rev002 - visuel simulé

Pour cette version, je voudrais pouvoir produire les PCB en reflow oven. Avec cette technique de soudure, ça simplifie grandement le processus si tous les composants se situent sur la même face. Les condensateurs et autres résistances migrent donc sur la face supérieure. Le µC en TSSOP20 est bien plus compact, ce qui libère de l'espace pour les résistances et les condos. Je remplace le pin header "extension" par un connecteur bien plus petit de type JST-ZH 3 pins et le nomme EXP pour expansion (référence à l'expansion pack de la N64). Les signaux transportés sont la terre, le 5V et un "canal de communication". Plutôt que souder "définitivement" la PCB aux fils venant de la console, un connecteur JST-ZH 6 pins fera la connexion. Ca permet de remplacer aisément la MainBoard et de la passer au banc test très rapidement! Le connecteur SWIM est tourné de 45° ce qui permet de réduire le facteur d'encombrement. Pour simplifier la soudure à la main de la led, j'agrandis la zone non vernie au niveau des pads (qui servent aussi de "radiateur" à la led).

Montage du prototype REV002 n° de série 0. Le µC est programmable! Le circuit alimente bien le µC, celui-ci contrôle bien la LED. Sur le "banc test" les leds de contrôle s'allument bien en fonction de la zone sélectionnée. Par contre, les sorties branchées à la console, le proto ne fonctionne pas. Conclusion, je vais supprimer et ponter les 3 transistors pour que les trois sorties du µC soit en "lien direct" avec le hardware de la console. Pour être honnête, je ne sais pas pourquoi j'ai conservé ces transistors dans mon design... J'étais juste habitué à ce qu'ils soient là, je pense :p

Il me restait un certain nombre de modifs à faire sur ma console pour pouvoir tester les mods. Maintenant, que c'est fait, tout fonctionne! Il y a encore des améliorations possibles au niveau du firmware (mieux debounce le bouton reset, ajouter un réglage de luminosité de la led par exemple), mais dans l'ensemble c'est utilisable.


REV 003

Pour cette troisième révision, je retire complètement les transistors et leur résistance, tous les connecteurs sont des JST-ZH! Les pads excentrés sont là parce que pendant la soudure des connecteurs sur la rev002, certaines pins des JST on bougé. Ca ne les empêche pas de jouer leur rôle. Mais si des pads un rien plus grands peuvent m'éviter le problème à l'avenir, je ne dis pas non!

La board vierge chez OSH Park revient à moins de 1€/pièce. Il faudrait que je calcule à combien reviennent les composant pour peupler mon pcb. Vu que mes composants viennent d'ebay, je doute fort que ça dépasse 5-6€... :P

Montage d'un prototype REV003, les pins des connecteurs bougent encore lors de la soudure. Mais là, le soucis vient majoritairement de ma station de soudure bon marché : elle est en train de rendre l'âme. Cette dernière me lache complètement quelques jours plus tard, alors que je tente de retirer un surplus de soudure sur des pins du µC. Après une longue réflexion du pour et du contre, je passe commande d'une station Ersa RDS 80, plus quelques bonus! Une lampe-loupe, un ventilateur avec filtre au charbon actif et un support de soudure pour pcb. Ces outils amélioreront beaucoup mes conditions de travail!

Il y a encore par mal d'espace perdu sur le circuit imprimé. Réduire les pads bien trop grands de la led voir la remplacer par une plus petite et aussi utiliser des modèles plus compacts de condensateurs permettrait de gagner un peu de surface.
J'envisage de faire "zigzaguer" les perçages des connecteurs. Cette technique permet de coincer les connecteurs dans le circuit imprimé, ce qui rend plus simple de le retourner pour souder les pins du connecteur.


REV 004

Ce modèle est bien plus compact que toute les itération précédentes. La led fait la taille de deux résistances montées en surface, les autres composants et connecteurs ont été réorganisés.

La contrepartie, c'est qu'il est maintenant difficile de souder les composants à la main. Je n'ai pas envie de passer des plombes pour souder ça proprement, il est donc indispensable de passer à l'étape supérieure : le four à reflow!

Oui, j'aurais pu me contenter de sacrifier une poêle ou d'acheter une station de soudage à air chaud. Mais quitte à s'équiper, autant le faire bien. Pour en savoir plus, visitez la note qui lui est consacrée.

(Le site est en pleine migration, je récupère les infos petit à petit depuis les anciennes versions)