RetroArch - Native CRT Support


It should work fine anywhere with an X server running. As far as I know, the composite output doesn’t provide very granular timing controls, but I’d love to be proved wrong. :slight_smile:


in lakka or retropie i don’t think you’re using x server - you’re outputting directly to the framebuffer, right?

As far as I know, the composite output doesn’t provide very granular timing controls, but I’d love to be proved wrong

this thread gives some examples of how to update the HDMI timings via runtime:

not composite, i know, but i believe this technique is chiefly used for the RGB/composite/svideo hat adapters like the retrotink, so i think it’s the kind of thing that the crt switch res stuff could usefully hook into.

i think you might be right about the composite timings. i wonder if that’s something that could be requested at the above github, or whether it’s a hardware limit?

i don’t have this hardware to test so i might be getting the wrong end of the stick, here :slight_smile:


Well I finally spent some time on setting it up this weekend and using windows 10 I ran into some issues.

#1. I couldn’t get arcade OSD to set up the testing so I could get change overscan and center position for any of the modelines.

#2. High dpi/full screen optimization kept messing things up, so that had to be disabled.

#3. Not sure if anyone else has this issue, but with vsync on games get synced to 60.00hz. I had hoped I could get custom refreshes going and turn my crt into a poor man’s vrr screen.

#4. MAME locks up retroarch and makes everything unresponsive. Same roms in fba work fine so I believe it has to do with the setup.

Aside from that it looks great with fba and the consoles. If anyone has any ideas on what I could try, please let me know. Had anyone else gotten arcadeosd to work in windows 10 fully?



It can be done. I have created a custom Rasbian build with full X11 server. There are still many kinks that need working out though. Other than that it switches, looks and runs lovely.

@hunterk Composite is not the way to go though you’ll want to use a HDMI to VGA adapter.

I have so many things on ATM that I had to halt my work on RetroArch temporarily. but hopefully I’ll be able to get back on it soon. There are many things I want ti add and change.


there Just seems to be too many issues with windows 10, I keep suggesting to people that windows 7 seems to be easier to setup.

If you want to get native refresh rates, Linux is the best way to go. It has less overheads and currently runs every core at its native resolution and refresh rate. well at least every core that has the correct information. Which is most to be fair.


Yeah, vcgencmd looks promising.

I use a hdmi-to-vga adapter on my RPi and set hdmi_timing lines in the config.txt, but being able to do that automatically during runtime would be great.


ArcadeOSD is using DirectDraw, which is fully emulated in Windows 10. Calamity apparently is planning to update it to use Direct3D.

I don’t understand why people keep asking in these forums on issues with crt-emudriver and ArcadeOSD, why don’t you ask in the groovymame forums so that Calamity himself actually gets to know of any issues people are experiencing and may do something about it?

On the same note, I also don’t understand the push for windows 7. Groovymame and crt -emudriver work perfectly fine with Windows 10. I think people should just spent some time reading the manual at the geedorah site linked from Calamity’s forum thread on It goes in great detail on how to install this. But clearly this is for computer savvy people, we shouldn’t underestimate that.

Finally, sorry to say this, but that’s how I feel currently, when 8 out of 10 people are using Windows, it’s kind of a bummer to read here every time the suggestion to use Linux if you want custom refresh rates.

@Alphanu I thought Calamity was going to help you out implementing his Windows XP/7/8/10 switchres api into RA? Or did he back out of it?


Its a working process, but not just for RA. We are working on SwitchRes standalone and libraries(.dll and .so). Which will also work with Nvidia. :grinning:

I really don’t mind which OS people wish to use, they just need to figure out how to get it to work properly. In the case of windows setting up CRTEmudriver correctly.

ATM the only way to get native refresh rates through RA is through Linux. This is why when asked about refresh rates, its the go to comment. Also the majority of my work has been based on custom porches and sync pulses to match original console outputs. Unfortunately this again is currently is only available in Linux making the most up to date and accurate version.

This will eventually come to Windows but I do not know how long it will take.


