Recalbox sur TV CRT en RGB
-
***Pour l'arcade ... yallah ! les resolutions des roms c'est le salon de l'agriculture ma parole !
Le 240p intéresse pas mal de monde, et on paie des upscalers/downscalers 300 euros pour pouvoir générer cette résolution SD RGB avec des scanline sur HD, sauf que peu de gens savent que c'est possible avec le raspberry nativement directement sur un vieux CRT. Meme des cartes graphiques haut de gamme peuvent ne pas avoir l'option.
Je te rejoins tout de suite sur irc
-
bon, résolu pour une recalbox 4.0.0-beta4 (marechera sur toute 4.0.0, meme la stable) en bossant de concert avec @archimage en faisant :
- créer un fichier par systeme dans
/recalbox/share/system/configs/retroarch
(ex : snes.cfg) avec dedans uniquement les commandes propre au système qu'on (ex :aspect_ratio_index = "22"
) - modifier
/usr/lib/python2.7/site-packages/configgen/generators/libretro/libretroGenerator.py
pour qu'il ressemble à :
import Command import libretroControllers import recalboxFiles import libretroConfig import shutil from generators.Generator import Generator import os.path class LibretroGenerator(Generator): # Main entry of the module # Configure retroarch and return a command def generate(self, system, rom, playersControllers): # Settings recalbox default config file if no user defined one if not system.config['configfile']: # Using recalbox config file system.config['configfile'] = recalboxFiles.retroarchCustom # Create retroarchcustom.cfg if does not exists if not os.path.isfile(recalboxFiles.retroarchCustom): shutil.copyfile(recalboxFiles.retroarchCustomOrigin, recalboxFiles.retroarchCustom) # Write controllers configuration files libretroControllers.writeControllersConfig(system, playersControllers) # Write configuration to retroarchcustom.cfg libretroConfig.writeLibretroConfig(system) # Retroarch core on the filesystem retroarchCore = recalboxFiles.retroarchCores + system.config['core'] + recalboxFiles.libretroExt # the command to run customCfg = "/recalbox/share/system/configs/retroarch/{}.cfg".format(system.name) if os.path.isfile(customCfg): commandArray = [recalboxFiles.retroarchBin, "-L", retroarchCore, "--config", system.config['configfile'], "--append", customCfg, rom] else: commandArray = [recalboxFiles.retroarchBin, "-L", retroarchCore, "--config", system.config['configfile'], rom] return Command.Command(videomode=system.config['videomode'], array=commandArray)
et hop ...
- créer un fichier par systeme dans
-
Merci beaucoup ! La config marche super, c'est plus facile de customiser une bete automatisée de cette manière ! Les resolutions sont parfaites.
-
Bon, après les discussion qu'on a eues sur IRC pour les histoires de résolution, ES et tout ca ... Sachant que tu utilises une résolution particulière saisie dans
/boot/config.txt
et qu'elle se retrouve en DMT 87, et que tu sais en quelle résolution tu veux ES (CEA 21 HDMI pour l'exemple ici, qui apparait à 2 endroits) voilà les étapes :- éditer
recalbox.conf
et mettreglobal.videomode=default
(si ca ne marche pas, forcer bêtement le DMT 87 HDMI) - éditer
/etc/init.d/S02splash
et ajoutertvservice -e "CEA 21 HDMI"
entre lestart)
et la ligne avecfbv
- éditer
/usr/lib/python2.7/site-packages/configgen/utils/videoMode.py
et remplacer dans la dernière lignetvservice -p
partvservice -e 'CEA 21 HDMI'
La prochaine étape serait de rajouter ca plus joliment en passant par le recalbox.conf pour ce CEA 21 HDMI. Pas difficile, mais ca nécessite un peu plus de code et donc j'aime autant le tester avant
Pour ceux qui lisent à titre de curiosité : @archimage veut pouvoir lancer ses émulateurs en 240p (qui est DMT 87 dans son cas, un mode video custom), mais ES est illisible en 240p. Donc on cherche à booter le pi en 240p (je ne détaillerai pas pourquoi, c'est complexe), changer la résolution en CEA 21 (du 576i je crois) pour ES uniquement, lancer un émulateur en 240p, mais quand même revenir en CEA 21 lorsqu'on quitte l'émulateur. Toutes ces options sont axées retroarch, on n'a pas testé quoique ce soit d'autre (encore ?)
- éditer
-
@subs Merci ça marche ! L'emulateur tourne bien en 240p, et Kodi aussi à défaut de pouvoir le lancer en 480i ou 576i, si quelqu'un au passage sait comment forcer Kodi à accepter le mode entrelacé ce serait cool pour pouvoir laisser le 240p uniquement pour l'emulation. Autrement l'autre variante serait de laisser ES et Retroarch en 240p, en fabricant un thème adapté car le mode entrelacé crée un flicker important qu'il est impossible de réduire sur ES.
-
Suite:
- éditer
/usr/lib/python2.7/site-packages/configgen/utils/videoMode.py
pour qu'il ressemble à :
#!/usr/bin/env python import os import sys import recalboxFiles from settings.unixSettings import UnixSettings # Set a specific video mode def setVideoMode(videomode): os.system(createVideoModeLine(videomode)) def createVideoModeLine(videoMode): return "tvservice -e '{}'".format(videoMode) # Set a specific video mode def isSupported(index, mode="CEA", drive="HDMI"): # todo return True # Switch to prefered mode def setPreffered(): recalSettings = UnixSettings(recalboxFiles.recalboxConf) esVideoMode = recalSettings.load('system.es.videomode') if esVideoMode is None: os.system("tvservice -p") else: os.system("tvservice -e '{}'".format(esVideoMode))
- Editer
/etc/init.d/S31emulationstation
(plutot que le S02splash d'avant) pour qu'il ressemble à :
#!/bin/sh # # log=/recalbox/share/system/logs/recalbox.log systemsetting="python /usr/lib/python2.7/site-packages/configgen/settings/recalboxSettings.pyc" case "$1" in start) enabled="`$systemsetting -command load -key system.es.atstartup`" videoMode="`$systemsetting -command load -key system.es.videomode`" if [ "$enabled" != "0" ];then echo $videoMode | grep -qE "(CEA|DMT) [0-9]{1,2} (HDMI|DVI)" [ $? = "0" ] && tvservice -e "$videoMode" settings_lang="`$systemsetting -command load -key system.language`" recallog "starting emulationstation with lang = $settings_lang" command="HOME=/recalbox/share/system LC_ALL=\"${settings_lang}.UTF-8\" SDL_VIDEO_GL_DRIVER=/usr/lib/libGLESv2.so SDL_VIDEO_EGL_DRIVER=/usr/lib/libGLESv2.so SDL_NOMOUSE=1 /usr/bin/emulationstation" recallog "Starting emulationstation with command : " recallog "$command" eval $command >> $log & fi ;; stop) killall emulationstation ;; restart|reload) "$0" stop "$0" start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $?
- Ajouter
system.es.videomode=
dans recalbox.conf et remplir comme d'hab avec qqc genreCEA 21 HDMI
- éditer
-
@subs Nickel ! Merci c'est intégré et ça marche bien, il ne reste plus que le thème à refaire, je suis en train de travailler dessus, et Kodi à débloquer en 480i
-
Wow.... Le sujet m'intéresse à fond ! Mais je ne comprends rien... Lol ya moyen d'avoir un résumé pour avoir le rgb sur crt ? Parce que je ne suis pas du tout spécialiste mais l'écran n'est vraiment pas top sur crt et la sortie vidéo de raspberry
Merci !
-
@cyril-wagon Oui, pour résumer tu as besoin d'un convertisseur hdmi>vga avec sortie jack, ainsi qu'un cable vga>péritel auquel tu pourras brancher la sortie audio (ou sur un autre ampli si tu préfères). Ensuite il faut créer un mode d'affichage custom pour sortir du 240p pour les jeux. Le 480i sera préférable pour le moment pour Emulationstation. Nous avons trouvé un moyen de lancer Kodi en 240p en attendant de réussir à le démarrer en 480i. Sache que cette opération est expérimentale, la télé ne doit pas recevoir des résolutions qu'elle ne comprend pas au risque de l'endommager sur le long terme. Par contre le rendu est vraiment magnifique, bien mieux que le composite et le hdmi. Sur mon vieux CRT sony ça pète en tout cas. C'est fluide, les couleurs te sautent aux yeux, et le scanline naturel de la télé fait son travail en 240p. Je ferai un tuto quand tous les tests seront finis. Je suis en train de bosser sur un thème custom CRT 4/3 avec Rockaddicted et sur l'intégration des résolutions avec Substring qui a réalisé les parties citées plus haut.
-
des photos composite vs hdmi vs RGB seraient carrément éloquantes
-
@subs je n'arrive pas à prendre des photos de mon CRT en évitant les balayages... enplus je n'ai pas le cable composite je l'ai donné... sur youtube on voit pas mal de video montrant la différence entre composite et rgb sur les jeux
-
Si tu regardes du coté des "convertisseurs" Rpi vers JAMMA, tu peux voir que la résolution retenue (non entrelacée) est de 720x240.
Avoir du 1920x240 est pas forcement utile, sauf si tu n'arrives pas a avoir un résultat satisfaisant en 720x240.Je rappelle que le JAMMA est le standard de connecteur arcade entre les PCB (cartes de jeux d'arcade, CPS, MVS...) et le moniteur/manettes des bornes d’arcades. (l'ampli audio étant lui, sur les cartes).
(Une TV CRT et un moniteur d'arcade étant quasis la même chose) (-> 15Khz).
-
@ironic Oui c'est ce que j'ai lu aussi, ce n'est pas forcément utile, je vais faire des tests comparatifs. En fait je me suis mis par défaut sur 1920 car j'ai constaté que la définition était plus nette. Le 720 était plus pixellisé. Dans les deux cas ce n'est pas un format conventionnel, ça nécessite de réajuster sur les outils de calibrage (retroarch et kodi)
-
La question que je me pose, c'est est-ce qu'on produit vraiment du 15khz en sortant du Pi directement, je me dis que si la télé accepte c'est que c'est bon, mais rien de sûr. Pour le moment je n'ai pas eu de problème.
-
@ironic Je viens de faire le test et je peux confirmer que l'image est plus nette en 1920 qu'en 720 sur SF3. Les traits qui dessinent les personnages sont plus fins et plus nets.
-
@archimage Merci beaucoup les gars ce que je trouvais "décevant" venant du raspberry et l'image sur des crt va être résolu, recalbox et sa communauté c'est un truc de malade lol
Par contre il y a des marques préconisées pour le convertisseur et le câble ? Pour pas que j'achète n'importe quoi et me retrouver avec du bas de gamme ? (si t'avais des références ce serait le top ^^')Pour ma part je n'utilise pas kodi alors je testerai avec ce que tu me conseilles !
Merci énormément je savais que sur un CRT ce serait top (en + j'ai aussi un trinitron pour ma borne alors ça va le faire xD)
-
Tu peux donner la référence/photo exacte de ton câble VGA->RGB, stp.
Si ton image est correct, c'est qu'elle (ta TV CRT) reçoit bien du 15khz
A mon avis, la sortie du convertisseur HDMI->VGA est en 31khz.
Je me demande qui/quoi transforme ce signal pour l'envoyer a ta TV... le câble VGA->SCART ?
(De toute façon, ya pu que ça).Pour transformer le HDMI en VGA, j'utilise ce convertisseur.
6.70€ fdp inclus depuis l'Angleterre)
J'ai ce convertisseur sur mon LCD 17p et je n'ai aucun probleme, même en envoyant des résolutions farfelues que le LCD a du mal a encaisser.
J'en ai donné un a un ami qui l'utilise régulièrement sans aucun soucis également.
Malheureusement, j'en ai un 3eme dont la sortie son ne fonctionne pas, pas de bol mais ca arrive avec ce genre de matos.Pour le 31Khz->15Khz et surtout si on veut mettre un Rpi dans une borne d'arcade via le connecteur JAMMA, le J-PAC est pas mal du tout.
Je lis qu'il peut diviser le signal 31Khz vers du 15Khz (Hummm, attention, je lis que non. il faut du 15Khz pour le J-PAC).
Ici, quelques liens sur la conversion VGA vers RGB, ca peut aider :
http://www.nexusuk.org/projects/vga2scart/
http://thearcademan.net/connecting-a-raspberry-pi-to-an-old-15khz-arcade-monitor/
http://members.optusnet.com.au/eviltim/scart.htmIl y a pas mal de convertisseur puissant comme le gbs-8100 mais il sort du 480i, ça pique aux yeux.
J'ai bien envie d'en bricoler un vite fais, j'ai tout ce qu'il faut, sauf le temps...
Suis assez chaud a l'idée de faire (Pfff encore un truc à mettre sur ta liste, me dit ma femme...) un Rpi->JAMMA.
Bon, j'ai pu ma borne JAMMA, faudrait déjà que je fasse un JAMMA->SCART.
(Pour info, la Péritel a d'autres noms : Euro-SCART, Euroconector, Euro AV. -
@ironic Voici le cable que j'utilise http://retrocables.es/tienda/index.php?id_product=55&controller=product&id_lang=4
Je suis en train de me demander si la fréquence 15khz ne dépend pas de la résolution verticale. Est-ce que 240p = 15khz ? Cela voudrait dire qu'il n'y a pas besoin de convertir le signal et que le pi sait le faire. J'ai quasiment le même adaptateur HDMI. Si le signal n'a pas besoin de conversion cela voudrait dire que ça devrait marcher de brancher le pi à ta borne.
-
Je suis bien curieux aussi, parceque meme sur la description du produit que tu as donné @archimage, il est noté "Il est impératif que la sortie PC coup 15,6kHz , car il peut être utilisé comme WinModelines services publics, Soft15khz, etc ou bien configurer l'émulateur ou de l' application si elle est autorisée." (traduction google).
Ton adaptateur VGA sortirait-il du15khz ? Invraisemblable.
-
Moi ce qui m’intéresse la c'est aussi les options pour le hdmi sur rpi. Y'en a pas mal de non documenté comme hdmi_timing
# uncomment to force a console size. By default it will be display's size minus # overscan. framebuffer_width=640 framebuffer_height=480 # --------------------------------------------- # HDMI timing definitions #https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=24679 # --------------------------------------------- # hdmi_timings= <h_active_pixels> # LCD module horizontal resolution # # <h_sync_polarity> # 0: active low # 1: active high # # <h_front_porch> # <h_sync_pulse> # <h_back_porch> # <v_active_lines> # LCD module vertical resolution # # <v_sync_polarity> # 0: active low # 1: active high # # <v_front_porch> # <v_sync_pulse> # <v_back_porch> # # <v_sync_offset_a> # <v_sync_offset_b> # <pixel_rep> # # <frame_rate> # screen refrech rate (50/60Hz supported only!)# # # <interlaced> # # <pixel_freq> # calculates as: <h_active_pixels> * <v_active_lines> * <frame_rate> # # <aspect_ratio> # HDMI_ASPECT_4_3 = 1 # HDMI_ASPECT_14_9 = 2 # HDMI_ASPECT_16_9 = 3 # HDMI_ASPECT_5_4 = 4 # HDMI_ASPECT_16_10 = 5 # HDMI_ASPECT_15_9 = 6 # HDMI_ASPECT_21_9 = 7 # HDMI_ASPECT_64_27 = 8 # --------------------------------------------- #hdmi_timing for LQ084V1DG43 configuration notes #h_active_pixels = 640 #h_sync_polarity = 1 #h_front_porch = 2 #h_sync_pulse = 5 #h_back_porch = 88 #v_active_lines = 480 #v_sync_polarity = 0 #v_front_porch = 13 #v_sync_pulse = 1 #v_back_porch = 34 #v_sync_offset_a = 0 #v_sync_offset_b = 0 #pixel_rep = 0 #frame_rate = 60 #interlaces = 0 #pixel_freq = 640 * 480 * 60 = 18432000 #aspect_ratio = 1 # --------------------------------------------- hdmi_timings=640 1 2 5 88 480 0 13 1 34 0 0 0 60 0 18432000 1
Si on pouvait se debrouiller pour modifier le signal directement en sortie du rpi, bingo.