Abonnement aux commentaires

S'abonner pour recevoir les commentaires suivants par email

まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Un générateur de Scanlines hardware

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.

indievsretro.pngAlors 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 :

img_0283.jpg img_0285.jpg

Essais :

img_0281.jpg

  • 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 :

img_0276.jpg img_0275.jpg
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 ?).

GeneScanlinesStructurel.png

  • Le projet Kicad est dispo en annexe du billet[1], voici quelques captures d'écrans pour info :

GeneScanline.png
GeneScanlineSerigraphie.png GeneScanlineCuivreDessus.png GeneScanlineCuivreDessous.png

  • 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 :

dsc01376.jpg dsc01382.jpg
dsc01385.jpg dsc01387.jpg

dsc01388.jpg

  • 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).

dsc01378.jpg dsc01390.jpg

Utilisation :

dsc01403.jpg

  • 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 :

dsc01408.jpg dsc01423.jpg
dsc01412.jpg dsc01415.jpg dsc01424.jpg dsc01425.jpg

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

Notes

[1] ci-dessous…

[2] VGA DB15 15-Pin D-SUB 3 Rows Male Right Angle PCB Solder | ss12f23 toggle vertical slide switch 5pin 4mm | RM065 1K ohm 102 Trim Pot Trimmer Potentiometer

Commentaires

1. Le samedi, 4 juin 2016, 12:12 par Sacha

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

2. Le samedi, 4 juin 2016, 14:18 par Makoto

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…

3. Le samedi, 4 juin 2016, 18:20 par Oliver

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é)

4. Le dimanche, 5 juin 2016, 10:54 par Makoto

À partir de quel genre de schéma de principe ?
Je suppose que tu connais déjà le miens…

5. Le dimanche, 5 juin 2016, 12:59 par Oliver

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)

6. Le dimanche, 5 juin 2016, 17:23 par Makoto

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...

7. Le mercredi, 8 juin 2016, 20:51 par Makoto

Billet édité :
Boîtier imprimé 3D ajouté :)

8. Le vendredi, 2 juin 2017, 18:01 par Giants

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.

9. Le samedi, 3 juin 2017, 11:38 par Makoto

Sur le site sus-indiqué,
Dimension: 5cm Max*10cm Max / PCB Thickness: 1 - $18,90
Livraison et frais de dossier - $6,12 USD

Voilà ^^

10. Le jeudi, 8 mars 2018, 09:58 par Julien

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.

11. Le jeudi, 8 mars 2018, 19:37 par Makoto

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

12. Le lundi, 2 juillet 2018, 21:55 par Evil Moukin

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. :)

13. Le samedi, 7 juillet 2018, 18:03 par Makoto

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.

14. Le lundi, 9 juillet 2018, 00:04 par Evil Moukin

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 + !

Ajouter un commentaire

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

Fil des commentaires de ce billet