yeah, i think for RPI via the vcgencmd API would be idea, rather than X11, purely because that would mean it could be used in regular retropie (and lakka?), which doesn’t use X11 either. but i’m not sure if

  1. the vcgencmd API i linked above is sufficient for everything you need in CRT switchres
  2. does lakka support vcgencmd calls? I know the libreelec stuff means the OS is ‘locked down’ to an extent. it seems to:


I tried out Linux and the performance was abysmal on my radeon HD 5870.

I noticed also that in both Linux and windows, window full-screen has to be on otherwise retroarch crashes. Does anyone else have that issue?


Not sure if this is helpful but crashing at fullscreen had only two reasons when i had this problem:

  1. If you use two monitors the default one is not set to your CRT (you can set it in video settings)

  2. i forgot to install my resolution modelines


I have different problems after ive changed my setup a bit:

  • I switched to Win10

  • I have a vulcan GPU now (R7 240)

Problem is that i cant use Vulcan…when i set the driver to vulcan and restart RA, nothing happens…

Any solution for this? I bought the vulcan gpu so i can finally use Beetle PSX HW…

Also: My N64 Emulator still runs like shit…Parallel64. Mupen runs with cap speed but i have some weird resolution change issues with it. When i cross the start/finish line at F-Zero64 it changes the resolution/aspect ratio(not sure which it is) for like a second.

I have the weirdest problems, man . -.-


Can you not use Volcan with windows 7? I only ask as there always seems to be issues getting win 10 working properly. It seems to be a fine art.


Hey, i asked Calamity and he said the CRT-Emudriver Version doesnt support it yet. Probably next iteration will have support tho.

I also switched back to Win7 again … i had weird controller issues on Win10.

Is there a way to battle the black borders all around Dolphin or N64 Games btw?

N64 Games even have borders above an below…


That is because:

  • N64 only reports the correct resolution through Parallels with angry lion and cdx4 enabled.

  • Dolphin currently does not report the correct resolution. It only reports correct internal buffer resolution not the output resolution

You can play around with the overscan options in RetroArch or turn on custom aspect ration to manually change it.


Thanks, thats very insightful.

Sadly i cant make Parallel run with more than 35-40 fps even tho i can run Beetle-PSX in Software without any problems and full speed. No idea what im doing wrong there. Its very frustrating and i even upgraded my Motherboard to the max with a Core2Quad 3Ghz CPU, SSD and even a R7 240 with GDDR5 VRAM. There are YT videos with this setup where people even run up to date games in modest resolutions but high settings. :confused:

Maybe someone is kind enough to post their *cfg file with the correct settings for Parallel.


@Alphanu Congrats for your work here, man. It’s Amazing. I like it that much that I changed to Linux for testing the refresh rate thing. Then I came bak to Windows 7 and I started to use powerstrip, a software that can change the graphics adpater’s timing in realtime. If you use certain powerstrip commandlines you can start a game in RA with switchres, and eachtime a resolution is called, powerstrip adjust the timing on the fly to be really close with the core timing (calamity’s groovymame used this in the past). The only problem I found is the bug with the fixed “vertical refresh rate 60.000Hz” in Switchres. With a value on crt_video_refresh rate or without it, or enable/disable “custom refresh rate” on the menu, or even with an “override game/core.cfg”, I got the displayed message of 60.000hz. And I can’t take any of the RA advantages based in -display refresh rate-, like “dynamic audio rate” for correcting the small imperfections in timing that can happend.

Could it be possible for you to fix this issue meanwhile we’re wating your work with calamity? Massive thanks. :wink:


