Friday 5 January 2018

Killing Pixels - How to make your emulated games look old-school

Remember when I said I’d write a full, in-depth article about emulating Saturn games? This is not it.


Instead, I’m just going to whet your appetite for one of the many wonders of emulation or, in case you’ve already dipped your toes in this huge pool, I’ll walk you through the process of enhancing your experience.

You too can watch this miracle transformation on all the games you love and cherish.

[open the picture for full effect]


What’s a shader?

The best way to explain that, I think, is to say they’re basically really fancy filters. If you’ve ever tried any emulator you probably found some options to mess with the picture, like adding fake scanlines or using fancier effects like HQ4x or xBRZ which try to mask the pixelated glory of the original game.

A shader is something like that, only a hundred times more complex, since it lets you tweak many more elements of the picture (brightness, colour saturation, geometry of the screen, etc, etc) and even stack them together for added effect.

If you’ve listened to our very special Megacast episode, you already know my setup. Mednafen Saturn core through Retroarch [confused by all the weird names? Check the glossary at the end of this article], and shaders have a lot to do with that, since this fancy piece of software gives you access to more and better shaders than any other alternative I know of.

Sounds interesting. What does it look like?

   [make sure you open the pictures to see the shaders in full effect.
The compressed thumbnails will alter the look]

This is what every emulated game looks like without any added effect. Just plain, pure, crisp pixels everywhere.

I think it looks hideous.

I actually had to capture this picture with SSF, for many years the go-to Saturn emulator, since my setup by default always applies a pass of bilinear filtering, considerably softening the image. And because SSF sucks at emulating Dragonheart, perhaps the best Saturn game of all time, I couldn’t start the proper game and had to resort to snagging a picture of the demo mode.

By the way, the irony is not lost on me on how so many Saturn enthusiasts nowadays invest time and money into fancy setups to try to get the absolute clearest picture out of their consoles, while I on the other hand, who already have that kind of quality by default, go the extra mile to f*** it up.

Now this is my default Mednafen/Retroarch setup. No shaders applied yet, but it's also not a raw picture since by default it automatically applies a bilinear filter, softening the pixels and making it much less aggressive on the eyes (my opinion. Fight me). For many gamers this would be more than enough, and some days it is even for me, but usually I need something else. Something fancier.

Something like this:

   [Custom tweak of crt-easymode-halation]
Fascinated by PVM’s, the hot new meme of retro gamers everywhere, but too poor to afford one?

Just emulate it! This fancy shader, a slight tweak of the standard, and very popular, crt-easymode-halation, may not have those thick black lines that some retro gamers fetishize about, but it gives you a good approximation of the general look. Not seen in the picture is the boost to lightning. White letters on black background, for example, look extra bright and bleed over the background for that added authenticity.

But suppose you grew up with a piece of sh*t tv, with dark corners, washed up colours, and just a terrible picture quality overall?

I got you covered, fam.

Say hello to 199X, the shader you had been looking for ever since you got rid of your last crt tv. Some people would say this is overkill, and I agree. The colours look off and the overall picture has a higher contrast, with darker blacks and brighter whites, but the actual emulation of a regular tv’s shadow mask (unlike those fancy Trinitrons with their aperture grills) is nothing short of amazing. It's not just about painting a grid over the original image (à la fake scanlines), but to actually make the pixels blend together in the way only a cathode ray tube could. Look at the main character's face in the above picture, how you can see the contour of his ear and a light shadow where his eyes should be, how the sword almost looks a straight line instead of a staircase, and the shield seems almost perfectly round.

Look at it in action:

Isn’t that just gorgeous?

Of course, the great thing about this whole business is that there are shaders for every taste, and it costs nothing besides your time to try out all you want. If you’re savvy enough you can even make your own, or at least tweak existing ones to suit your tastes. That’s a bit too advanced for my knowledge, but even I managed to tweak a Gameboy Advance shader to increase its brightness.

That’s nice and all, but how do I do it?

