Make a 31khz monitor look as close as possible like a consumer tv

Lately i’ve been experimenting with shaders in retroarch to make my monitor look similar to my pal crt tv. Ive them set up side by side.

I am using crtswitchres 1920x240 and [email protected] to play mainly snes games.

The problem is, i really don’t like the rough look of 31khz monitors at 240, scanlines are too visible and they are distracting, the image is really sharp too.

This is the best i could get out of it, adding little more color saturation, tv out shader for a little blur , and a crt shader, it helps to reduce the distracting look of the stock scanlines

Here is the before and after comparison ( i want to point that in the photos above, it looks better than in real life, because with eyes, scanlines are more visible and they are distracting)

It would be nice if someone share a config that helps achieve the results i am seeking

I don’t think it’s really possible for a 31 khz monitor running at ~240p to look like a consumer TV. I think your best bet for that would be to run it at 1024x768 or 1600x1200 or whatever and apply the same sort of CRT shaders that are used on typical flat-panel displays, only with the mask effects disabled.


Which crt shader do you think works best with a crt monitor ?

Hmm, that’s a tough call. I would suggest trying something like crtglow_gauss or crt-guest-dr-venom (with the mask effects disabled) first.

1 Like

Thank you very much hunterk. I cant find find any option called shadow mask in shader parameters. But there are few options with the word mask on them, lottes maskdark ect…

Should i disable all those ?

Edit: i have another unrelated question if you could please answer me, i noticed that pal roms are locked to 50 fps, and scrolling doesnt feel smooth like on real pal console, but ntsc roms work great. Do you know of a fix to this ?

Different shaders call the mask effects different things. For crt-guest-dr-venom, you’ll want to set ‘mask style’ parameter to -1.

For the PAL thing, that’s presumably because your display is running at 60 Hz/FPS. If you change it to a 50 Hz mode, the PAL scrolling should be smooth. The other option is to increase the max timing skew to be large enough for RetroArch to speed the PAL games up to 60 Hz/FPS.

1 Like

@hunterk man i can’t thank you enough , i’ve been playing, and now it even looks better than my tv (text is easier to read on the pc monitor) and without a scanlines overdose covering the whole screen.

1 Like

Can we get a photo for comparison with the previous shots? :smiley:

1 Like

I am sorry, i already went to bed now and its already almost 5 am lol. I promise tomorrow i will do a comparison of some games with different graphic styles Pal crt tv vs 31khz monitor+crt shaders

1 Like

@hunterk hello brother, here as promised and sorry for the delay, i had a really rough day, a relative has passed away. But as i promised, i had to do it.

Anyway, here is the comparison gallery. I didn’t compare many games because i had a hard time trying to get my phone to focus on the tv , i did few tricks to get the best results possible.

The order is crt tv first then the pc monitor for each example.

And i take back my word from yesterday haha, lack of sleep could have tricked me to believe that i achieved the results i was seeking lol. i think the tv is way way way much better looking. Funny thing is, i have another crt, its a 2005 sony trintron crt with flat glass, and this cheap local brand crt that im using looks much better than the sony, i disliked the sony because it has a very similar look to the pc monitor, very rough and thick scanlines which results in a very sharp image, but its still not as bad as the pc monitor when its running at [email protected] I might do few photos if anyone is interested.

And here are some notes for anyone who would like to read. But first, im no expert or anything like that, i will just describe what i saw with my own eyes to give you a better idea

Most of the tv upclose photos show pale and less vivid colors compared to how you would see it in real life, infact the tv has better colors than my monitor. Also the maure effect is exaggarated in one of the smw photos and in reality is barely if not visible at all.

Some fullscreen shots, specially at the end of the album, those of street fighter 2 and dkc2 show almost a accurate example of how you would see it with your eyes :slight_smile:

The crt tv has finer line details, and lines look less jaggy compared to the pc monitor. Look at smw

Killer instinct and smb3 show a good example Of how text is more clear on the pc monitor, but its more jaggy .

Yeesh, we’d have let it slide for those circumstances!

Anyway, whenever you’re up for it, I have another preset you can try, based on your comparisons here (put this preset into your ‘presets’ directory):

shaders = 2

shader0 = ../pal/shaders/pal-r57shell.slang

shader1 = ../reshade/shaders/blendoverlay/blendoverlay.slang

textures = "overlay"
# change this path to point to your overlay image
overlay = ../reshade/shaders/blendoverlay/grayscale_slotmask.png

parameters = "LUTWidth;LUTHeight"
# set these to the width/height of your overlay image
LUTWidth = 6.0
LUTHeight = 4.0

If you’re using GLSL shaders instead, just replace the *.slang extensions with *.glsl.


I had to mix those with dr venom shader preset to get a decent result. Its close but with one problem you can see it here.

And with eyes its worse. I know the real tv has that kind of loook, but not exaggerated like that, i could see that pattern only if i get my eyes really close like 5cm, and its still barely visible. And it feels like its behind the image and not covering it like in the shader

You can try playing with the blendoverlay parameters, including ‘Overlay Mix’ to make the effect less prominent and LUT Width/Height to make the pattern smaller.

It does look like it’s interacting with the actual mask, though, which is what I was hoping to avoid when I suggested disabling the mask effects before.

Another option to try is crt/gtu-v50 with the parameters for ‘composite connection’ and ‘no scanlines’ both set to 1.0.


I got it very close now. I used both gtu v50 and pal without the composite option. Just few issues

I think this could be a result of upscaling. The image looks as if it were drawn with a thicker pencil on the monitor and it looks worse imo. And even though it looks similar, its slightly softer.

Image 4 is of the tv.

That’s a result of the transformations happening in gamma curve space instead of linear space. Since you’re not using the composite you can try replacing GTU with the multipass tvout-tweaks (only in GLSL format currently, but I’ll try to whip a slang version up soon), just with the last pass’ scaling set to “don’t care” instead of 1x.


Never mind bro, and again, thanks for the help. I give up. It seems really impossible to replicate the real thing and satisfy my ocd. I will take a break till hopefully i get my hands on the game cartridges i want to play.

No worries, and yeah, it’s almost impossible to match those things against each other. The 31 khz and 15 khz looks are really each their own things, and that’s why I have so many CRTs -_-


Some 31 khz monitors, like the one I recently acquired, are so sharp that without any shaders you really can’t tell much of a difference vs an LCD using nearest neighbor scaling, and it can look pretty harsh.

“TVout-tweaks-multipass+interlacing” is pretty great for softening up the image on a 31 khz CRT running at [email protected] and making the scanlines look more like those on a 15 khz CRT; just set the signal resolution and interlacing scanline brightness to taste.


I usually just turned down the sharpness setting on my Samsung monitor. I thought that was a pleasant look for e.g. arcade games. Low color stuff with lots of dithering and such didn’t look very well. I can use a TV with RGB connection for those, but there are some things that even there can potentially be improved with shaders.

1 Like

Some CRT monitors lack a sharpness adjustment, but Tvout-tweaks replicates the sharpness adjustment almost perfectly.