Thanks Alphanu for your incredible work it makes the gaming experience for older systems a lot better imo. I did some tests on different distros/os (w7, ubuntu 14-18, groovyarcade, archlinux, and thought to share some results.


  • i5, ssd, ati hd5450/hd6450, umsa/vga-to-bnc cable, sony pvm 14m2e. note: both graphic cards and ums/cable combinations gave the same test results. systems tested
  • nestopia, bsnes accuracy, mednafen (beetle) psx with latest retroarch (standard repository, not snap) as well as git.


w7 both native and superres work pretty well on all systems. problems encountered: short sound stutter + screen artefacts (weird white shapes) + slight image shifting when switching from progressive to interlaced and vice versa. used the tutorial in this thread which helped a lot.

ubuntu same interlaced > progressive switching problems as in w7. for beetle pxs: when overscan is not disabled in core option, it runs progressive and splitsc screen vertically into two. when disabled interlace works, but it is somehow capped to 30fps. Have not found a way to go around this problem. Also in 1404 switching between modes was very slow, took 5 seconds with a lot of white noise on the screen to switch between modes.

groovyarcade (installed from 2018 livecd) best experience of all. booting is very fast (retroarch is start withing 15 seconds) and most important it runs interlaced at 60fps, this is for example very noticeable when the ps bios runs, and also in-game of course. the switching problem unfortunately, also occurs here though. this distro is stuck to a certain repository date, so it does not use the most recent packages for i.e. xorg. for beetle psx, it does not matter if overscan is disabled or not in the core option for interlaced to work properly.

archlinux same experience as arcadevga which itself is built upon archlinux, but with the difference that I used the newest packages (xorg 1.20, ati-driver etc). Interlaced here however is also stuck on 30fps. If that were not the case, this would be my recommended choice as it does not have all the arcade stuff from arcadevga making it a very clean and dedicated install.

issues summary overall it’s a great experience and close to perfect. to summarize, here are the encountered issues:

  • switching between interlaced and progressive results in small screen artefacts prior during the switch witch itself cause the audio to stutter or pause for a about second. also the screen wiggles a little to get into place. This tends to be a little annoying when playing games like chrono cross and final fantasy viii, where everything in-game is progressive except for the menus (interlaced) which are used quite a lot. super family tennis (snes) and the snes on whole has a lot less problems when switching between interlaced and progressive modes.
  • switching from ntsc to pal or vice versa, the old refresh rate / resolution keeps active somehow. meaning that for example, a pal game is display incorrectly. it runs at 50fps but somehow the game lags. even when I remove all custom modes from xrandr (using --delmode) ans restart retroarch and run the pal game directly it runs incorrectly. Only when pc is rebooted and a pal game is started directly it runs well. the otherway around it causes ntsc games to play at 50 fps.
  • I use a xorg.conf where a modeline of 704x480 is used ensuring the pvm has a good resolution at startup. This is the only custom xrandr mode. At groovyarcade, this is also the only mode shown in contrast to other linux distros which also show all native modes for that monitor. After retroarch closes the last used resolution by retroarch is used by the desktop. I thought I read that it should always fall back to the default one, in my case 704x480. interestingly when running retroarch in debug and looking at the log xrandr throws quite some errors.
  • jumping flash 1 and 2 (ntsc) are displayed faulty in native mode (perhaps also interlaced not tested), it has wide black vertical borders on both sides. have not seen this with other ps games. otherwise runs fine.

questions I have after testing

  • is crtswitchres considered stable at this point for linux, or are there known issues (perhaps some of those I mentioned above)?
  • does it matter which versions of xorg, ati driver, mesa or other packages are used for crtswitchres to work properly?
  • is the way screens are now created and destroyed similar in the way that consoles do it?
  • Alphanu can you give an example of a system setup (graphics card, cables, crt, os etc) you use which works the best for you?

If there’s more testing to be done I’m happy to help :slight_smile:



I recently purchased a barebone with “Intel HD Graphics 620” with hdmi and vga output (dsub15). I installed ubuntu with retroarch and connected my crt monitor to the vga connector. Within the CRT options of retroarch only the line “Use custom refresh rate” appears and I can not activate the options to make the change of resolutions.

If it helps, xrandr returns this (DP-1 is the VGA output DSUB15):

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192 DP-1 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis) 315mm x 230mm 1280x1024 60.02* 1152x864 75.00
1024x768 85.00 75.03 70.07 60.00
1024x768i 86.96
832x624 74.55
800x600 85.06 72.19 75.00 60.32 56.25
640x480 85.01 75.00 72.81 66.67 59.94
720x400 87.85 70.08
HDMI-1 disconnected (normal left inverted right x axis y axis)

Thanks for everything. Regards.


Did you turn on Settings > User Interface > Show Advanced Settings?