Recalbox sur TV CRT en RGB
-
Pouah, ce lien est tout bonnement hallucinant et ... déprimant.
Merci @SECAM
(A lire absolument pour ceux qui veulent en savoir un peu plus sur les difficultés de l'émulation)J'ai appris beaucoup de chose, ça a confirmé beaucoup de mes suppositions et ça a le malheur de me faire comprendre que la recherche de la perfection est (je sais, inaccessible mais déjà s'en approcher) tout bonnement ... infernale !!
A mon grand malheur, je ne peux pas faire ce que je veux avec les hdmi_timings (pour le moment, j’espère).
J'ai compris la conversion Modeline//Hdmi_Timings mais ça fonctionne presque jamais.
La faute au Pixel Clock, je pense mais je ne suis pas sur. Je ne peut pas fixer le Pixel Clock que je veux, même en multiple de 8 ou 16.
(Faut que je comprenne ou est la limite/contrainte pour avancer). Pb de TV, de driver Rpi... c'est un truc de fou.Bon, pour obtenir une émulation digne de ce nom, il faudrait un Hdmi_Timings par résolution (souvent plusieurs pas console et je ne parle pas des jeux qui changent de résolutions en cours de jeu, c'est impossible a reproduire, heureusement il y en a très très peu) et (truc de fou), un Hdmi_Timings par jeu d'arcade (ou presque).
Pour finir, il faudrait peu être adapter chaque Hdmi_Timings a chaque TV CRT.
L'enfer quoi.Pour infos, je donne la méthode de conversion Modelines//Hdmi-Timings.
Une Modeline se présentée sous cette forme :
Modeline "384x224" 7.500 384 400 435 486 224 240 243 259 -hsync -vsync
Un Hdmi_Timings, sous cette forme :
hdmi_timings 384 1 16 35 51 224 1 16 3 16 0 0 0 60 0 6400000 1
Les paramètres a récupérer de la Modeline sont :
E, F, G, H, J, K, L, MPour faire un Hdmi_Timings :
S = E
T = N : (C'est la synchro horizontale).
U = F - E
V = G - F
W = H - G
X = J
Y = O (C'est la synchro verticale).
Z = K - J
AA = L - K
AB = M - L
AC = Décalage A synchro verticale, a laisser a 0
AD = Décalage B synchro verticale, a laisser a 0
AE = Pixel Rep, a laisser a 0
AF = La fréquence en Hz
AG = Non-entrelacé = 0
AH = Pixel frenquency/Pixel Clock
AI = L'aspect Ratio (1 pour le 4/3)Je pense que je vais me concentrer sur la création des quelques résolutions principales a 60Hz avec très peu d'overscan.
Dans la mesure ou l'Aspect Ratio est aléatoire et corresponde a l'overscan de la TV, la fréquence utilisé ou les réglages des moniteurs d'arcade. Je pense que le meilleur Aspect Ratio c'est celui qu'on aime, qu'on trouve le mieux proportionné et qui occupe une quasis totalité de l'écran sans trop de perte du a l'overscan. -
Pour qu'on comprenne bien cette "recherche de la perfection", mon but est de me passer de l'option RetroArch "VSync ON".
Également le Hard GPU Sync et le Threated Video qui induisent un lag
Tout en ayant une parfaite fluidité du jeu.- Pourquoi ?
- L'Input Lag...
Petit test.
Lancez Sonic 1 sur Megadrive et essayez de sauter (sur place, des le début du jeu) avec et sans Synchro.
Input Lag est flagrant.Bien-sur, il faut faire ce test sur un CRT, un LCD n'est pas assez réactif et induit déjà son propre lag.
-
Bonsoir.
Je me posais quelques questions à ce sujet.
Est-il possible de brancher la recalbox en RGB sur un crt avec les câbles du tuto d'@archimage, sans avoir à bidouiller les viewpoint et compagnie ? En mettant une résolution qui serait la même pour toutes les consoles ?
Aussi, pourquoi la résolution est de 1920 x 240 (le 1920 sur un crt, j'ai l'impression de louper un truc ^^') ?
Enfin, est-ce sans risque pour la TV ? De tâtonner avec les résolutions et tout ça, ça ne risque pas de l'abîmer ? -
Pour passer Recalbox en 240p par Péritel, quelques modifs s'imposent.
Le post est assez claire (quoi qu'il faut quand même s'y connaitre un minimum).
Le plug and play Recalbox to Péritel, c'est pas pour tout de suite mais ... qui sait...C'est beaucoup plus facile avec un convertisseur HDMI vers VGA qu’avec un VGA666 (GPIO vers VGA).
(La, on peut faire beaucoup plus de conneries...)Le 1920 pour un CRT, c'est vrai, c'est un peu trop, mais d’après @archimage ça a l'air un poil plus beau.
Bon, du 720x240 ça doit être suffisant.Sans risque pour la TV de tâtonner les résolutions, oui si tu dépasses pas le 240p
Ma pauvre TV a mangé grave avec mon GPIO2SCART, j'en lui ai mis plein la tête, des désynchros de fou et ...
No problémo, elle fonctionne toujours parfaitement ... pour le moment. -
D'accord, merci de votre réponse !
-
J'ai toujours autant de mal a comprendre pourquoi il y a une limite au pixel Clock en passant par le VGA666.
Malgré mes intenses recherches et poses de questions sur les forums, je reste perplexe.Cependant, j'ai trouvé une résolution qui est très acceptable, stable et non déformée.
Faire joujou avec les timings sur un CRT c'est vraiment la galère. Je fais que ca depuis 15 jours...Dans la mesure ou l'overscan n'est pas réglable, pas le choix si on veut respecter les scanlines, ça déborde un peu verticalement en 240p.
Pas de probleme en 224p.
A chaque fois que je modifie un paramètres, soit je perds soit la synchro, soit la fréquence n'est plus 50Hz/60Hz.Voici les timings que j'utilise :
hdmi_timings=996 1 24 96 120 240 1 3 10 6 0 0 0 60 0 19200000 1
Ça fait une résolution de 996x240x60Hz.
On respecte parfaitement les scanlines pour les jeux 224p et 240p verticalement.
Par contre, horizontalement, il faut laisser Retroarch agrandir et lisser les lignes, ce qu'il fait très très bien.
On est pas pixel perfect horizontalement mais le résultat est parfait.Je peux enfin "consoliser" un Rpi avec sortie RGB, me reste a trouver quelle console je vais vampiriser.
Il va quand même falloir que je créé des listes de jeux avec leurs résolutions pour adapter le viewport a la résolution du jeu. Surtout en arcade, la ou il y a énormément de résolutions. Je ne parle même pas de toutes les fréquences...
-
En 4.1 il y a une évolution qui permet de gérer un ficheir de parametrage de retroarch par console et un par jeu. Tu vas enfin migrer en v4.x ?
@archimage tu pourrais tester le timing de ironic ?
-
Oh lala ! vivement la 4.1 alors
C'est vrai que la, j'aurais pu trop besoin de la 3.3.Pour tous mes essais sur CRT, j'utilise un Rpi 2 et RB 4.0.
RB 3.3 est seulement sur mon Bartop.Pour ceux qui voudraient tester sur un Rpi3, ils auront probablement un manque de rouge, il y a une ou deux ligne a ajouter dans le confix.txt pour désactiver l'UART ou l'I²C, je sais pu précisément, en tout cas j'ai bien galéré, je retrouverais l'info.
Ça donne ça, avec mon Smartphone antédiluvienne
En vrai, les couleurs sont plus vives et l'image plus contrasté, comme les captures d'@archimage en un peu plus claire.
C'est pas évident de passer entres les balayages, j'ai fais ce que j'ai pu.
De plus j'ai réduit la taille de l'image qui était trop grosse, on perd en précision.Bon, je vais en blesser plus d'un, pour moi c'est plus beau que l'arcade.
(Enfin que sur 90% des moniteurs fatigués qui équipaient les bornes).@subs
Je sais pas si ça sert à quelque chose de tester les hdmi_timings à la place des hdmi_cvt.
Je pense que le résultats sera le même. mais ca merite d'etre testé.
J'ai reçu 2 VGA666 a assembler, je testerais prochainement pour voir les différences avec un convertisseur hdmi+cable.L’intérêt d'un convertisseur HDMI vers VGA et d'un câble VGA vers Péritel est de pouvoir facilement créer des résolutions avec un hdmi_cvt custom. Chose impossible en passant par les GPIO. De plus, on a bien 16,777,216 couleurs. (24bits). On peut egalement utiliser le DAC du convertisseur HDMI.
L’intérêt de passer par les GPIO, déjà si on bricole, c'est moins cher, c'est plus fun et "peu être" un chouilla mois de lag vidéo.
Ça doit également consommer un peu moins de jus, il n'y a pas de convertisseur a alimenter par le HDMI.
Malheureusement, on est en 18bits, soit 262,144 couleurs. Bon pour les jeux c'est suffisant, moins pour KODI.
(On peut néanmoins sortir du 24bits du GPIO en faisant un VGA888).
-
@ironic Bon, j'ai mon convertisseur VGA et mon câble RGB espagnol
Je fais quoi maintenannnnnnnnt ?
Possibilité de synthétiser tout ce topic ironic ? merci d'avance, ou passe sur le chan IRC, j'y suis en permanence
Ou au pire coller vos config.txt déjà tout prêts ?
-
@MeteK Le truc c'est que rien n'est encore tout prêt ... la partie console a l'air de se stabiliser. Par contre l'arcade, c'est une autre pair de manches
-
Salut.
Quand tu dis, j'ai mon convertisseur, tu parles bien d'un convertisseur HDMI vers VGA ?
Si c'est la cas, c'est pas le matériel que j’utilise mais la méthode/résultat doit être identique.T'as quoi comme Rpi ? Version de Recalbox ? Ton Rpi est en réseau ?
En fait, t'as pas grand chose a faire pour déjà tester tout ça, il suffit juste de modifier le config.txt (voir Wiki).
Fais en une sauvegarde, voici le mien, j'ai retiré la partie VGA666 :
avoid_safe_mode=1
hdmi_drive=2
dtparam=audio=on
disable_overscan=0gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=256dpi_group=2
dpi_mode=87
hdmi_timings=506 1 8 48 56 240 1 3 10 6 0 0 0 60 0 9600000 1
Bon, dans cette configuration, on n'ouvre qu'une seule résolution pour tous les émulateurs, c'est pas top mais c'est que qu'il y a de plus facile/rapide a faire.
Après, tu éteins ton Rpi, tu branches ton câble VGA vers Péritel et ta TV.
Puis tu allumes le Rpi.Recalbox devrait démarrer mais le thème (même tous les autres thèmes) ne sont pas adapté.
J'en modifie un actuellement, il est pas fini mais reste exploitable en 240p.
Thème 240pTu verras surement que l'overscan est présent sous EmulationsStation,, je ne pense pas qu'on puisse le diminuer sauf en modifiant le thème.
Avant de lancer un jeu :
OPTIONS DES JEUX/AVANCÉES
Et dans tous tes émulateurs, choisi :
FORMAT JEUX <PERSONALISÉ>Maintenant, tu peux lancer un jeu, ouvrir RetroArch et changer le VIEWPORT.
Tu peux voir que malgré le fait qu'on ouvre une résolution de 506x240, on utilise un zone d'affichage que de 480x224.
Ça permet d'avoir le moins d'overscan possible pendant le jeu et d'avoir un pixel perfect verticalement.
Horizontalement, 480 pixels permet une bonne mise a l'échelle des autres résolution.
Attention, on ouvre une résolution en 60Hz, si tu utilises un jeux 50Hz, tu risques d'avoir des saccades.
On peut également voir que les polices de RetroArch, ne sont pas pixel perfect, c'est normal, une résolution de 240p mais un affichage de 224p. Pour la PSX par exemple, on mettra 480x240 et RetroArch sera en pixel perfect (bon c'est vrai, on s'en fou, c'est très lisible).Et, ne pas se fier a la piètre qualité des photos.
De cette façon, tu utilises les hdmi_timings dans confix.txt mais avec un adaptateur HDMI vert VGA, tu peux utiliser les hdmi_cvt.
EX : hdmi_cvt=720 240 60 1 0 0 1Et l'overscan doit être réglable de cette façon. Mais je ne sais pas exactement comment il fonctionne, est ce qu'il respecte vraiment la résolution choisi ou est ce qu'il redimensionne le Frame Buffer (perte de qualité).
-
Ok mais tu peux me copier le corps entier de ton config.txt stp ?
-
@ironic Je suis sur un Rpi2 avec la dernière version de recalbox.
Je suis en réseau.
Donc avec adapt HDMI to VGA et câble de chez retrocable.es
là mon config.txt est comme ça :
# uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 disable_overscan=1 # uncomment to force a specific HDMI mode (this will force VGA) hdmi_cvt=1920 240 60 1 1 0 0 hdmi_disable_edid=0xa5000080 hdmi_pixel_encoding=2 avoid_safe_mode=1 disable_overscan=0 hdmi_drive=2 hdmi_group=1 hdmi_mode=6 hdmi_force=1 # comment to get jack audio hdmi_drive=2 config_hdmi_boost=0 # force hdmi while the tv can take time before sending the signal on the hdmi output hdmi_force_hotplug=1 # uncomment for composite PAL #sdtv_mode=2 # uncomment for lirc-rpi #dtoverlay=lirc-rpi # if you plug your tv at the same time as your rpi and that the rpi switches from the hdmi or give a low resolution because tv had no enough time to initialize it boot_delay=3 # uncomment if you don't want the rainbow at startup disable_splash=1 # Overclock gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=512 avoid_safe_mode=1 kernel=zImage # NOOBS Auto-generated Settings: hdmi_force_hotplug=1 arm_freq=1050 core_freq=525 sdram_freq=450 force_turbo=0 over_voltage=4 over_voltage_sdram=2 gpu_freq=350`
Apparemment comme ça ça tourne en interlacé pas progressif...
Edit modo : ajout de la balise code
Edit N00b : Merci -
Mon config.txt ne t’intéresse pas, je suis sous VGA666.
Sinon, le voila :avoid_safe_mode=1 hdmi_drive=2 dtparam=audio=on disable_overscan=0 gpu_mem_256=128 gpu_mem_512=256 gpu_mem_1024=256 # Enable VGA666 dtoverlay=vga666 enable_dpi_lcd=1 display_default_lcd=1 dpi_group=2 dpi_mode=87 hdmi_timings=506 1 8 48 56 240 1 3 10 6 0 0 0 60 0 9600000 1 kernel=zImage arm_freq=1050 core_freq=525 sdram_freq=450 force_turbo=0 over_voltage=4 over_voltage_sdram=2 gpu_freq=350
Pour moi, ton
hdmi_cvt=1920 240 60 1 1 0 0
c'est du progressif, donc du non-entrelacé.
1920, ca doit etre illisible sous EmulationStation, non ?
Je parle pas du thème dont la police est éditable mais des menus EmulationStation.Donc ça fonctionne chez toi ?
-
Oui ça fonctionne et c'est carrément pas mal !
Bon après le scintillement et le fait que ce soit pas cadré sous ES ça saoule un peu mais bon.
-
Si ça scintille, c'est que t'es en entrelacé sous ES. Donc tu doit etre en 480i (ou autre).
J'ai choisi de passer ES en 520x288x50hz, le résultat est pas mal et sans scintillement.
Bon, la c'est une capture avec raspi2png, on voit pas le floutage du CRT et le petit (car il est petit maintenant) overscan.Et l'image est affichée en 4/3 et pas allongée comme au dessus.
L'overscan sous ES n'est pas du tout gênant.
Ça donne ça, désolé pour la qualité des photos qui ne font pas honneur au rendu réel.
Maintenant, la SNES est en 50Hz, en pixel perfect (verticalement, soit 239p).
On est extrêmement proche de la version originale avec ses bandes noires.Bon, on est pas pixel perfect honrizontalement car je suis limité avec le Pixel Clock et je ne trouve pas de solution.
Le scaling fait très bien son boulot, c'est très propre et net.Voila les timings que j'utilise sous ES et les jeux consoles 50Hz:
hdmi_timings=512 1 16 48 64 288 1 3 5 6 0 0 0 50 0 9600000 1
Et une autre pour la route. Lissage inutile dans cette version, le balayage s'en charge.
hdmi_timings=1010 1 24 96 120 288 1 3 10 6 0 0 0 50 0 19200000 1
ES est un peu moins adapté, la police est un peu trop petite mais reste lisible. -
Bonjour à vous,
juste un post pour vous remercier de vos contributions sur ce site et pour toutes ces infos :
grâce à vous, je viens d'arriver a brancher la sortie video d'un pi2 sur l'écran d'un minitel, pas forcément pour du retrogaming (c'est du n&b) mais juste histoire de bricoler.
Globalement j'ai utilisé un adaptateur gert vga666, récupéré la sortie RGB de la prise VGA, les synchros H et V sont reliées entre elles avec un résistance 1k pour en faire une synchro composite.
(ce qui revient globalement au schéma gpio2scart )L'écran du minitel est semblable a celui d'une télé, un chip sur la carte mère du minitel génère un signal RGB que l'on peut sortir vers une tv (plus trop utile ou shunter pour envoyer une image sur l'écran.
avec le timing suivant, ça marche plutôt bien :
hdmi_timings=512 1 16 48 64 288 1 3 5 6 0 0 0 50 0 9600000 1
Je vais essayer le montage avec le transistor pour générer la synchro composite et voir si cela change quelque chose, et peut-être jouer un peu avec les timings...mais pour l'instant c'est pas mal, juste le noir des textes dans les menus qui est peu faiblard, peut-être des résistances à ajouter sur les lignes RGB.
merci à vous.
David -
Bonjour, j'ai une question peut-être bête désolé....
pourquoi passer un branchement HDMI>VGA>Peritel et ne pas utiliser la sortie jack 3,5mm ?
en fait je demande cela car j'essaie d'utiliser cette sortie Jack pour brancher sur une télé cathodique philips et je n'y arrive pas.... -
@vince03 Salut !
Connais-tu la différence entre du composite et du RGB ? C'est justement là tout l'intrêt -
Et bien non... tu l'as deviné....