Please show off what crt shaders can do!


Thank you!

Does the forced 240 scale affects differently the scanlines for the PAL games (I’m thinking about PSX when writing this)?


I’m not that technical so don’t know how the 240 scale_y affects PAL PSX games (I am in the UK though!), most roms are marked USA so i don’t know if this matters with roms or this PAL/NTSC region thing just affected real hardware?!

All I know is that when added the the scale_y0 = “240” to the shader chain (suggested by the great @hunterk in another topic!) it fixed the inconsistent scanlines on PSX, Saturn and N64, for example the PSX BIOS screen looked a mess. Now I can use the same preset for these 32 bit/64 bit systems and keep a nice uniformed CRT look.


@shenglong - yeah those look great indeed. MvC2 needs some scanlines though, and it’s also a bit soft I think. Try lowering the AA offset, if you are using something similar to my preset (which seems to be the case).

Edit: I just noticed it’s the 4xsoft shader you are using. Which is really good, but it works best with higher internal resolutions imo.

Those output 240p in most cases anyway, no need to force anything. That would be useful for the Dreamcast though, but it doesn’t seem like it’s working properly in your chain, which is why you don’t get scanlines on reicast. For reference:

@Kondorito - PAL is 288p/576i @50hz. The gold standard for old videogames was NTSC, 240p/480i @60hz. Try to stick with that if possible. There are a few european must-have exclusives like Terranigma and Wip3out SE, but those can be more or less easily NTSC patched.


@Squalo I’m using my own presets. Regarding the MvC2 screenshot, I intentionally have the shader soft to compensate the highly pixelated 2D sprites for that particular game, on other 3D Dreamcast/GameCube games it does not appear too soft. Also I have purposely left out the scanlines for 480 content as I am going for the VGA look. I used to force 240 and have scanlines on Dreamcast/GameCube games but found smaller text became unreadable, the VGA style for 480 content serves me better.

Those output 240p in most cases anyway, no need to force anything. That would be useful for the Dreamcast though, but it doesn’t seem like it’s working properly in your chain, which is why you don’t get scanlines on reicast.

I use crt-easymode-halation as the base for my presets, without forcing 240 in the shader chain the scanlines looked wrong on PSX, Saturn and N46. As soon as I forced 240 everything lined up correctly for me. Will most more details, screenshots and my presets later.


Yeah sorry I didn’t mean my preset exactly, but something similar, edited that.

Other 480i games maybe look less soft because they don’t use lo-res sprites and/or you play them at higher internal resolutions, which is where 4xsoft shines. For lower ones I prefer an AA shader (whose strength can be configured too, which is great). If you like MvC2 to look like that though, then I have nothing to say : )

Hmm that’s interesting. Never happened to me. The vast majority of the games from that time were 240p.


Other 480i games maybe look less soft because they don’t use lo-res sprites and/or you play them at higher internal resolutions, which is where 4xsoft shines.

I wish I could run some systems at high internal resolutions but unfortunately my PC can’t handle anything higher than native :cry:

@Squalo Liking your Dreamcast screenshot, the scanlines are very subtle so don’t eat into the smaller text.


Hi Squalo, Can you confirm the shader and settings you used for your screeshot of MvC2 ? Thanks


What’s the difference to your default preset you posted earlier? It looks much softer. Did you add 4xsoft or just increased AA value?


Yeah I know what you mean, my computer is not superpowerful either… that’s one of the reasons why I run things at 720p. 720p+high IR both looks and runs better than 1080+native. Specially if you are using shaders, which have a lot more pixels to deal with at 1080 (roughly twice as many).

So that’s how I play almost everything from the 6th generation and most 3D games from the 5th.

Ps1/Saturn/N64 3D games for example look fantastic at 2x. So good in fact, that it sort of feels like they were designed to run that way, but couldn’t due to the hardware’s limitations. And with 6th gen systems, including the PSP, the difference between native and increased is simply staggering

Regarding the MvC2 shot, it’s the same configuration that I talked about in one of the first posts. The core is running at an internal resolution of 1280x960.

@Great_Dragon - which one are you asking about? The undithered MegaDrive screens? That’s simply a high AAoffset. Around 0.35 if I remember correctly. It’s too soft, I just wanted to show how I would deal with MegaDither if I really had to, instead of composhiting it.


Ok, this statement right here is very interesting.

So, from the 32bit era and on, are you changing the screen resolution in Windows, or in RA? Might be a noob question, but this is a first for me (I run everything at 1080 native, and could use some improved performance).


@Kondorito - I think they are going to implement screen resolution switches in the next release of retroarch. For the time being, what I do is force 720p using a wonderful, free little tool called res-o-matic, which you can read about and download here

I use it also for a lot of standalone emulators and pc games than run at desktop resolution. It is essential for something like PCSX2 for example. And yes, it goes back to your desktop resolution once you close the emulator or whatever. Super convenient!

Then you also may have to configure your graphics card to stretch/scale things properly, which might be a chore depending on the hardware and drivers. This works for me. It looks great and doesn’t produce any input lag (I’m really sensitive to that).


You rock Squalo!

Will check it out once I get home :slight_smile:


I’m by no means an expert in video technology and I believe CRT shaders applied to pixels is a very subjective topic, I don’t think anyone can agree what is the “best” solution as everyone has their own opinion based on how they were exposed to the technology in their younger days.

In my younger days I was exposed to cheap PAL CRT TVs and the main connection available was the poor RF, composite or if we were lucky S-Video.