By default Retroarch already comes with a nice selection of basic shaders that you could try. Navigate to the folder you installed it to and go to shaders > shaders_cg (or shaders_glsl, different format but similar output) > crt, and you have very popular ones like crt-easymode, crt-geom, crt-lottes, crt-hyllian or crt-royale. They’re all great choices to start with, you really can’t go wrong with these.

If you want to go above and beyond, you can start by downloading the Analog Shader Pack 3 and extract it to that same shaders folder inside Retroarch’s directory. There’s a ton of stuff in there, so you might feel overwhelmed. On the plus side, that means you already have a lot to try out before even thinking of tweaking shaders or googling for more.

Whatever you choose, the way to apply them is always the same. Load up your game first and then go to Retroarch’s menu (F1 by default). You should see a menu with options about that particular game. Go down to Shaders, select it and then press “Load shader preset”. This should take you to the shaders folder where everything is. Just navigate the folder structure until you find the shader you want to try. Select it and it should be immediately applied to your game, but just to be sure you can select “Apply changes”.

And that’s it.

Keep in mind that if your Retroarch setup is anything like mine, every time you load a new game, even for a different system, it automatically applies the last used shader. This could be a problem if you only want to use it with specific systems or even games. Fortunately there’s an option to do just that. Simply load up your game, go to the Shaders options once again and choose between “Save Core Preset” or “Save Game Preset”.

Suppose you just get tired of this whole thing and want to go back to the standard look? It’s a bit tricky, I hope in the future they simply add an option for that, but in the meantime the easiest way is to use a “blank” shader. Go to the shaders > shaders_cg (or shaders_glsl) and select (or stock.glsl). This way Retroarch still thinks it’s using a shader but since it’s a blank one there are no effects whatsoever applied to the picture.

That looks easy enough

Yeah, but wait until you get sucked down to the bottom-less pit that is spending more time tweaking your shaders than actually playing games.

Leave a comment telling us about your experience! Do you regularly use shaders? If so, which ones? And if you’re just trying them out for the first time, tell us how easy/hard it was and if you think it significantly improved your gaming experience.


Mednafen: stands for My Emulator Doesn’t Need A Frickin' Excellent Name and it’s a multi-system emulator. On the plus side it’s one of, if not the best emulator solution for some systems, like the Playstation, PC Engine (TG16) and, nowadays, the Saturn. The latter is a somewhat recent addition, but even the first alpha version already boasted incredible compatibility, and it’s only gotten better since.
On the down side, it’s strictly command-line based, which might prove an unsurmountable obstacle to many gamers. There’s a variety of third-party GUI’s that you could try to alleviate that, but it’sstill far from being user friendly.

Retroarch: not so much an emulator, but more of a fancy frontend that brings many emulators (known as “cores”) together. Many mednafen cores have been ported over to Retroarch, so in theory you get all the quality and performance of mednafen with the easy(-er) to use Retroarch interface. In practice these cores aren’t always updated on time, and the Saturn one in particular was left outdated for a long time, but fortunately as of writing this article they’re on par with the originals.


Daniel Turner said...

very interesting. i’ve not done much emulation other than MAME, i like that 199x filter. look forward to hearing more

fatherkrishna said...

Very interesting post Nuno! fascinating stuff! I can't claim to understand how I would apply this tech to my own system, but I could read about it for hours! This had got me fired up for receiving my custom made copy of Dragon Heart!

NebachadnezzaR said...

Daniel, MAME actually supports the same style of shaders! I think they need to be made specifically for mame, so Retroarch's won't work, but it's nothing a google search won't fix. Here's the one I currently use in HLSL format:

Simon, the very basic is get Retroarch (download from their site) > download the mednafen Saturn core (done inside Retroarch, easy) > set it up (not so easy, need bios files, but I could help you with that) > configure shaders the way I mentioned in the article.

The hardest part is having a beefy enough pc to handle the emulator, it's VERY demanding as you can see from the struggle of Christopher James Wright over at the fb group.