Recalbox sur TV CRT en RGB
-
Hi,
I follow this thread for some time trying to keep up with all the work/solutions when i will have time to do this.
There is one thing which is not clear for me : who is setting the correct resolution? Is it done by script before launching the emu (libretro core,...) or are you setting the timings and then when the emu ask for a particular resolution, the system changes accordingly (like emu, i.e. mame with autoswitch res, on a PC with soft15khz for example)?
If this is the first solution, how is the resolution modification during game execution is taken into account?
Of course, imho, the second solution seems to be the best one, but perhaps there is some limitation from the emu themselves.
Anyway, keep up the good work, it will be amazing to have a simple 15khz RGB output on the PI!
-
@Substring
Is it this type of database ?
8000 arcade games@onaryc
RGP-Pi (Recalbox 4.0)
For this time, there is one resolution by libreto core.
All resolutions can be found in config.txt file.
It's ready to play. emulator resolution is launched before emulator and emulationstation resolution is restored before back to emulationstation .I think changing resolution on the fly in game is impossible.
-
@ironic it's just from a mame .dat file find a mame exe, check its command line switches and you will see
-
@Substring
Ok, the MAME XMLLet see how i handle multiple resolutions by emulator.
Sorry, i don't use Configgen.Emulator :
- MAME
Few games :
- R-Type (rtype.zip) : 384x256x55Hz
- After Burner II (aburner2.zip) : 320x224x60Hz
- Golden Axe (goldnaxe.zip) : 320x224x60Hz
- Caveman Ninja (cninja.zip) : 320x240x60Hz
I use 4 resolutions (more come soon) :
1920 1 48 192 240 248 1 3 10 6 0 0 0 60 0 38400000 1 For fullscreen 224p at 60Hz games.
1888 1 48 184 232 278 1 3 10 6 0 0 0 55 0 38400000 1 For fullscreen 256p at 55Hz games.
960 1 24 96 120 248 1 3 10 6 0 0 0 60 0 19200000 1 For all others games which are not in databases (just for try games).
480 1 14 45 56 300 1 10 5 5 0 0 0 60 0 9600000 1 For EmulationStation.In datadases, i have referenced 2 games :
[aburner2.zip] to use 224p x 60Hz
[rtype.zip] to use 256p x 55HzFrom emulationstation/MAME, i have :
After Burner II
Caveman Ninja
Golden Axe
R-TypeIf i choose After Burner, the game is launching in fullscreen 224p 60Hz with "retroarchcustom.cfg" AND 224-60.cfg (for adapted viewport of all 240p games)
If i choose R-Type, the game is launching in fullscreen 256p 55Hz with "retroarchcustom.cfg" AND 256-55.cfg (for adapted viewport of all 256p games)
If i choose Golden Axe, the game is launching in a 960x240x60Hs screen with "retroarchcustom.cfg" AND standart.cfg (small viewport to try games) because is not in database
If i choose Caveman Ninja, the game is launching in a 960x240x60Hs screen with "retroarchcustom.cfg" AND standart.cfg (small viewport to try games) because is not in databaseI think is the perfect way to handle multiple resolutions per core.
It works greatThe databases is a file named "resolution.cfg" in recalbox/share/roms/mame/ folder
In this file there's :declare -A mame_games
#320x224x60Hz
mame_games[aburner2.zip]="224-60"
mame_games[goldnaxe.zip]="224-60"
mame_games[shinobi.zip]="224-60
...
#384x256x55Hz
mame_games[rtype.zip]="256-55"
...It's very easy to add game to resolution.
CODE :
. /recalbox/share/roms/mame/resolutions.cfg if [[ "$emulator" == "mame" ]]; then if [[ -n ${mame_games[$filename]} ]]; then if [[ ${mame_games[$filename]} == "224-60" ]]; then vcgencmd hdmi_timings 1920 1 48 192 240 248 1 3 10 6 0 0 0 60 0 38400000 1 tvservice -e "DMT 87" fbset -depth 8 && fbset -depth 16 retroarch -L /usr/lib/libretro/mame078_libretro.so --config /recalbox/share/system/configs/retroarch/retroarchcustom.cfg --appendconfig /recalbox/share/system/configs/retroarch/resolutions/${mame_games[$filename]}.cfg $1 elif [[ ${mame_games[$filename]} == "256-55" ]]; then vcgencmd hdmi_timings 1888 1 48 184 232 278 1 3 10 6 0 0 0 55 0 38400000 1 tvservice -e "DMT 87" fbset -depth 8 && fbset -depth 16 retroarch -L /usr/lib/libretro/mame078_libretro.so --config /recalbox/share/system/configs/retroarch/retroarchcustom.cfg --appendconfig /recalbox/share/system/configs/retroarch/resolutions/${mame_games[$filename]}.cfg $1 fi else vcgencmd hdmi_timings 960 1 24 96 120 248 1 3 10 6 0 0 0 60 0 19200000 1 tvservice -e "DMT 87" fbset -depth 8 && fbset -depth 16 retroarch -L /usr/lib/libretro/mame078_libretro.so --config /recalbox/share/system/configs/retroarch/retroarchcustom.cfg --appendconfig /recalbox/share/system/configs/retroarch/resolutions/standart.cfg $1 fi vcgencmd hdmi_timings 480 1 14 45 56 300 1 10 5 5 0 0 0 60 0 9600000 1 tvservice -e "DMT 87" fbset -depth 8 && fbset -depth 16 fi
Of course, it can (will) be optimised...
-
@ironic As 4.1 is coming closer and closer (have you seen the blog is back ?) this will be a little different as you can :
- add per system .cfg (well, you can already do it, that's something we made quite early in this topic)
- add per rom .cfg (not much different in fact)
- have configgen use hdmi_cvt or hdmi_timings resolutions. What is truly missing is to handle a per game resolution. Haven't found yet an elegant way to do it, except having a massive file saying which resolution for which game (that needs to be written. I wanted to have, for each arcade rom : resolution + screen rotation angle)
-
A per game resolution ins'nt needed, need resolutions/frequency for games...
Arcade games must be separate :- Mame or FBA.
- Honrizontal or vertical.
- Resolutions.
- Frequency
I have 350 MAME roms and 340 FBA.
I need more 30 resolutions/frames rate files.To handle all Mame/Fba games, there is need more files.
-
@ironic How to change the CRT overscan? A menu in the tv OSD? or need to tune potentiometers inside the TV?
-
If your CRT isn't too old, there's pehaps a hidden menu. On my 33cm WALTHAM (11AK57 chassis), i must :
- Open the menu : MENU KEY
- Hit : 4, 7, 2, 5
And the hidden config menu appear.
I can't tell you if your CRT have this menu and how open it.
On most CRT, you must : Open menu and enter a code (as me 4725).
Be carefoul, it's hard to understand all parameters.You must looking for on line for code and/or try all codes you can find.
--
I sorted all my MAME games by resolutions and by frequency.
You can see, i must use a lot (more 40) of resolution/frequancy.
And remember, here there no vertical games.
1st ligne, 224p is vertical resolution (no need honrizontal resolution).
And 60 is frequency (60Hz).We can bring together some frequency.
60.096154 is near 60.
But there is some specific resolutions as : 57.444853Hz.Is it near 55Hz or 60Hz ?
I think, games up to 240p must be 60Hz and over 240p, 55Hz.
And this : 27.407585Hz and 76.293945Hz ?And FBA ??!!
Work begin...
-
@ironic thanks for the reply... i don't have the remote control of the TV... so no luck tu test if there is a hidden menu Will try that on another one. Thanks
-
@ironic that's why there is AdvanceMame, it's supposed to handle arcade without a hitch.
The real deal for now would rather be consoles
-
@ironic @substring http://www.advancemame.it/doc-install : advmame uses programmable modelines for DPI and HDMI. All seems to be automatic now
"Whatever hdmi_mode you select, the Advance programs will use mode 87 group 2, restoring your selected original mode when finished."
-
@ian57 because DMT 87 is the only way to specify hdmi_timngs, you have no choice but :
- set hdmi_timings
- switch to DMT 87
-
The problem is that we still do not know how exactly the custom hdmi_timings of AdvMAME works to carry it to the other emulators, the Ironic method can be used with all the emulators already.
Does Recalbox plan to introduce these changes officially? Or is it going to have to be another mod?
-
@aTg as I said, advmame can do the job for now, and that's why i added it. For the retroarch part, this will come later, but for now, it looks like anything linked to arcade is not yet ready, so i can't implement anything yet. The subject is complicated and has not yet reached maturity, i will spend some time on it once the tries and conclusions seem definitive.
If I'm not mistaken, so far we're just trying to reach a DAR of 4:3, but not a PAR of 1:1 ... @ironic do you agree with that ?
For emulator, advancemess will also be included, so once again, the same story goes : rely on the emulator. But I didn't even have a single second to test advmess yet. But for now, i have definitely no time to spend on that. Holidays are coming, 4.1 is on the go as said on the blog.
-
How advmame timings works ?
Is it possible to setup all timings for all resolution/frame rate ?
With manually timings, we can move up, down, left, right, the viewport screen and adjust overscan. It's perfect for people who can't adjust viewport.What about 38.4Mhz pixel clocks in advmame ? i use it and advmame doesn't refer. But i think it works.
DAR, PAR, SAR, 1:1, 4/3, 16/9...
I think (sorry, it's strange), using a virtually (1920 pixels, can be more) infinite honrizontal pixels line and a fixed vertical resolution (as game scanlines) isn't DAR or something else.We must reach fullscreen with very small overscan and 4/3 ratio.
Many years ago, when i was young, my first arcade experience was black&white arcade screen cabinet with no sound. Since, i played a lot of arcade games.
I was ungry when a new arcade cabinet had very poor screen setup.
Big overscan, too bright/less bright, blurry, very bad colors... and a f*****g aspect ratio.And i had a dream...
My work will be arcade cabinet technician....And .. when dreams come true...
I was arcade cabinet technician for 3 years and it was very difficult to respect game aspect ratio with new JAMMA PCB. Where are parameters ? not with JAMMA PCB !!.
All this to say, what is correct aspect ratio ?
How do we must setup the viewport ?In my mind, it's as i want.
I think, it's when all seems "real" (no honrizontal/vertical aberation) with small overscan. -
Advmame handles everything but i think you must setup your screen in advcfg so that it knows how to handle your screen and generate timings accordingly.
The question for the overall aspect ratio we wish is what will determine everything. Should we focus on getting 4:3 fuscreen for any game ? Which may probably mean not square pixels ? Or do we want the exact original resolution with square pixels ? But in such case, eventually have black borders either vertically either horizontally ...
-
Et bah voila, dimanche soir, et j'ai passé le weekend à lire ce post et à faire fonctionner mon Rpi sur une Sony PVM 2950QM
Je vous passe les galères, et celles à venir pour le calage de chaque émulateur, mais le résultat est juste dingue :
https://www.youtube.com/watch?v=6psLAeodsZAMe reste à calibrer l'écran, définir les bonnes résolutions pour les émulateurs manquants.
Résultat, le plaisir de jouer est juste décuplé, ça en valait la chandelle.
Merci encore a tout le monde, notamment @Substring, @ironic , @archimage et tous ceux que j'ai oublié
-
C'est claire que c'est le jour et la nuit avec les LCD.
Faut pas oublier de bien configurer ça TV CRT coté lumiere/contraste/couleurs...
J'ai eu une surprise en passant de mon 36cm a un 63cm, c’était crade. Quelques réglages et hop.
La je viens de faire mes essais avec l’émulation Amiga, pas évident de taper dans du pixel perfect avec cette émulateur. Le résultat est ... oh la la.....
Reste encore et toujours a trouver les HDMI Timings parfait.J’espère que la contrainte du pixel clock pourra être levée, ça serait dément.
Bon, le seul probleme pas trop abordé sur ce post est que pour les jeux d'Arcade verticaux il faut tourner ça TV de 90°.
On peut éventuellement faire tourner certain jeux verticaux, horizontalement si ils n’ont pas une grosse résolution. Dans ce cas, on ne respect pas le sens du scanline et la surface de jeu est réduite. On peut quand même faire tourner 100% des jeux verticaux en horizontal mais on va perdre du pixel... -
c'est sur.
Concernant les réglages, j'ai commandé une télécommande pour ma tv, les menus poussés ne sont accessible qu'avec télécommande.Puisque tu es là, j'en profite pour quelques questions :
-
je ne comprends pas ton histoire de timings que je vois partout sur le topic.
Ça remplace le mode hdmi ou le cvt c'est ça ? quel est l'avantage ? -
j'ai réglé ES en CEA 8, et les émulateurs en hdmi_cvt=1920 240 60 1 1 0 0.
au final mon but est plus ou moins de respecter si ce n'est le pixel perfect, mais au minimum le ratio de la console en question.
En utilisant le integer scale de retroarch, et en calculant le ratio des consoles, j'ai pu définir un ratio correct soit en dur soit en laissant le interger scale (mon écran est plus ou moins bien centré, c'est déjà ça).
Mon problème, pour afficher du 240 pixel vertical, l'écran me mange un bon bout en haut et bas, que je ne peux pas rattraper avec l'overscan de l'écran (déja au max).
Si je modifie la valeur 240 pour l'émulateur en question (nes par exemple) j'ai du tearing vertical.
Comment gère tu ce problème ? peut être que le 240 s'affiche en entier chez toi, auquel cas tu n'a jamais eu à gérer ça -
Pour la N64, j'ai essayé en spécifiant le mode DMT 87, en CEA mode 8, rien ne passe, alors que ça fonctionne en CEA mode 6 (480i). Des pistes par hasard?
D'autre part en ayant fait la modif du configgen de début de topic posté par subs, je n'ai plus mes configurations manettes pour la 64, il faut que je les recopie à la main ? -
pour PiFBA, ce n'est pas geré par retroarch, donc j'imagine que c'est le même problème que pour la N64?
-
dernière interrogation et pas des moindres, concernant MAME.
Si il y avait eu possibilité de créer un fichier par rom, je l'aurai fait pour celles que j'utilise, mais de ce que j'ai lu ce n'est pas encore possible.
Comment fait tu pour que chaque résolution s'adapte plus ou moins toute seule, même sans respecter le ratio 1:1 ? En spécifiant un résolution dans une conf retroarch, il garde la même pour tous les jeux. Sans config rétroarch, rien ne boot.
Je suis un peu paumé pour l'arcade
Bref beaucoup d’interrogation, même si j'en ai éliminé pas mal ce weekend
PS : je sais qu'en 4.1 beaucoup de nos problème seront résolu, comme la config par fichier. mais bon, date non déterminée
Merci !
-
-
Les Timings ne sont possible qu'en passant par les GPIO. Si tu utilises un convertisseur HDMI vers VGA et un cable VGA vers Péritel, tu n'as pas le choix, tu dois utiliser les CVT.
Donc, tu boot dans une résolution (tu as choisis 1920 240 60 1 1 0 0 donc 1920x240x60Hz). A partir de la, tu ne peux plus changer, pour modifier la résolution, tu dois modifier le config.txt et redémarrer.
En passant par les GPIO, tu peux utiliser les Timings et donc changer de resolution a la volée. Il faut pour cela definir la resolution a lancer (Les Timings de la resolution).
Chez moi (actuellement j'utilise RGB-Pi d'@aTg), je boot en 480x300x60Hz pour emulationstation et quand je lance un jeux (exemple Megadrive), la resolution passe a 1920x224 (vaux mieux utiliser du 240p pour eviter au max l'overscan mais configurer RetroArch en 224p).
Des que je quitte le jeu, je reviens sous Emulationstation en 480x300.
Quand je lance l'Amiga, je passe en 1920x256x50Hz (en 50Hz !!)
Quand je lance R-type, je passe en 1920x256x55Hz (scrolling/vitesse parfaite).
En faite, la fréquence exacte de R-type est 55.017606Hz mais j'ai arrondi.La recherche du pixel perfect c'est bien, la recherche de la synchro parfaite en plus, c'est mieux.
Avec les Timings, ont peut minimiser l'overscan du 240p mais il faut quand même toucher aux réglages de la TV. On peut ouvrir un écran de 1920x252x60Hz voir plus.
Je n’émule pas la N64 trop récent pour moi
Je n'utilise pas PiFBA, aucun interet.Comment je fais pour utiliser une résolution adaptée par jeu ? (on parle de l'arcade car en console, a part horizontalement, c'est très souvent du 240p avec un clipping a 224p).
J'ai modifié Recalbox (J'utilise RGB-Pi mais c'est exactement la même chose pour Recalbox).
J'ai créé 1 fichier resolutions.cfg dans le dossier de roms de MAME (idem FBA) dans lequel j'ai entré les noms de mes jeux associés à la configuration à lancer (résolutions + fichiers config de retroarch).
C'est du boulot, j'ai du chercher et faire une liste de toutes les résolutions/fréquences des jeux mais je suis pas en fullset (aucun intérêt également) j'ai environ 350 jeux MAME et 370 FBA.
Pour le moment, je ne gère que 5 à 6 résolutions. 192p, 216p, 224p, 240p, 256p avec des fréquences différentes pour le 256p.
J'ai fais un peu le bourrin j'ai regroupé pas mal de résolutions, je verrais en jouant si c'est parfait ou pas.
Genre, pour un jeu en 60.10699Hz, je le lance en 60Hz.Voila, t'as pas mal d'info et tu vois les limitations de passer par un convertisseur HDMI vers VGA. Par contre, t'as un meilleur son mais je doute que la qualité du son soit plus importante que de changer de résolution/fréquence a la volée.