Can't stop shader from overriding

I have all the old Nintendo systems on my RA setup (Windows). When I launch the Gameboy, Gb Colour, or GBA their respective handheld shaders load fine. However, when I launch an NES ROM the Gameboy shader always appears on screen! I then disable the shader passes in the options and choose to save to core preset. Exit and restart NES ROM and the Gameboy shader is STILL there.

I had this exact problem a year ago and gave up trying to fix it. Came back with high hopes. The plain obvious solution to fix it does not work.

Surely someone knows whatā€™s going on here?

This is non-obvious, but: after you zero out all of the shader passes, increment the passes to 1 and then choose the ā€˜stockā€™ shader for whichever type of shaders youā€™re using (i.e., stock.cg if youā€™re using Cg shaders, stock.slang for slang shaders, stock.glsl for GLSL shaders). Choose either linear or nearest for sampling method and then hit ā€˜apply shader changesā€™. Now go and save core preset and see if it sticks.

1 Like

This worked perfect and I learnt something new. Thank you.

1 Like

My pleasure. It shouldnā€™t have been necessary, but I suspect the core preset function was seeing the zero passes and just giving up without actually writing anything. I figured this process would trick it into thinking it was actually doing something and save that :slight_smile:

1 Like

ā€œjust giving up without actually writing anythingā€

I always get ā€œerror saving core presetā€ when I zero out now.

My method is to set the main ā€œRetroArch.cfgā€ to load no shaders and then only add the shaders I want on whichever system.

When I DID get stuck like in this situation I just deleted the ā€˜presetā€™ it was trying to load and that took care of it as well.

Iā€™m having a similar issue. I only want shaders for my arcade core (FBA) but not on anything else. Iā€™ve managed to save it so that it works with FBA as it should using the save core preset method, but it then will also load it for the other cores, which I want without any shaders.

I can set the shaders to 0 for these other cores when I load them, but I have to do that ever time. When I set it to 0 and select save core preset it results as error and only works if I select a different shader like the poster above.

I was looking for the stock shader (stock.cg) but been through all the menus and canā€™t see it. I assume I have to save this to each of the other cores but where is it? Thanks.

this was very helpful, thank you

Thereā€™s an opened issue about it: https://github.com/libretro/RetroArch/issues/3097

The way I got around this was manually making a core preset with 0 passes. For instance, my shaders\presets\Mupen64Plus OpenGL.glslp file has just this:

shaders = ā€œ0ā€

And that does seem to work. If I play a SNES game with Lottes shader, then immediately load an N64 game, Lottes is gone.

The 0-pass preset doesnā€™t seem to always ā€œstickā€, so we recommend someone use a single pass of either the stock shader or misc/image-adjustment, which has no immediate effect but includes a lot of runtime options for image-tweaking.

With stock shader does it matter what scale and filtering type is set to?

Leave the scale at ā€œdonā€™t careā€ and set the filtering type to whichever you prefer. Linear for blurry but even pixel sizes regardless of integer/non-integer scale, nearest for sharp but uneven at non-integer scales.