I’ve been playing around with RetroArch shader stacks for Sega Saturn games recently, trying to dial in a nostalgic, warm CRT effect that still looks clean and readable on modern screens.

Here are three presets I’ve been enjoying:


🎀 Tokimeki Puzzledama – Soft & Warm Look

This preset focuses on a clean CRT feel with soft halation, subtle bloom, and slightly boosted color.

COLOR_BOOST = "1.05"
GAMMA_INPUT = "2.4"
GAMMA_OUTPUT = "2.2"

🌀 Tokimeki Puzzledama – Curved CRT Glass

Same base as the soft preset above, but adds curvature using ewa_curvature.slang to simulate the slight bend of old CRT glass.

Perfect if you want that arcadey 90s screen feel without going overboard.

🦇 Akumajo Dracula X – Darker Gothic Look

This one pulls the brightness down just a touch for a more moody, gothic presentation—perfect for Dracula X.

COLOR_BOOST = "1.08"
GAMMA_INPUT = "2.4"
GAMMA_OUTPUT = "2.1"

A bit more contrast, a bit more drama. Looks great in candlelight 🌒

📂 Shader Stack Base

All three use crt-easymode-halation as the core shader stack:

linearize.slang

blur_horiz.slang

blur_vert.slang

threshold.slang

crt-easymode-halation.slang

The second one (curved) adds ewa_curvature.slang on top at the end, after everything else is applied.

To install, make sure your Retroarch installation is using the vulkan video driver, these will not work otherwise! Put them in the shaders directory, under slangp in their own directory. Technically, you can put them wherever you want, just make sure to edit the paths accordingly!

I hope you can enjoy them as well. They work quite nicely with the Steam Deck.

I will put them here below :

tokimeki-warm-flat.slangp

shaders = "5"

shader0 = "../crt/shaders/crt-easymode-halation/linearize.slang"
filter_linear0 = "false"
srgb_framebuffer0 = "true"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
alias0 = "ORIG_LINEARIZED"

shader1 = "../crt/shaders/crt-easymode-halation/blur_horiz.slang"
filter_linear1 = "false"
srgb_framebuffer1 = "true"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"

shader2 = "../crt/shaders/crt-easymode-halation/blur_vert.slang"
filter_linear2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
alias2 = "HALATION_BLUR"

shader3 = "../crt/shaders/crt-easymode-halation/threshold.slang"
filter_linear3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"

shader4 = "../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"
filter_linear4 = "true"
scale_type4 = "viewport"

parameters = "COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"
COLOR_BOOST = "1.05"
GAMMA_INPUT = "2.4"
GAMMA_OUTPUT = "2.2"

tokimeki-warm-curved.slangp

shaders = "6"

shader0 = "../crt/shaders/crt-easymode-halation/linearize.slang"
filter_linear0 = "false"
srgb_framebuffer0 = "true"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
alias0 = "ORIG_LINEARIZED"

shader1 = "../crt/shaders/crt-easymode-halation/blur_horiz.slang"
filter_linear1 = "false"
srgb_framebuffer1 = "true"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"

shader2 = "../crt/shaders/crt-easymode-halation/blur_vert.slang"
filter_linear2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
alias2 = "HALATION_BLUR"

shader3 = "../crt/shaders/crt-easymode-halation/threshold.slang"
filter_linear3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"

shader4 = "../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"
filter_linear4 = "true"
scale_type4 = "viewport"

shader5 = "../anti-aliasing/shaders/ewa_curvature.slang"
filter_linear5 = "true"
scale_type_x5 = "viewport"
scale_x5 = "1.000000"
scale_type_y5 = "viewport"
scale_y5 = "1.000000"

parameters = "COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"
COLOR_BOOST = "1.05"
GAMMA_INPUT = "2.4"
GAMMA_OUTPUT = "2.2"

castlevania-goth.slangp

shaders = "5"

shader0 = "../crt/shaders/crt-easymode-halation/linearize.slang"
filter_linear0 = "false"
srgb_framebuffer0 = "true"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
alias0 = "ORIG_LINEARIZED"

shader1 = "../crt/shaders/crt-easymode-halation/blur_horiz.slang"
filter_linear1 = "false"
srgb_framebuffer1 = "true"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"

shader2 = "../crt/shaders/crt-easymode-halation/blur_vert.slang"
filter_linear2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
alias2 = "HALATION_BLUR"

shader3 = "../crt/shaders/crt-easymode-halation/threshold.slang"
filter_linear3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"

shader4 = "../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"
filter_linear4 = "true"
scale_type4 = "viewport"

parameters = "COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"
COLOR_BOOST = "1.08"
GAMMA_INPUT = "2.4"
GAMMA_OUTPUT = "2.1"