RetroArch - Native CRT Support


Hello everyone, someone has already done a little tutorial for a self-built Linux system (Ubuntu). That would be great if someone could publish it here. I am sure that Linux would be promoted in the arcade environment. Switching from Windows to Linux is not always easy for many.


Point me to where it is, I’ll have a look over it and post it.


I see you are using the new nightly! This is good information, this means that the new options still work with the original code base :heart_eyes:

It could be that the core is reporting the wrong res or hz. this would explain why you end up with a black screen. I have not tested Wii!

What cores are you having issues with?


For now, as far as I tested

  • 3do (maybe the bios is just missing/not found in the system directory)
  • GameBoy : every cores make my crt out of sync
  • master system also
  • saturn works like a charm with Beetle but not with yabause (got w7 loader and stuck)

Thats all :slight_smile:


Gameboy is currently a bit of an issue as it needs borders adding to pad out to a standard res. This was broken along the way.

Master system should work with genesis plus gx if you enable full borders.


Thanks for this information, will try with gx then !

Ho and PSP is also out of sync, just tested


Yeah, I need to include some extra detection for them now. They are originally on LCD screens and not 115khz CRT


Would it make sense to put a minimum height that it clamps to? I know GPUs generally won’t go below 200 lines anyway, but making anything less than 200 return 224/240 would make it easy to apply one of the SGB-1x border shaders to get pixel-perfection with border padding.


thank you, we just need to wait the fix then. Anyway, great work, I couldn’t imagine it would be possible one day to get pixel perfect crt emulation, even my pi3 with rgb-pi is less convenient (hdmi timing hell) and produce a less sharp image.

Hope PS2 will be included too, one day (for now pcsx2 can’t be included to retroarch)

see you soon


Hi @Alphanu

I just tried the latest nightly for Windows x64. Is the “Use custom refresh rate” Switchres option expected to work for Windows?

If I put it to “ON” and set “crt_video_refresh_rate” in the config file to some value (e.g. 60.18), it doesn’t seem to have any effect. Upon startup Switchres still reports “setting video refresh rate to 60.000Hz”. Also in the video menu refresh rate is still at 60.000Hz.

I suppose this needs to be hooked up yet (for Windows)?


This was done before. However, I changed to to try ans get 192 in Linux. It has been changed back now so these cores with lower than 200xXXX should work. @lkl2018 this should be in the next nightly.


Is it possible to implement some kind of automatic on-the-fly integer scale switching based on the current resolution that the emulator is reporting? I want to automatically integer scale the output vertically to the closest number to 1200, and horizontally the closest number to 1600 (for example). This way you could always avoid scaling artifacts on a digital (fixed-pixel) display, although the AR would change occasionally. Is something like this even possible?


crt_video_refresh_rate has not been setup yet. It will work for both windows and Linux alike. I hoping to have it ready for 1.7.5 release.


Hey @Nesguy if you talking about using a LCD then this would not be part of CRT SwitchRes. However, it defiantly could be added as a video option.


Sorry, that wasn’t a great explanation I gave; most of this is over my head. This stuff is awesome! Yes, I was referring to using a fixed-pixel display like an LCD or Plasma, and having the video scale automatically switch to a user-set integer scale on the fly, using resolution information provided by the emulator. For example: user could set “maintain integer scale” at the largest number at or below 5x5 scale, 6x5 scale, 4x4 etc. So when playing a PSX game (for example) and the resolution switches mid-game, integer scaling is maintained. This would cause the aspect ratio to change but would eliminate scaling artifacts. I’m guessing this would also cause the emulator to pause for a fraction of a second while the resolution switch happens, if running in full screen mode. Just to be clear, are you saying that this is something that’s possible? I’ve been wanting an option like this for years :smiley: If this is something that’s possible I may consider starting a new bounty. Thanks for the reply!


Thanks, looking forward to it.

On a sidenote, this may have been discussed already, is there a possibility the RGUI font can be used on the “display statistics” overlay when is superres (2560) mode?

I tried installing some ultrawide fonts but even with those the letters are very much compressed (the overlay statistics are close to unreadable when in CRT superres mode).


Hello all, is this native CRT support also working with Intel HD graphics? Ive been reading threads about it as much as i could but from what ive seen so far its either CRT Emudriver for ATI or Soft15Khz for other dedicated GPUs? Hope anyone can clear things up a bit. This is way over my head. :stuck_out_tongue:


Hello, thank you for your work! Ive been asking myself what the easiest method is to realize the native CRT support? Ive had my eyes on a Mini-ITX pc with Intel HD graphics, but ive read about limitations regarding the resolutions? What would you suggest hardware-wise + software-wise for a smooth experience without many problems?

Thanks again.


That’s a very good idea, most of the overlay text is quite useless in game even at native res.

Maybe it could be scaled along with the video mode?


Intel and Nvidia graphics cards have too many limitations when it comes to low resolutions and dot clocks. I’ve been testing with am ATI Radeon HD5450 and it’s a great card for the money, unless you want any kind of 3D acceleration outside of retroarch. Any HD5xxx and HD4xxx series card should do, but your mileage may vary.

Some intel gpus play quite well at least with super resolutions, others not so much. A list would be quite useful to be honest.

As far as OS, hands down it’s linux. The best build I’ve found to work without issue is groovyarcade, though Ubuntu should do quite well too. It’d be amazing if Lakka could be recommended but it lacks x11 which CRT switching relies on for linux.

Windows will work but currently the linux code is much more current, it really needs to be worked on and ideally before 1.7.5 drops.