Recalbox sur TV CRT en RGB
-
@ironic Je confirme voir une différence dans la définition sur SF3 entre le 720 et le 1920, mais c'est possible que je me trompe, le temps de rebooter et de regler le viewport est suffisament long pour perdre la mémoire visuelle... Mais je constate que les contours des personnages sont moins grossiers en 1920 pourquoi je ne saurais pas te dire. Le seul effet négatif que j'ai eu c'est un sifflement plus prononcé de la télé, mais il a été résolu en rajoutant l'option margin dans hdmi_cvt. Il faut avoir une connaissance approfondie de libretro et de SF3 pour te confirmer ou pas si le core force la résolution de certains jeux. J'ai trouvé sur le net que je ne suis pas le seul à avoir remarqué ça. Sinon en dehors de cette histoire sur le 1920 je pense que ta démarche est très intéressante, je suis curieux de savoir comment on pourrait forcer une résolution différente entre chaque core sans avoir à rebooter... Aussi il faudrait savoir comment la télé traite réellement cette situation dans le cas des vraies consoles ? A-t-elle un mode particulier, prenons 240 lignes en 50 ou en 60, et que la console rentre plus ou moins dans le cadre ou produit-elle un espace différent pour chaque console ?
-
Je viens de faire une comparaison photo, le 720 est identique au 1920 c'était juste une impression... Cela veut dire que je gagnais de l'input lag inutilement.
-
Je pense que tu es sur la bonne piste, je vais tester tes timings un peu aussi.
-
Merci pour ces infos.
Savoir comment les consoles traitent les TV, c'est ce que je cherche a comprendre car je n'arrive pas a reproduire les mêmes résolutions/aspects avec le Rpi.
Par contre, j'avance avec les Timings, j'ai réussi a faire des trucs du genre avoir une même résolution et un vievport plus petit (je ne parle pas de Retroarch).
Ça permet de réduire l'overscan tout en conservant la même résolution. C'est juste des pixels plus petits.Apparemment, on peut définir une zone dans laquelle sera définie une résolution.
Ça correspond peut être a ton "margin".J'avance doucement car j'ai fait péter un plomb a la TV plusieurs fois avec des Timings a la con.
-
Il reste 2 hypothèses, soit c'est possible de créer autant de résolutions que de cores et les lancer au démarrage de chaque jeu, soit on doit rester à une seul résolution maxi et adapter le viewport à celle-ci, pour cela il faudrait connaitre le jeu qui a a résolution la plus élevée, je suppose que ça doit se situer entre libretrot mame et la dreamcast...
-
En 640 par contre j'ai une perte importante de qualité, du tearing au scrolling horizontal et une image un peu déformée. Je remonte pour refaire des tests...
-
Bon je me suis rendu compte que je ne comparais pas bien, en utilisant les fleches de direction sur windows en zoomant il se deplace sur la même photo, alors qu'en fait j'avais deux fichiers entre lesquels je voulais alterner...
J'ai réalisé qu'il y avait une très subtile différence quand même sur la définition de certains éléments comme les textes
Encore une fois il se pourrait que ça vienne d'autre chose, mais il y a une différence perçue en vrai, quoique minime. Je trouve que c'est mieux en 1920, mais je ne saurais pas l'expliquer.
Difficile de prendre des photos aussi...
Si ça se trouve ça n'a aucun rapport avec la résolution, juste une histoire de proportions des pixels ?
-
Je pense meme qu'il faudrait autant de résolutions que de résolutions nécessaires.
C'est a dire qu'une même console (et je ne parle pas d'arcade) a parfois plusieurs résolution.
Pour bien faire in faudrait connaitre la résolution du jeu avant de le lancer mais je ne vois pas comment faire cela automatiquement.
Moi je le fais sous Recalbox 3 avec mon LCD en ayant mis tous les jeux dans une liste avec leurs résolutions.
Ca permet de gérer l'aspect ratio également et les jeux horizontaux/verticaux.
Mais la n'est pas le sujet.
Par contre, la DreamCast, c'est du 640x480 je crois, donc impossible. Idem la Playstation.
Non entrelacé, ça doit être du 288p maxi je pense.Je testerais quand je serais de retour les changements de résolutions a la volée.
Entre tes 2 versions 1920 et 720, je ne vois pas de différence. Si il y en a une, c'est minime.
A mon avis, la résolution max utilisable (et raisonnable) non entrelacée et de 720x288.Encore pas mal d'essais nous attende...
-
Attention la dc : on n'utilise pas le core retroarch, donc ca va être une autre paire de manches pour la gérer. Idem la N64
Prenons le problème à l'envers : pourquoi ne pas assigner une resolution TV de 640x480 ? Là vous cherchez à faire du pixel perfect 1:1 par rapport ) l'origine. En 640x480, vousne faite que doubler la résolution verticale, je doute que ce soit une hérésie pour le rendu ?
-
Dans mon cas je suis déjà en 480i pour ES, mais c'est entrelacé donc quasi injouable dans cette résolution à moins d'utiliser des filtres d'adoucissement.
-
quelle est la nécessité de faire tourner les émuls en 240p plutôt qu'en 480p ?
-
@subs La plupart ont été conçus en 240p avec comme intention de tirer profit du scanline naturel de la télé qui s'intercale entre les lignes, et le 480p n'est pas supporté par le CRT, il n'y a que le 480i qui passe la barre mais avec de gros scintillements et une image moins belle.
-
@subs said in Recalbox sur TV CRT en RGB:
quelle est la nécessité de faire tourner les émuls en 240p plutôt qu'en 480p ?
-
@ironic et @archimage ce que vous faites est extraordinaire.
En résumé, je comprends que les exigences sont les suivantes:
- rPi (tous les modèles?)
- GPIO > SCART
- installation du driver VGA666
- modification du config.txt
C'est vrai?
J'ai un modèle Raspberry Pi B1, j'offrir à «volontaire» pour acheter un prototype GPIO > SCART pour le test! ; D -
@subs
Comme la dit @archimage , les TV CRT (pas les moniteurs CRT) ne peuvent pas dépasser une certaine résolution verticale.
Pour le progressif 50Hz, c'est probablement de l'ordre de 288p.
Après on passe en entrelacé, la permet de doubler le nombre le ligne mais les ligne paires sont affichées les trames (ou frames) paire et les autres lignes, les frames impaire (en gros). Ce qui rend l'écran difficile a supporter pour des jeux non prévus.
La tv CRT a une résolution de soit 288p ou en doublant on obtient 2x228=576i. (PAL). Pour du NTSC c'est 240p et 480i.
Attention, je parle des lignes visibles, en faite en PAL il y a 625 ligne et en NTSC 525 lignes.@Scandy
Pour le moment, ce n'est pas évident de fair fonctionner le Rpi sur la TV.
Si tu veux essayer, tu peux achete :
Un GPIO2VGA (c'est toi qui a donné le lien, je crois. J'en ai même commandé 2 sur Pi-Supply).
Et un câble VGA2SCART comme cité plus haut.Faire un GPIO2SCART me parait problématique.
La connectique Péritel est énorme pour tenir sur une petite platine posée sur le Rpi.
Autant utiliser que qui existe déjà.Et pour la configuration/essais, lis le forum (je pense que t'as tout suivi) mais ça reste expérimental.
Pour les Rpi compatibles VGA666 :
Rpi1B+ : OK
Rpi2 : OK
Rpi3 : Je vais tester mais je pense que oui.Attention, NOOBS/PINN non compatible.
Il y a surement un petit truc a faire mais j'ai pas cherché.Sinon, je crie pas youpi mais j'arrive a changer de résolution a la volée.
Lire le post jusque la fin et installer directement le 2eme firmware, le 1ere fonction pas comme on veut.
https://github.com/raspberrypi/firmware/issues/637
Et sa fonctionne par SSH, trop de la balle vais pouvoir optimiser mes résolutions sans rebooter a chaque fois.Par contre, il faut utiliser :
vcgencmd hdmi_timings
car l'autre ne fonctionne pas en dessous de 640x480
vcgencmd hdmi_cvt -
Un tuto express hdmi avec une résolution 480i pour ES et Kodi et 240p60 pour les emulateurs qui auront chacun un fichier de recalibrage du viewport custom.
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-
Modifier les fichiers comme subs l'a indiqué plus haut dans le topic en attendant une intégration totale dans une version ultérieure
-
Créer des resolutions custom qui auont le même nom que la console dans le dossier \RECALBOX\share\system\configs\retroarch\snes.cfg
Par exemple dans snes.cfg :
aspect_ratio_index = "22"
custom_viewport_width = "1792"
custom_viewport_height = "224"
custom_viewport_x = "63"
custom_viewport_y = "16"Ainsi chaque émulateur chargera son propre fichier de configuration au démarrage de Retroarch.
-
Utiliser le thème CRT pour réduire l'impact de l'overscan naturel de la télé sans activer l'overscan du PI.
-
Editer le fichier recalbox.conf:
system.es.videomode=CEA 6 HDMI
global.videomode=DMT 87 HDMI- Pas d'overscan
- Pas de format automatique 4/3 ou 16/9
- Pas de lissage ni de shaders
Avec ça tu devrais te débrouiller pour faire fonctionner toi même assez simplement.
NB : tu peux remplacer le 1920 par 720 et tu devras regler les fichier snes.cfg nes.cfg etc en conséquence...
-
-
Au-moins, celui qui veut essayer le VGA2SCART ou le GPIO2SCART a tout ce qu'il faut.
Je pense que ta solution est pour le moment la plus abordable, même si il y a une partie scripts.
Configurer des résolution avec les Timings et une vrai torture.
Heureusement que je peux changer de résolution a la volée, sinon je serais déjà fou avec mes centaines d'essais.
Je cherche obstinément a avoir une résolution de 384x224x60 sans overscan, je m'arrache les cheveuxJe me pose beaucoup de questions malgré toutes mes lectures.
Toutes le TV CRT ont un overscan, on ne peut pas y couper.
Alors pourquoi sur la Snes, si j'ouvre une résolution de 256x224 sur la TV, aucune partie de l'image ne dépasse de l'écran ?Snes a gauche
Si la résolution est de 256x224, a quoi correspondent les bandes noires en haut et en bas, a des zones non balayées ?
Quand une zone n'est pas balayée, on voit la différence, elle est extrêmement sombre, comme la TV éteinte, ici c'est pas le cas !
Ça peut se voir si on passe en NTSC sur une TV PAL ou quand on active le mode 16/9 (si il y en a un) sur les CRT.Quand on parle de résolution de console, c'est la taille qu'occupe la surface d'affichage mais a mon avis la résolution ouverte est bien plus grande.
Je lis, je lis, je lis, j’essaie, j’essaie, j’essaie et c'est de pire en pire dans ma tête
-
Si je peux donner un coup de main, il y a dans ce sujet un topic sur les modelines, donc une capture d'écran qui détaille les fréquences de la megadrive.
http://www.neo-arcadia.com/forum/viewtopic.php?t=37718 -
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.