Du 240p en Péritel sur un Raspberry Pi

Il y a quelques semaines, j’expliquais comment afficher du 240p en VGA avec un Raspberry Pi, pour les émulateurs. Depuis, j’ai reçu un câble VGA vers Péritel, ce qui permet d’utiliser n’importe quel téléviseur. Avec cette solution, il devient possible d’obtenir un résultat assez proche des consoles originales sur un téléviseur cathodique.

L’affichage en RGB

Petit résumé : avec un Raspberry Pi et un adaptateur à quelques euros qui se place sur les GPIO, il est possible de générer un signal 240p50 (PAL) ou 240p60 (NTSC) en natif. La majorité des consoles 8 et 16 bits travaillaient de cette façon, ce qui permettait 50 ou 60 fps, contre (logiquement) 25 ou 30 en 480i, le mode utilisé en vidéo. Le principal problème, c’est que les écrans acceptent rarement le 240p en VGA : il utilise une fréquence horizontale de ~31 kHz et le signal 240p descend à 15 kHz. Trouver un cathodique ou un LCD qui accepte du 240p à 15 kHz, c’est un peu le parcours du combattant. Mais il y a une solution en Europe : la prise Péritel.

La prise VGA d’un Raspberry Pi

La prise Péritel

Cette invention française date de la fin des années 78 et a été imposée dans les téléviseurs entre 1980 et 2015. La prise Péritel est intéressante pour les amateurs de jeux vidéo car elle véhicule trois types de signaux. D’abord, le basique composite : cette prise transmet dans un seul câble la luminance (les informations nécessaires à une image en noir et blanc) et la chrominance (les couleurs). C’est la pire solution possible (en dehors de la prise RF, rare en Europe, qui ajoute en plus le son). Ensuite, le S-Video. Cette prise sépare la luminance et la chrominance. Avec une source qui sépare les deux (astuce, pas un LaserDisc), ça permet de gagner un peu en qualité. Enfin, la prise Péritel transporte aussi un signal RVB. Il s’agit de la Roll’s des signaux analogiques : les couleurs sont séparées. Une console qui sort un signal RVB donne généralement une bien meilleure image que les deux autres solutions, quand elle existe. La mode actuelle dans le retrogaming est donc – quand c’est possible – d’utiliser la sortie RGB ou d’en ajouter une.

Dans les consoles classiques, commençons par Nintendo. La NES ne sort pas de RGB nativement, une modification est nécessaire. Attention, la NES française fait semblant de produire du RGB, mais il est obtenu à partir du composite d’origine. La Super NES sort nativement du RGB avec un câble adapté, tout comme le GameCube en version PAL. La Nintendo 64, elle, nécessite des modifications. Chez SEGA, Master System, Mega Drive et Saturn sortent du RGB, mais ça dépend un peu de la version matérielle de la console (la Master System II ne le fait pas sans modifications, par exemple). Enfin, la PlayStation le fait sans soucis.

Le problème du câble

Vous trouverez facilement des explications sur la fabrication d’un câble VGA vers Péritel sur Internet, pour une bonne raison : il s’agit d’un signal RGB dans les deux cas. Avec un périphérique capable de sortir du VGA à 15 kHz (ici le Raspberry Pi, mais sinon un PC avec des logiciels adaptés), ça ne pose pas de soucis. Attention tout de même, toutes les cartes graphiques ne le permettent pas et les GPU récents (moins de deux ans) ne supportent plus le VGA. Il y a tout de même quelques points importants. Le premier vient de la commutation en RGB : la prise doit recevoir une tension sur la broche 16 qui indique le type de signal. Si cette tension est proche de 0, il s’agit d’un signal composite, avec 1 à 3 V, il s’agit d’un signal RGB. Le second vient de la commutation lente : une tension de 0 V sur la broche 8 indique qu’il n’y a pas de signal, une tension de ~6 V indique un signal 16:9 et une tension de ~12 V (en pratique, 9 V suffisent) un signal 4:3. Ce signal de commutation n’est pas toujours présent, mais il est important : il permet de forcer l’activation de la prise Péritel. Certains vieux téléviseur ne permettent pas de forcer manuellement le passage sur la prise et sans ce signal, pas d’image. Sur un téléviseur moderne qui propose une touche dédiée, on peut parfaitement s’en passer.

Comme je n’avais pas envie de fabriquer mon câble, j’ai choisi un modèle de chez Retrocable.es, qui propose une entrée VGA, une entrée audio et une prise USB pour la commutation en RGB. Ma remarque sur l’absence de commutation lente n’était pas innocente : le câble ne l’intègre pas. En clair, il nécessite un téléviseur capable de passer manuellement sur l’entrée Péritel. Dans le pire des cas, il reste possible de brancher une pile 9 V sur la bonne broche, c’est généralement suffisant. Un port USB ne permet évidemment pas la commutation, la tension reste trop faible.

Mon câble de chez Retrocable : entrée VGA, audio et USB, sortie Péritel

Enfin, au moment du branchement, attention à un point : certains téléviseurs n’intègrent pas la gestion du RGB dans toutes les prises. Sur mon LCD Samsung de 2010, une des deux prises ne fonctionne qu’en mode composite (Ext2). Seule la première (Ext1) accepte du RGB, et c’est indiqué explicitement.

Le résultat

Avec le passage en 240p et un réglage de l’overscan, l’image est très correcte et permet de jouer en « natif » à certaines vieilles consoles. Mon câble a tendance à demander un peu trop d’énergie sur le port USB, donc je vous conseille d’utiliser un appareil dédié pour alimenter la broche de commutation rapide (un chargeur, le téléviseur, etc). Si l’image dépasse de l’écran, vous pouvez modifier le réglage de l’overlay. Il faut modifier /boot/config.txt et décommenter (ou ajouter) les lignes suivantes.

# overscan to adjust image position
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0

Ensuite, il suffit de jouer sur les valeurs pour obtenir une image qui rentre dans le cadre. L’overscan dépend fortement des téléviseur et certains permettent de le supprimer en nommant la sortie « jeux » ou « DVI ». Au final, ça donne un résultat efficace sur un téléviseur LCD, reste à tester sur un cathodique. En pratique, il devrait même être possible de faire un adaptateur GPIO qui sort directement sur une prise Péritel. Qui lance un Kickstarter ?

Du 240p sur un téléviseur LCD