Un générateur de Scanlines hardware
Par makoto doushite le vendredi, 20 mai 2016, 11:37 - Électronique - Lien permanent
Dans le cadre de la réalisation du bartop, celui-ci étant quasiment terminé, et après les premiers essais de jeux, ce que je craignais s'est révélé être très prégnant…
Utiliser un écran LCD, c'est vraiment le mal pour le jeux vidéo dit « rétro ».
- Les pixels carrés affichés sur un tel moniteur, dénaturent les images du jeux.
Alors peut-être que ça ne dérange pas les jeunes joueurs où les gens habitués aux productions récentes aux look dit « rétro », mais qui ne ressemblent en rien à du rétro, car non, les pixels ne sont pas carrés, sur une Télévision cathodique, ils sont ronds, et le rendu est alors très différent !
Les graphismes des jeux d'époques ont d'ailleurs été développés sur des écrans cathodiques dans leur résolution native afin d'optimiser le graphisme en jouant sur le « mélange » des couleurs rendu par le pixel rond.
Les développeurs indies l'ont peut-être oublié, ou simplement n'ont-il vu des jeux d'époque que via un émulateur sur un écran d'ordinateur ?
Dans le cas du bartop, d'accord on pourrait activer et triturer pendant des plombes des tas de filtres logiciels, que de toute manière la configuration matérielle ne supporterait pas, tant ils peuvent se révéler gourmand en ressource CPU et donc trop lourd…
L'alternative d'un filtre matériel parait alors ici bien plus adéquate !
Alors ça s’achète tout fait, par exemple un SLG3000, où alors un RetroVGA 2 sous licence CC-BY-SA, du coup bien plus intéressant…
Car on va pouvoir tester ce que ça donne avant d'envisager un achat où une fabrication maison !
Prototype :
- J'ai donc téléchargé le schéma de Bruno Freita et après avoir récupéré quelques composants glanés par-ci par-la sur de vieilles cartes électroniques (oui, faut jamais jeter !), j'ai câblé le circuit sur une plaque à trou :
Essais :
- Voilà c'est tout simple, il suffit d’intercaler le circuit entre la sortie de la carte graphique de l'ordinateur et l'entrée de l'écran LCD 4/3 (un écran 16/9 ?? non non non… tu sors !), et de configurer l'ordinateur pour qu'il affiche impérativement une résolution de 640x480.
Et voici le résultat avant/après activation des scanlines :
L'effet est vraiment bluffant et apporte une véritable plus-value dans le rendu graphique des jeux.
Solution adoptée !
Le circuit :
- Ayant besoin de plusieurs exemplaire du circuit, j'ai finalement décidé de le construire moi-même.
Et une fois n'est pas coutume, j'ai fait mes propres modifications par rapport au design d'origine.
En effet, le circuit imprimé de Bruno Freita est prévu pour deux prises VGA femelles.
Or cela implique d'utiliser deux câbles VGA, pour entrer et sortir du circuit… C'est dommage, d'autant que ça rallonge considérablement le câblage, avec les pertes de qualités du signal que cela peut engendrer.
- J'ai donc complètement refait le design, en remplaçant une des prises VGA femelles par une prise mâle, en supprimant les diodes Schottky inutiles selon moi, et en ajoutant des condensateurs de découplage sur les circuit intégrés, choses trop souvent oubliée (ou méconnue ?).
- Le projet Kicad est dispo en annexe du billet[1], voici quelques captures d'écrans pour info :
- Notez bien que sur la droite le contour du design n'englobe pas complètement la fiche HD15M, il s'agit d'une erreur esthétique dont je me suis rendu compte trop tard et qui est toujours présente dans projet Kicad, libre à chacun de le modifier.
Avec :
- R1 et R2 = 100 kΩ
- C1 et C2 = 100 nF
- U1 = 74HC74
- U2 = 74HC125
- RV1, RV2 et RV3 = 1kΩ (à l'utilisation, je dirais que 500 Ω serait suffisant)
- VGA1 = D-SUB15 F
- VGA2 = D-SUB15 M
- SW1, SW2, SW3 et SW4 = Switch inverseur
Fabrication :
J'aurais voulu tirer le circuit imprimé double face moi-même, mais j'ai réalisé que des trous métallisés seraient indispensables au niveau des prises VGA pour assurer la continuité du circuit entre les deux faces, sinon il aurait fallu mettre en place un tas de via, et je n'en avais ni l'envie ni l'énergie.
- Coincé, car autant c'est possible pour les autres composants, autant pour ces prises là, il est impossible de réaliser des soudures du côté des composants, j'ai donc fait appel à Seeedstudio pour réaliser le circuit…
Le site a beaucoup évolué et l'envoi de fichier Gerber est vraiment plus clair et facile qu'avant !
- J'ai commandé quelques composants manquants, via Ebay avec les bon mots clef[2], et une fois la totalité reçue, j'ai pu fabriquer le circuit :
- Les 3 potentiomètres de réglage de l'intensité des scanlines sont facultatifs, il est possible de mettre un fil à la place (de fait les scanlines sont donc au maximum, ce qui est parfait).
Utilisation :
- Une fois connecté entre l'ordinateur et l'écran, il suffit d'utiliser le switch ON/OFF pour activer les scanlines.
- EVEN/ODD sert à basculer sur les lignes paires ou impaires.
- WITDH est là pour le choix entre deux grosseurs de lignes, les plus fines sont les plus adéquates selon moi.
- Et enfin VSYNC est à utiliser si les scanlines n'apparaissent pas dans la résolution choisie.
Car il faut au mieux configurer l'ordinateur pour afficher 640x480, ce qui donne le meilleur rendu, mais il est possible d'utiliser 800x600, voire 1024x768, qui nécessite alors de basculer VSYNC.
Remarque importante, il faut absolument utiliser un câble VGA qui possède bien 15 pin (et non 14, la pin 9 absente, comme on en voit encore parfois), car le circuit prend son alimentation sur la pin 9, tension 5 Volt délivrée par la carte graphique de l'ordinateur.
Boîtier imprimé 3D :
- J'ai dessiné et imprimé un boîtier pour le circuit, aussi dispo en annexe du présent billet.
Ressources :
- http://www.mmmonkey.co.uk/scanlines-do-it-yourself/
- http://www.brunofreitas.com/node/36
- https://insertcoins.net/achats-recherches/des-adresses-pour-un-slg/
- https://www.youtube.com/watch?v=ceCIs3U2MMg
- http://www.smallcab.net/generateur-scanline-slg3000-p-307.html
Commentaires
Salut,
Comme d'hab c'est la classe.
Je voulais savoir si tu étais content de seedstudio. Je trouve que c'est dur de trouver des fabricants pas trop cher.
Et sinon est ce que ça fonctionne correctement les petites encoches pour fermer le boitier? Est ce que tu as pas un soucis pour placer la carte dans la boite à cause des interrupteurs?
a plus
Merci ^^
J'ai deux commandes chez seeedstudio à mon actif, sans soucis.
Les petites encoches sur les pieds fonctionnent très bien, et les pieds maintiennent en place la PCB au fond du boîtier.
Effectivement, les interrupteurs gênent la mise en place du circuit dans le boîtier, ça fait partie des trucs que je dois retoucher, ainsi que les dimensions qui sont pas les bonnes…
Je suis pas le seul à avoir un faible pour les écran cathodique.
Perso j'ai un petit projet d'adaptateur ordi-tv cathodique , histoire de pouvoir joué à des jeux indé "rétro" et hack de jeux nes dans de bonne condition (et pénard dans un canapé)
À partir de quel genre de schéma de principe ?
Je suppose que tu connais déjà le miens…
Mon projet est vraiment simpliste (mes connaissances en électronique sont quasi-nul) , c'est utiliser un adaptateur vga s-vidéo vers un adaptateur s-vidéo péritel .
Mais je pense que je risque de devoir faire des réglages avec ma carte graphique pour que l'image de la tv fonctionne correctement
Je sais qu'il existe des adaptateurs universel (à environ 20€, mais vu j'ai juste besoin de l'adaptateur vga vers s-vidéo et rca jaune trouvé à 1,12€ acheté sur un site marchand)
Où des adaptateur vga-péritel (mais semble être de très mauvaise qualité vu les avis)
Ha je vois, oui, dans tous ces cas il y a perte de qualité effective.
J'utilise celui-la http://www.arcadespareparts.com/arc... qui n'est pas trop mal, mais il est nécessaire d'utiliser la résolution 640x480 sur l'ordi pour avoir une bonne restitution de l'image.
Sinon y'a le 15Khz, qui donne une image démentielle en max 320x240, mais c'est une autre paire de manche, logiciellement parlant, http://burogu.makotoworkshop.org/in... alors que le matériellement c'est tout simple : http://burogu.makotoworkshop.org/in...
Billet édité :
Boîtier imprimé 3D ajouté
Jolie, net, propre.
Et l'article est bien rediger.
Si ce n'est pas trop indiscret, ca t'a couté comien de faire les pcb ? Frais de port inclus.
je compte en faire une dizaine pour mes bartops.
Sur le site sus-indiqué,
Dimension: 5cm Max*10cm Max / PCB Thickness: 1 - $18,90
Livraison et frais de dossier - $6,12 USD
Voilà ^^
Salut,
Je me permets une remarque à propos des capa de découplage. Tu as indiqué que c'est du 100µF, je pense que tu voulais mettre 100nF ;-).
Je regarde à faire ce petit PCB pour le fun. Par contre ce qui me gène c'est qu'on ne puisse pas gérer du 1920x1080 (j'ai vu que Smallcab avait le SC-SLG qui gère cette taille). Tu as déjà essayé ou vu des schémas répondant à ça ?
Bonne journée.
Bien vu !
C'est corrigé, merci
À vue de pif le SC-SLG ressemble pas mal au circuit décrit ici, avec un peu plus de composants.
Je n'ai pas vu ou cherché de schémas pour gérer de telles résolutions.
Cependant les scanlines fonctionnent à des résolutions plus élevées, plus ou moins bien, en jouant sur le switch de largeur.
Ça se teste, et varie aussi en fonction de l'écran, car en dehors de la résolution native du LCD, certains écrans réagissent mal, avec ou sans géné de scanlines d'ailleurs.
Regarde mon second billet sur le sujet, avec le RaspberryPi. (même écran, mais convertisseur HDMI>VGA)
Mais bon, déjà 640x480 je trouve ça élevé, alors du HD en scanlines… :p
Bonjour Makoto !
Un DIY au top, comme d'habitude !
Je suis pas mal de tes réalisation, celle de ton Astro force le respect !
Revenons aux scalines, j'ai un projet à peu près similaire, mais pour un écran CRT.
Oui, ça peut paraitre bizarre ; je m'explique :
Je cherche à obtenir un "pseudo" signal 240p depuis une source 480i (Xbox et Dreamcast), par péritel, sur un CRT, donc.
Je dis "pseudo" car, pour simplifier le montage, je ne souhaite que masquer 1 ligne sur 2 sur signal 480i. (et pas forcément générer un vrai signal 240p)
Mon objectif est de ne plus avoir ce fameux scintillement typique du signal vidéo 480i
Il y a pas mal de scanliners qui assurent cette fonction, mais ils masquent que partiellement 1 ligne sur 2 ; la ligne de masquage reste transparente, même potentiomètre à sa position maximale.
Aurais-tu des conseils pour avoir un montage qui masque complètement 1 ligne sur, en gardant la possibilité de switcher entre ligne paires ou impaires ?
D'avance, merci pour l'attention que tu porteras à ma demande.
Là comme ça je n'ai pas d'idée sur la question désolé.
Il faudrait creuser le sujet en reprenant la méthode à sa base j'imagine.
Salut Makoto !
Tout d'abord, merci pour ton retour !
Je suis en train de plancher sur ce projet, je reviens vers toi en cas de succès !
Encore merci !
A + !