CRT shader for Steam Deck (and possibly low res display)

Hi,

so as some of you probably know, the Steam Deck is out in the wild for about 3 months now and it happens to be a powerhouse for emulating. With EmuDeck, a nice script, you can even isntall RetroArch, its cores and other standalone emulators with a few clicks to get you going. I’m one of the lucky ones to own a Steam Deck and with it I’m into emulation again, reliving some of my childhood experiences. It’s fantastic but also new because my last emulation experience is Project64 (N64 for example) with a not so optimal performance many years ago. So RetroArch, cores, crt Shaders, it’s wild. But i did some homework, how things developed over the years, getting used to the RetroArch ui etc. Just to gove you a little picture.

Now, to get to the topic, crt shaders. People seem to be obsessed with a cool (and accurate) crt look. And i understand it. Having old games from the past to look just like the day back when we were first experiencing it on the old crt screens is a nice thing. Especially when games were taking advantages of the signals and properties you had back then on a crt. I didn’t really know any of this stuff until now. And after seeing it for myself, i can’t go back anymore. So, i wanted to have this look on the Steam Deck too. After reading a ton of stuff about crt shaders and their properties, well, I’m not really wiser than before. It’s all heavy wizardry in my eyes. And after encountering many statements that crt shaders only really shine on higher resolutions, like 1080p and upwards, I was ready to give up on this matter. The Steam Deck has a 7" screen with 1280 x 800 resolution. But then I thought… hell, screw it. Lets dive into this dark rabbit hole. And after some days of intensive testing I rise with a surprisingly long beard, indicating I was much longer down there than I thought. But still, I have no really clue what dark magic I have encountered down there besides some basic stuff.

But, luckily, I actually managed to achieve a nice crt look (in my eyes) with the things you would want from a crt shader. Yes, I’m looking at you Sonic and your damned waterfall. So, to cut this short, I’d like to share the stuff I managed to do, hoping it provides other people with a nice looking crt effect when playing retro games on the Steam Deck and maybe other systems with a low resolution. Beside that, I’m provding a list of shaders that come with RetroArch and look good out of the box on the Steam Deck. Sadly, as i don’t understand much of the stuff, I can not provide any meaningfull support for it. But at least I can give some tips from what i observed while testing.

So, first, shader presets i use that come with RetroArch. No customizing needed here.

Gameboy dmg-4x.slangp under “shaders_slang/handheld/console-border/dmg-4x.slangp”

Gameboy Coloy gbc-lcd-grid-v2-4x.slangp under “shaders_slang/handheld/console-border/gbc-lcd-grid-v2-4x.slangp”

Gameboy Advance gba-lcd-grid-v2-4x.slangp under “shaders_slang/handheld/console-border/gba-lcd-grid-v2-4x.slangp”

Nintendo DS lcd1x.slangp under “shaders_slang/handheld/lcd1x.slangp”

Second, I’ve got 3 Presets for the 16 Bit era (SNES / Mega Drive), 32 Bit era (N64 and Playstation) and 64(?) Bit era Sega Dreamcast.

Sadly no Gamecube as the Dolphin core in RetroArch is not working with Vulkan (for me) and with GL driver i get bad performance. So I’m using the standalone version which works fine (Vulkan). The presets use the awesome work of Guest as a base. It’s the Guest Advanced Shader Pack. All credits to him, I just changed some parameters which I don’t really understand :D. So be sure to downlad and copy the files to the right place. Here is the link:

SNES and Sega Mega Drive https://drive.google.com/file/d/11UrfZeXqLx8zzxE8igI-zQXLUby_DSPD/view?usp=sharing

Nintendo 64 and Playstation 1 https://drive.google.com/file/d/1ns-YyCTsxQ0bKcFIXBLMyfU8mjvn391a/view?usp=sharing

Sega Dreamcast https://drive.google.com/file/d/1m7jc2-_xlQngcVJx1D8Pi3Rgvqip7xcy/view?usp=sharing

Some notes:

  • It’s important to deactivate any kind of video / display enhancements in the core options or it will mess things up. So, for example, the ghosting thing in Gambette, the NTSC thing in Genesis and so on. The reason is because the shaders are providing all of these things and can be modified within the shader parameters.

  • The NTSC presets are set to S-Video. If you want to have a Composite or even RF look, just change the NTSC type to 1 for Composite and 2 for RF within the parameters.

  • The presets give you an aperture grill rgb Trinitron look (i think that’s what it’s called?). The kind of dotted thing. If you don’t like that and want to have more prominent horizontal scanlines, you change the mask typ from 6 to 5 or 0 within the parameters.

  • Strangely, on Dreamcast, I was getting a very blueish look. So i had to adjust some more things to get rid of it. That is why there is a unique preset for it. But beside that, it’s the same one as for Nintendo 64 and Playstation 1.

  • I’m using the awesome overlay pack from Duimon, though strangely the RetroArch screenhot function didn’t capture that!? Anyway, the overlays can be adjusted in the settings and it looks really cool. Here is the link: Duimon - HSM Mega Bezel Graphics and Presets - Feedback and Updates

  • I even tried the Mega Bezel Pack with the nice reflections. And while working well with the 16 Bit era, i get bad performance starting with 32 Bit era. I guess, the reflections are to much for the Steam Deck when playing with higher systems.

Some screenshots with comparison (without and with sahder and close ups):

Okay, that’s it. Feel free to change it to your likings or use it as an inspiration or base for your own thing or to develop it further.

You’re welcome!

6 Likes

Welcome to the forum!

Really nice stuff :star_struck: you got a really nice look even on a low-ish resolution display. @guest.r’s shaders really are amazing for their tweak-ability to taste.

Also the DMG gameboy shader looks great, it seems like it would feel really cool to have it handheld on the steam deck!

For @duimon’s graphics and presets I wanted to mention that if you still want to use them but need higher performance and are ok with no reflections there are a couple of options. You can switch the base Mega Bezel preset they reference to a no-reflect version, and there are the potato versions which have a baked image for the background rather than the auto-generated bezel.

For anyone following this if you want to use @Duimon’s awesome graphics/preset pack, you will also need the Mega Bezel shader pack which you can find here:

Below are a couple of examples of @Duimon’s Mega Bezel setups which might be helpful on the Steam Deck:

4 Likes

That’s actually a really good tip, thanks for that. In fact, I have trouble to get an overlay working with Nintendo DS games because the screen alignment can’t be customized in the core options of MelonDS in the way your screenshot shows. So I’ll take a look at that. One question though:

Is the newest shader from Guest already integrated in your awesome shader pack? My settings are kind of depending on it because of the new sharpening parameters in the ntsc shader.

3 Likes

The very newest is up on my Github, but not yet in the download package, the next release with the updated download package will come in the next couple of weeks.

In the current package there are simple dual screen nds presets in the variations folder, and of course Duimon has some great nds presets in his package, either screens top & bottom or left and right.

3 Likes

Thanks again, managed to do what you suggested (changing the reference) and customized the presets with my settings. DS is looking nice now. :slight_smile:

4 Likes

looks great! im particularly fan of the gba one.

1 Like