With the wonderful RetroArch CRT shaders, the beauty is flexibility. You can pick and choose what effect you want and what you don’t want. My goal was to experience that retro/nostalgic feeling by applying the mask, scanlines, minor smoothing/blurring and slight bloom but still keeping the picture free of artifacts produced by the poor quality RF connection which I experienced. This might be frowned upon by retro video display “experts”, however I knew the look I wanted to achieve.

Screenshots on the Internet do not tell the whole story because they do not take in to account the users TV/monitor brightness, contrast, back light etc… What looks dull or bright in a screen capture might be fine on the users display as they would have the settings adjusted accordingly.

I have 3 primary CRT presets, applied by the --appendconfig command in the frontend:

  1. 2D CONTENT (8/16bit systems) - gtu-easymode-halation-2D.glslp
  2. 3D CONTENT @240 (32/64bit systems) - gtu-easymode-halation-3D-240.glslp
  3. 480 CONTENT and above (Dreamcast/GameCube) - 4xsoft-easymode-halation-3D-480-vga.glslp

The presets start off with a bunch of shaders to get the right smoothing/blurring and colour tweaks - depending on the system and finally finish off with the crt-easymode-halation chain to apply the mask, scanlines and bloom/halation effect. They all include crt-easymode-halation because I wanted a consistent scanline look across all systems. I wanted the display to fill the 4:3 aspect ratio with integer scaling turned off, I found crt-easymode-halation handled the scanlines best for this setup. Also on the topic of consistency, to maintain a uniformed look I have the same bezel overlay to fill the 4:3 black sides (I have my setup running in a DIY custom VEWLIX cabinet hence why the VEWLIX branding on the bezel).

The above shader combos work fine on my PC which is running Windows 10 x64, i5, 8Gb memory, Nvidia graphics card feeding to a 1920x1080 LED TV.

Screenshots are best viewed at 100% by clicking in to them and then right clicking on the pop up image and selecting “View Image” in your browser right click menu.

2D CONTENT (8/16bit systems)

3D CONTENT @240 (32/64bit systems)



Cheers! I hope my old PC can handle those XD


Lovely screens, @shenglong, and great post. Our taste is indeed very similar, we go for the same look (the images I’m posting are smaller obviously because of 720p, but once stretched, almost identical).

100% agree. I started the thread with that in mind, to see what other people were going for, learn from them and share my experience so they could learn from me as well. There’s not so many people in the ‘real world’ who are interested in these things, at this level. Feels great, the feedback.


Yes, great thread. Eager to see and learn from others. I just wish I spent more time playing the actual games than tinkering with shaders :crazy_face:


So this evening I have been messing around with those DC 2D fighters that mix lo-res pixels with hi-res assets, like MvC2. I tried that scale_y0 = “240” solution and I didn’t like it, although I find that it might be very useful for other types of content. Combined with easymode it provided a very CRT-y feel. I also discovered why you said it ruins text, @shenglong. It certainly does. It also looks like crap when linear filtered (although text becomes more readable, give it a try) and it destroys a lot of the detail from the beautiful, high resolution backgrounds. So I tried a few things and this what I got. Text and UI are perfect, backgrounds are perfect, 3D assets are perfect, and sprites are… well as good as they can get considering how much smaller they are compared with everything else. Screens are from CvS1.


Good point with the scanlines. I reworked my scanlines yet again and got a luminosity-responsive adaptive-width system going without an additional texture lookup that’s 720p friendly with the shadowmask overlay, though in these screenshots it’s 3x res for the scanline shader and then 4/3x res for shadowmask overlay to get it up to 4x and get a little blur out of the upscale. Also my JVC 3DLUT was thrown in since it’s visual MSG; it’s called jvc_tm in the LUT directory of the GLSL Shaders repo.


@Squalo The low res 2D sprites can be a pain, you just have to find a sweet spot that you find which works for you.

@Great_Dragon, those screen shots of Sonic, Mega Man you posted earlier in the thread… I really like that CRT effect too, it does not have strong scan lines but the mask effect makes it look like a VGA/CGA monitor from the early 90’s. I have a few presets that I found on the web which look like the output you posted but my system struggles with the intense shader chain. Also, with them being in .cgp format they are not compatible with all cores.

@torridgristle The Virtua Fighter screen shot looks nice and the scan line work your doing is pretty impressive, will these shader updates be available in the official libretro repostiory? I don’t want to hijack this thread so I will post a request in your other thread GritScanlines Lightweight LUT-Based Scanline Glow Concept + Prototype GLSL. It’s related to @Great_Dragon screen shots earlier in the thread.


Those shaders you mentioned in the other thread are exactly the same I use. I fact it’s one shader with some values changed to achieve desired look.

Here is original Birm’s post

AFAIK to be able to use the shader preset you have to have pretty beefy PC, Analog Shader Pack 3 from the thread and more over you limited with CG shaders. Unfortunately original shaders in ASP3 all are heavy modified. Even those which has the same name as RA’s shaders. So it’s very hard (for me) to conver it to something more modern and flexible like GLSL or SLANG.

The only thing I manage to achieve is to make shadow mask (dot mask) less visible and more round-dish.

Here is original shader look (MaskType=4)

Here is modified

So I made DotShader’s size fixed.

scale_type_x10 = "absolute"
scale_type_y10 = "source"
scale_x10 = "1280"
scale_y10 = "3.000000"
shadowMask = "4.000000"

Unfortunately there is little bug with that modification. Some dark transparent lines become visible across the screen and I don’t know how to fix it at the moment.

UPD: Forgot to mention that I’ve changed Dot Mask Type to 4.

UPD2: Those shaders from Brim’s pastebin folder look updated (October 20th) and so Contrast version of the shader looks brighter which is good thing.