Crt-Royale Kurozumi Edition Help


Yep checked the look, buildbot version should be fine now, there isn’t any difference in color, look, gamma, aperture grille, glow, masksize etc, at least at 1440p. Didn’t check 2160p yet, but since the parameters do the same thing in both versions it should be like always:

If your resolution is LESS than 2160p, just load the preset and you should be good to go for the BVM look.

If your resolution is 2160p/4k set “Mask - Triad Size Desired” to 3 and the look should be right (@James-F mentioned: Windows DPI Setting -> 100% is crucial, too, but i didn’t check that)

So everyone have fun rocking the Vulkan-Kurozumi :slight_smile:

I wanted to do comparison screenshots, but since it looks 100% identical, it doesn’t make any sense…

@hunterk : Thank you very much for making that happen. It’s really awesome that you spent your time and converting it correctly in slang shading language, personally i appreciate that very much! :ok_hand::+1:


Awesome! It was my pleasure. Thanks for testing!

I’ll try to spin up a GLSL version soon. I was hoping to tackle the geometry stuff first, but i suspect that’s not going to happen… It includes a bunch of matrix math that’s out of my league.


@hunterk or @Kurozumi - is there any reason in particular that I would be experiencing… um… erratic behavior from the shader? Used to be I got those lovely rounded edges along the border just like I remember the GLSL version having, but now it disappears whenever I set kurozumi-slang to core override… that is, on some cores. Genesis Plus GX being a main source of irritation, since it definitely didn’t exhibit this behavior just a couple of days ago.

I’ve got AR set to core-provided (even tried forcing 4:3, didn’t help), integer scaling ON yada yada… well, the same settings I used when it DID work. :confused:

EDIT: Just tested higan-balanced. I set the shader shortly after it was fixed, and it’s beautiful - and as soon as I load the preset again, POOF. Sharp cutoffs.


You mean the fadeout border? If so, that’s controlled by the parameters, so if you want it back, you can go in and set it. Find the settings you like (or copy the default values from file) and hardcode them into your kurozumi preset.


I guess what you are talking about are are the parameters “border_size” , “border_darkness” and “border compress”. You will find them in the quick menu of retroarch if you started a game:

quickmenu (F1) --> shaders --> menu shader parameters. In there press up one time, so it’ll go all the way to the bottom, there you should see the 3 parameters.

Tweak the values until you like it! For tweaking i would use the menu “preview shader parameters” as it would show the difference immediately. If you have found settings you like, set them in “menu shader parameters” and hit “apply changes”, that’ll save your preset.

Hope that helps


I just pushed up an updated/fixed GLSL version that matches the updated slang version. I never made any progress on the geometry stuff, but all of the other options seem to be working well.

Have fun guys :slight_smile:


Is this going to support vertical games also ?


No more/less than the Cg version. Which is to say: it supports vertical games when the core actually rotates the image (e.g., FBA) but not MAME core, which doesn’t.


Running Dimahoo (fbalpha core) looks very bad


you can make it look better by forcing integer scaling on both axes, for example by using a custom aspect and putting it to 5x-wide by 6x-tall. 1:1 PAR should look better, too, I think (didn’t test).


No easy way to have it for both horizontal&vertical games ? If the screen rotates for example will it make a difference or it does not matter the screen orientation ?


If my monitor is calibrated to 2.20 gamma, should I change lcd_gamma or crt_gamma to 2.20?


lcd_gamma. crt_gamma is the gamma value of the simulated display while lcd_gamma is the gamma value of the actual, physical display.


@hunterk : That’s great, thanks again for porting it to all the different shading languages. Took this long to post, cause i was very busy at work. I’ll check it out later this evening, but i guess it’s as flawless as the other one :blush: !

@Zaphain: The answer (if your monitor is calibrated to 2.2) is lcd_gamma : 2.2 , crt_gamma: 2.4 , that should look correct on your display.

It’s standard to both 2.4, because usually digital displays like TVs are nowadays use the BT1886 standard, which is kinda like 2.4 gamma, but factors the contrast/black level capabilities/lowest possible difference in signal to absolute black in the equation (best terms how i can describe it). On a flawless display (standard SDR) it starts usually at 2.18 and ends at 2.38, which is kinda what a perfectly BVM does naturally…

Hope that helps. That’s why there’s no gamma correction by default!

@all : I wish all of you a merry x-mas! :christmas_tree:


Hi, I am having trouble loading the shader preset crt-royale.slangp after commenting out #define RUNTIME_SHADER_PARAMS_ENABLE in the file user-settings.h

I am using the latest version of RetroArch (1.7.0) and the vulkan video driver. I have no problem loading the shader with the option enabled. Here is my log when trying to load the shader with #define RUNTIME_SHADER_PARAMS_ENABLE disabled:

[INFO] [slang]: Compiling shader "C:\Users\Nilas\AppData\Roaming\RetroArch\shaders\shaders_slang\crt\shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang".
[ERROR] Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
ERROR: scanline-functions.h:359: 'beam_horiz_linear_rgb_weight' : undeclared identifier
ERROR: scanline-functions.h:359: '' : missing #endif
ERROR: scanline-functions.h:359: '' : compilation terminated
ERROR: 3 compilation errors.  No code generated.

[ERROR] Failed to compile vertex shader stage.
[ERROR] Failed to compile shader: "C:\Users\Nilas\AppData\Roaming\RetroArch\shaders\shaders_slang\crt\shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang".
[ERROR] [Vulkan]: Failed to create preset: "C:\Users\Nilas\AppData\Roaming\RetroArch\shaders\shaders_slang\crt\crt-royale.slangp".
[ERROR] [Vulkan]: Failed to create filter chain: "C:\Users\Nilas\AppData\Roaming\RetroArch\shaders\shaders_slang\crt\crt-royale.slangp". Falling back to stock.
[INFO] [slang]: Building pass #0 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: no):
[INFO] [slang]:   Push Constants (Vertex: no, Fragment: no):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [Vulkan filter chain]: Not using frame history.
[INFO] [Vulkan filter chain]: Not using framebuffer feedback.

Does anyone know how to fix this?


I didn’t ensure that codepath was functioning, so it doesn’t really surprise me that it didn’t work. I (or someone else) would have to go through and do some massaging on the code. I don’t suppose it’d be terribly difficult, but it’ll take time. I’ll try to get to it when I’m back at work from the holidays.

EDIT: I went ahead and fixed it. It should make its way to the online updater soon. Some of the other optimized codepaths (like the ones for dynamic branching and fine derivatives) are still broken and will take more invasive changes, but disabling runtime settings should at least work now. Let me know if you run into any problems.


Thank you @hunterk!

It seems to be working now. I have not had any problems so far. :slightly_smiling_face:


hey guys, couple questions about this shader:

im using the one in cg/cgp folder. is this right?

also im playing on a 1920x1080 tv, i have integer scale on. should i tweak any shader parameters or other settings? it looks great but wasnt sure if there were other tweaks.

i like the sharp simplicity of it. im playing through super metroid for first time on bsnes and it looks great.


Yeah, that’s the one. If you load a core that’s incompatible with Cg shaders (like any of the libretro-gl cores), you can load the GLSL version instead, which is in shaders_glsl/presets.


it’s tuned to look right out of the box, if your resolution is lower than 4k/2160p , so it should be nice on your display. Maybe the picture is a tad small for your taste, because 1080p isn’t dividing by a integer value to 240p. With 1080p it’s kinda pick your poison: underscan, overscan, uneven scanlines…