RetroArch - Native CRT Support


I haven’t checked out the latest Linux build yet, but can it work with 120hz modes (VGA CRT)?


It’s 15 khz only at the moment. I’d throw in on a bounty to get 31 khz working, though.


@ilitirit @hunterk

If some one wants to create an issue and maybe a bounty :heart_eyes: I will start working on modifying my source!


Here we go:

I got us started with $15 :slight_smile:


I’ll start porting my 15kz code base over to 31khz. I’ll need some testers to help me out here.


Linux bug! Depending on your distro resolutions below 320x200 will not switch. For example snes 256x244 or genesis pal 284x288. I have located the issue and I’ll get this fixed ASAP.

@hunterk how’s the code conversion going for Linux?


I don’t think anyone has even started on it yet. I guess we’ll just stick with the xrandr method unless/until someone decides to tackle it :stuck_out_tongue:


@Alphanu: I’m not an expert, but I managed to get 244p resolutions and below working on Linux with some custom constants:

h_active	= 0.8
h_sync = 0.0800000000000001
h_front = 0.0199999999999999
v_active = 0.848484848484849
v_sync = 0.0113636363636364
v_front = 0.0416666666666666

I can’t remember where/how I came by those values, it’s been a long time.

The caveat is, they won’t work for 200p (or below) at 120Hz, but MS-DOS ran at 70Hz(?) anyway. They will work for 200p at 140Hz.

I remember I used to push them to 200p (minimum) @120Hz with some other values/tweaking, but I freaked out one time I got some crazy shit on my screen and I never tried that again :cold_sweat:.

I hope that it helped.


@RiskyJumps thanks for the input. With windows you can get 200p at 60hz.

The limitation here is with Linux, youinv the merged set size limits you to the minimum size set in X11 by the driver. Normally 320x200, this means that you cannot set below 320 on the horizontal. Example 256x200, 256x224. This is only a Linux issue but tgere is a way around it.

I already have it working here but I’ll need to make it available for different outputs. Also I need to include HDMI, this will be for people using HDMI to component for American TVs as I know they don’t have RGB SCART.

I’m actually really excited about 31khz, having height resolutions with switching will look OK but with the addition of a scanline filter I think it will look really good.

I do need to source a 31khz monitor however. Does anyone know where I can get a cheap one?


I take it you’re not in the U.S., but I’ve had good luck just watching craigslist, so if there’s anything similar where you live, that’s where I would start. People usually give them away for free. Any old crappy CRT computer monitor should do it.


I found this will browsing the web. Maybe this will be of some help?


Hey @Rion

Thanks man. This is for patching initial boot for Linux. This is because initial boot runs in KMS mode. It’s used so you can see any boot information or images without having 3 or more tiny horizontal images. Once Linux has booted it will the switch over to it’s display server. X11 or Weyland.

This is a good idea to use though.

I have already sorted it. However, I need to incorporate it into the output device loop.


Lakka/RetroArch OS uses KMS mode for everything if I understand correctly.

Edit: I am not suggesting that KMS mode is within the scope of any of these projects or bounties.


@markwkidd Yeah you are correct there. If this patch works for standard Linux it could work for Lakka. This will help open the doors for RPi too. Currently I’m looking into a full implementation of X on RPi.

Would the Lakka devs be interested in add X support?


I think Lakka is trying to move away from X as a long-term dependency. That doesn’t mean a patch from you wouldn’t be welcome in the short term.


I have been testing superwide in Linux. Using the gl video driver, content will usually freeze on startup. If not at first, then it freezes after picking a second game or shortly after entering the menu. I am able to force close retroarch, but then my desktop becomes unresponsive.

Using the SDL2 video driver, everything is stable and content runs reliably. The problem with the SDL2 video driver is that shaders seem to be unsupported, and I need to use the image-adjustment shader for this particular TV!

Is anyone experiencing similar issues or can offer some insight?



I picked up 4 crt monitors for free on eBay recently. If you happen to live near west London you’re very welcome to have one of them! Ive also seen them on Gumtree, but again only if you’re in the UK.

A small tip if you’re looking for crts from online ‘markets’; try searching for ‘old style tv’ or ‘old style computer monitor’, as opposed to ‘crt tv/monitor’. In my experience sellers who list as ‘old style’ either don’t appreciate the value of these devices(and therefore sell cheaply) or don’t care about the price. Too often I see ‘crt tv/monitor’ ads where the seller has seen an opportunity to sell to a niche market at grossly inflated prices.

My 10c worth :grin:



First of all, congratulations for your great work!

I’m having issues when running PAL games on Beetle Saturn. The image is being squashed on the vertical. Actually it doesn’t switch to super resolution. This does not happens with NTSC games.

I have installed all the PAL modelines with static table and set last PAL line to 279 as suggested here: 15 khz CRT documentation wiki

Worth mentioning that the mednafen fork made by the user silmalik (available at,155264.0.html) runs fine these PAL games with super resolution.

Thank you!


Hi @purity1516 pal games are all working fine. It’s All about the setup on the resolutions and in core options.

For psx I think the start scan line needs to be on 16 and make sure overscan is turned off.

@Retrorepair @Abwezi can you guys sheed light on these setting.


Since I don’t have a TV that supports 50hz I don’t really have much to offer sorry. The few PAL games I play such as the PAL Gex games for the voice acting and 40 Winks N64 proto that is only in PAL. I personally for those few games have just been making an override to turn switchres off and set my own custom vertical viewport so I can just crop the game into a regular ntsc resolution and force it to 60hz. For example I think I run Gex 3d with a 252 px high viewport and that lets me play cropped at 240p with no artifacting. Unfortunately interlaced and progressive switching wouldn’t work then but the few PAL games I play don’t make much use of interlacing