Recalbox sur TV CRT en RGB
-
A lot of reading to do to understand how hdmi_timings are working....
-
@ian57 please share anything that would be worth
-
@substring Of course i will do... but I think there is a great difference between the VG666 mode and the HDMI-VGA mode in terms of hmdi_timings...
-
@ian57 Great, finally try the cable, I think it will not be necessary to generate hdmi_timings, the games are not seen in a correct aspect ratio if we generate the hdmi_timing, for example snes is 256x224 but this is 8:7 aspect ratio and need to rescale to 4:3, with the timing and nothing more the image show with much overscan. So it is better to start from a resolution like 1920x240 and expand it horizontally to 4:3 but keeping the 224 pixels vertical.
I've been testing for a long time and this is definitely the best option because in this way we do two jobs in one, we have a universal timing and at the same time we rescale the games to 4:3
The tests that I am currently doing are 480x300 for fronend and recovery (this is a custom timing the most "HD" posible), default for n64 and 1920x240 for global.videomode.
After each machine has its .cfg with the necessary rescaling and center parameters, the next step is to create .cfg for each game as a temporary solution to see all games in the original aspect.
-
Hi.
I tried RGB-Pi40Beta3, nice jobFirst boot, all was so ... ugly
Of course, i use my home made GPIO2SCART so i put :
dpi_output_format=5 in config.txt
and change dtoverlay=rgb-pi by dtoverlay=vga666
(but dtoverlay=rgb-pi works)Let see how i prefer use Rpi/CRT :
For emulationstation :
- I Prefer to use this timings : hdmi_timings 506 1 8 44 52 240 1 6 10 6 0 0 0 60 0 9600000 1
(But your timings ar ok) - Another skin, this one isn't very nice on CRT.
For RetroArch :
-
I use vertically pixel perfect but not horizontally.
So INTERGER SCALE must be DISEABLE !!
and vertical pixels must be set in CUSTOM_VIEWPORT_HEIGHT. -
I use horizontally high resolution as :
hdmi_timings 1920 1 52 208 260 240 1 6 10 6 0 0 0 60 0 38400000 1
(i use this timings for all emulators) -
I Disable THREADED VIDEO (less input/video lag)
-
I Disable HW Bilinear Filtering (no nee with 1920 pixels)
(But needed if i use this timings - hdmi_timings 996 1 24 96 120 240 1 3 10 6 0 0 0 60 0 19200000 1) -
I use ASPECT RATIO INDEX : 22 (Custom)
This is my custom Viewports for Genesis :
aspect_ratio_index = "22"
video_smooth = "false"
video_scale_integer = "false"
video_threaded = "false"
custom_viewport_width = "1920"
custom_viewport_height = "224"
custom_viewport_x = "-14"
custom_viewport_y = "12"I always use 240p, all consoles/computers (usually) use 240p and clip to 239, 224, 192...
(Master System use 192p and have nice black bordesHave a high honrizontal resolution is perfect for all systems. No need to
Do not forget there a lot a game in 50Hz, open a 60Hz screen isn't adapted for scrolling quality
I see Mednafen pcengine isn't pixel perfect, 1x ratio is 288x232. Must use other emulator.
Some of Timings i use/used :
hdmi_timings=996 1 24 96 120 240 1 3 10 6 0 0 0 60 0 19200000 1
hdmi_timings=506 1 8 44 52 240 1 6 10 6 0 0 0 60 0 9600000 1
hdmi_timings=336 1 10 30 34 252 1 15 3 42 0 0 0 50 0 6400000 1 AVEC BORDURES
hdmi_timings 480 1 29 35 66 234 1 4 10 18 0 0 0 60 0 9600000 1
hdmi_timings=990 1 22 94 116 240 1 6 10 6 0 0 0 60 0 19200000 1
hdmi_timings=820 1 42 260 100 240 1 6 10 6 0 0 0 60 0 19200000 1Perfect
hdmi_timings=320 1 12 32 44 240 1 6 10 6 0 0 0 60 0 6400000 1
hdmi_timings=506 1 8 44 52 240 1 6 10 6 0 0 0 60 0 9600000 1
hdmi_timings=996 1 24 96 120 240 1 3 10 6 0 0 0 60 0 19200000 1
hdmi_timings=1920 1 52 208 260 240 1 6 10 6 0 0 0 60 0 38400000 1
hdmi_timings=512 1 16 48 64 288 1 3 5 6 0 0 0 50 0 9600000 1I'm will search for more 50Hz resolution.
- Yes, in this way, RetroArch GUI isn't pixel perfect.
- I Prefer to use this timings : hdmi_timings 506 1 8 44 52 240 1 6 10 6 0 0 0 60 0 9600000 1
-
I think i found why Mednafen PcEngine uses 232 lines.
The PcEngine can render several resolutions.
256x224 to 512x242, most commonly 256x239.
(here, timings in 1920 are welcome).Mednaden render first line at 4 (0 to 239), the 4 first lines are ignored.
Mednaden render last line at 235 (0 to 239), the 4 last lines are ignored.
On a 240p (i think, 239 lines are useable on 240) game, 4 to 235 = 232 lines.I think the first 4 lines and the last 4 lines are unused to show pixels because games never use them.
All that remains to verify.
-
-
i always set video_crop_overscan to false.
This is only a retroarch option.Mednafen PcEngine standalone also "crop" to 232p.
-
@ironic thanks again for your work around hdmi_timings, it saves time to all of us. On my side, I finished a VGA-SCART cable with external power supply on the pin 8 on the SCART, to auto switch the TV on AV mode on start up. It is required for arcade cabinet integration. The wiring schema is below :
-
@ian57 The 5V from the Pi isn't enough ?
-
@substring Nop, it does not work on my TV... As i read somewhere else, sometimes 5v will be ok, but most of the time not. I tested a 6.5V phone power supply successfully.
-
The ultimate VGA-RGBScart cable for arcade cabinet integration
-
Nice cable.
I give you Timings i use.
** 60Hz Timings ** Up to 224p
hdmi_timings 960 1 24 96 120 248 1 3 10 6 0 0 0 60 0 19200000 1
hdmi_timings 1920 1 48 192 240 248 1 3 10 6 0 0 0 60 0 38400000 1** 50Hz Timings ** Up to 256p
hdmi_timings 1920 1 48 192 240 302 1 3 10 6 0 0 0 50 0 38400000 1
hdmi_timings 960 1 24 96 120 302 1 3 10 6 0 0 0 50 0 19200000 1Do not forget you can change CRT parameters (as overscan) if you CRT isn't too old.
If you use Arcade monitor, use potentiometers.I think 960 horizontal pixel is enough but, feel free to try.
(Hum, up to 1920 is better...).If you want to play arcade games in 224p/60Hz, it is better to sort them.
I made a script (.bat) to extrach all 224p games from mame and fba romsets.
85% of best arcade games are 224p, never mind honrizontal resolution.There's others game which can"t be run in 224p. like R-Type (384x256x55Hz)
Let's see what wee can do...later.... -
@ironic but the horizontal resolution needs to adjust to the screen, by default many machines resice the native resolutions to 4:3 format and if you expand horizontal many games to 1920x224 the aspect ratio of the game is not 4:3
In SNES for example I need to put 1778x224 in snes.cfg (using 1920 timing) to view the correct aspect of the game.
The case of CPS3, is inside the list of 224p games but is 384 in the horizontal resolution, this shows incredible ovescan for inportant games like sf2.
I think the solution is a database, based on a one standar resolution and with the resicing parameters for every rom, is a lot of work I know but is the only way.
-
Yes, of course, i also resize horizontally to have 4/3 screen.
If not, the horizontal overscan is big and the game isn't 4/3.
In snes, i have approximately the same resolution.For a games of 256x224, 320x224 or 384x224, it's the same viewport.
If viewport is setup for a 224p 4/3 game, it can accept all 224p games.I have an arcade database of over 8000 games with many games informations. i'm writing severls small batabases of games, by vertical resolution and refresh rate.
I think also, databases are the only way to handle games specs.
(i do it since a year with games lists for severals Fba.libretro versions)We must do for MAME and FBA :
Databases of :- 190p at 50Hz
- 190p at 60Hz
- 200p at 50Hz
- 200p at 55Hz
- 200p at 60Hz
...
240p at 60Hz
...
256p at 55Hz
...
-
@ironic mame can generate .dat files with resolution info. I've been using that for some time, but take care to take an old mame version because the format changed on latter versions. As I've worked pretty much with advancemame which is based on Mame 0.106 i have the XML file.
-
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...