Hey, I think i managed to fix that, please, check in the dev repo.
Hi, I think either my install is busted, or it’s because I’m on nightly rocknix, but I can’t get the ambilight working no matter what now (neither with the koko that comes with rocknix nor the latest main which means it’s on my end).
I made sure the scaling is set to full in both ES and RA, the game launches stretched, then I apply koko shader and it “shrinks” to 4:3, I get the reflections on bezel, but not the reflections in the “black bars”. In shader options I made sure the ambilight is enabled, but flipping it off or on produces no difference.
this is what the koko shader I was using before looks like now
I’ll try in few more nightlies (I’m also missing option to disable decorations in the ES menu so I dunno what’s going on) edit: it also failed to load my saved presets for gb and gbc and I had to recreate them so something’s definitely afoot.
If you saved your presets as full instead of simple and did a big version jump, then breaking is expected.
But the missing borders are unrelated and probably Retroarch is using core aspect instead of full aspect for some reason.
Overrides in place, maybe?
Mmh but you said it starts stretched, and thay suggests full aspect, weird.
Have you tried other border shaders like megabezel/uborder?
What if you enable background picture parameter in koko-aio?
There was a bug just fixed (thanks @RickDangerous for pointing it out!) that should fix yours as well.
Yey, fixed thank you! And no more black dot in corner either!
But I wonder, did something change or what do I need to turn off to gain performance? I lost my old presets and this is just Monitor-balanced with bg pic turned off. It stutters heavily on Dreamcast, barely hitting 35fps, I do not recall this from my previous usage (I have RP5)
Maybe you increased internal flycast resolution?
Nothing really changed performance wise For what concerns the shader, maybe you changed some core option or other setting, can’t say.
Maybe you were using fast presets, check: Koko-aio shader discussions and updates’
Hi I’m not really sure what I was doing wrong, but everything is back to normal!
back to how I love it, thanks!I’m a bit confused about the “Faster” presets though as they seemingly do not work (or I’m setting it up wrong)
For my settings I start with Monitor-Balanced, turn off bezel (set straight bezel and change frame alignment to get rid of the top and bottom bezels for games where I want bezel), turn off curvature, set global zoom to 1 to get rid of the 1 pixel ambilight on top and bottom, save as advanced preset.
this is what I end up with:
shaders = "17"
shader0 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/colortools_and_ntsc_pass.slang"
alias0 = "colortools_and_ntsc_pass"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
filter_linear0 = "true"
float_framebuffer0 = "true"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/fxaa.slang"
alias1 = "upscale_pass"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
filter_linear1 = "true"
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/shift_and_bleed.slang"
alias2 = "shift_and_bleed_pass"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
filter_linear2 = "true"
float_framebuffer2 = "true"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/in_glow_x.slang"
alias3 = "in_glow_pass_x"
wrap_mode3 = "clamp_to_edge"
mipmap_input3 = "false"
filter_linear3 = "true"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/in_glow_y.slang"
alias4 = "in_glow_pass"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
filter_linear4 = "true"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/halo_pre_gamma.slang"
alias5 = "halo_pre_gamma_pass"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
filter_linear5 = "true"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/halo.slang"
alias6 = "halo_pass"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
filter_linear6 = "true"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/avglum_pass.slang"
alias7 = "avglum_pass"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
filter_linear7 = "true"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "0.500000"
scale_type_y7 = "source"
scale_y7 = "0.500000"
shader8 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/reflection_blur_pre.slang"
alias8 = "reflected_blurred_pass_pre"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
filter_linear8 = "true"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/reflection_blur.slang"
alias9 = "reflected_blurred_pass"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
filter_linear9 = "true"
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/bloom_pass_1.slang"
alias10 = "bloom_pass_1"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
filter_linear10 = "true"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/bloom_pass_2.slang"
alias11 = "bloom_pass_2"
wrap_mode11 = "clamp_to_edge"
mipmap_input11 = "false"
filter_linear11 = "true"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "0.500000"
scale_type_y11 = "source"
scale_y11 = "0.500000"
shader12 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/bloom_pass_3.slang"
alias12 = "bloom_pass_3"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
filter_linear12 = "true"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/bloom_pass_4.slang"
alias13 = "bloom_pass_final"
wrap_mode13 = "mirrored_repeat"
mipmap_input13 = "false"
filter_linear13 = "true"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/ambi_temporal_pass.slang"
alias14 = "ambi_temporal_pass"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
filter_linear14 = "true"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "96"
scale_type_y14 = "absolute"
scale_y14 = "64"
shader15 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/helper_pass.slang"
alias15 = "helper_pass"
wrap_mode15 = "mirrored_repeat"
mipmap_input15 = "false"
filter_linear15 = "true"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "128"
scale_type_y15 = "absolute"
scale_y15 = "128"
shader16 = "../../roms/shaders/koko-aio-slang-main/shaders-ng/final_pass.slang"
alias16 = "final_pass"
wrap_mode16 = "clamp_to_edge"
mipmap_input16 = "false"
filter_linear16 = "true"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
GAMMA_OUT = "0.350000"
DO_CCORRECTION = "1.000000"
IN_GLOW_POWER = "1.300000"
LUMINANCE = "0.200000"
TEMPERATURE = "7200.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "0.400000"
DECON_GX = "0.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_W = "-0.800000"
IN_GLOW_H = "7.000000"
DO_PIXELGRID = "1.000000"
PIXELGRID_OVERMASK = "1.100000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.700000"
PIXELGRID_GAMMA_H = "5.199999"
PIXELGRID_OFFSET_CORE = "0.120000"
PIXELGRID_H_PRST = "1.000000"
PIXELGRID_MAX_W = "0.400001"
PIXELGRID_GAMMA_W = "1.500006"
PIXELGRID_BASAL_GRID = "0.020000"
PIXELGRID_Y_MASK = "0.400000"
PIXELGRID_Y_MASK_COORDS = "0.000000"
PIXELGRID_Y_MASK_HEIGHT = "1.000000"
PIXELGRID_Y_MASK_SHIFT = "0.150000"
PIXELGRID_Y_MASK_STEEP = "1.000000"
PIXELGRID_Y_MASK_ON_WHITE = "0.000000"
PIXELGRID_Y_SPARK = "6.000000"
DO_HALO = "1.000000"
HALO_NO_PREGAIN = "1.000000"
HALO_POWER = "0.500000"
HALO_SHARPNESS = "7.000000"
HALO_GAMMA = "1.800000"
HALO_GAMMA_OUT = "1.300000"
HALO_VS_SCAN = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.400000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_POWER = "1.550000"
BLOOM_EYE_ADPT_SRT = "0.600000"
BLOOM_EYE_INERTIA = "750.000000"
BEZEL_USE_STRAIGHT = "1.000000"
BEZEL_FRAME_ZOOM = "0.200000"
BEZEL_REFL_STRENGTH = "0.370000"
BEZEL_DIFFUSION_STR = "0.150000"
DO_GLOBAL_SHZO = "1.000000"
GLOBAL_ZOOM = "1.000000"
DO_VIGNETTE = "1.000000"
V_SIZE = "1.080000"
V_SHAPE = "0.800000"
DO_SPOT = "1.000000"
S_POWER = "0.067000"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop;sideshade"
monitor_body_curved = "/roms/shaders/koko-aio-slang-main/textures/monitor_body_curved.png"
monitor_body_curved_mipmap = "true"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_straight = "/roms/shaders/koko-aio-slang-main/textures/monitor_body_straight.png"
monitor_body_straight_mipmap = "true"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
bg_under = "/roms/shaders/koko-aio-slang-main/textures/background_under.png"
bg_under_mipmap = "false"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_over = "/roms/shaders/koko-aio-slang-main/textures/background_over.png"
bg_over_mipmap = "false"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
backdrop = "/roms/shaders/koko-aio-slang-main/textures/backdrop.jpg"
backdrop_mipmap = "false"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
sideshade = "/roms/shaders/koko-aio-slang-main/textures/side_shade-helper.png"
sideshade_mipmap = "false"
sideshade_linear = "true"
sideshade_wrap_mode = "mirrored_repeat"
Regardless if I use monitor-balanced from presets-ng or presets_hiresgames_fast, the resulting saved shader is the exact same using the paths from presets-ng not presets_hiresgames_fast (I compared in winmerge). These are from main on gh, d/l’d 11/07/2025 if that matters.
Am I doing something wrong or is this a bug?
What do you mean by that?
I don’t know how winmerge works, but looking at the scale_x/y1, they seem to work as expected; since that parameter is 2.0 on “normal presets”, while turns to 1.0 on “fast” ones.
The fact that you are unable to spot a visual difference is actually a good thing; what about FPS?
Sorry, english is not my 1st language, I try to illustrate better below.
case 1) I open Monitor-balanced from koko-aio-main/presets-ng I do all my changes I save the preset
case2) I open Monitor-balanced from koko-aio-main/presets-hiresgames-faster I do all my changes I save the preset
The resulting shaders presets are identical Shouldn’t the preset made from faster directory have some things changed that “make” it faster?
Yeah, I understood that, but please double check for scale_x1 and scale_y1
I recreated the shaders as I outlined above and the resulting files are still identical, neither of which contain parameters scale_x1
scale_y1
there is only single occurence of the parameters in all shaders if I’m grepping it right
rp5:~ # cat /roms/shaders/koko-aio-slang-main/Presets-ng/*.slangp | grep scale_x1
rp5:~ # cat /roms/shaders/koko-aio-slang-main/Presets_HiresGames_Fast/*.slangp | grep scale_x1
// 720 pixel width and about 280p; this means that for P-UAE you can use scale_x1 = 1.0
scale_x14 = 96
rp5:~ # cat /roms/shaders/koko-aio-slang-main/Presets-ng/*.slangp | grep scale_y1
rp5:~ # cat /roms/shaders/koko-aio-slang-main/Presets_HiresGames_Fast/*.slangp | grep scale_y1
// and only scale_y1 = 2.0 is needed.
scale_y14 = 64
It seems this time you saved them as “simple” presets.
you can also verify here btw, this is a fast preset and scale is 1x, instead of 2x
Damn you’re right, sorry!
Ok I remade both presets, making extra sure to disable Save as simple toggle. And now the parameters are there.
right side is the faster preset. oh and winmerge is likediff
command with gui for windows.
I apologize for wasting your time, it was entirely a PEBKAC situation.
Look, you should usually prefer simple presets, because since they carries just changed parameters, they are more robust if the source shader is updated; also, they don’t preclude you from using the fast presets.
They will almost look identical to diffs, but they will reference a different “not upscaled to 2x” preset in the fast version.
If you will, you should create simple presets starting from a shipped one (read, saving as simple starting from a not-simple, will not work ofc)
Oh, thanks for the advice, I will try that.
I was just following the official Rocknix wiki https://rocknix.org/configure/shaders/ which states:
Step 3: Save your new shader preset¶
Select "Save" in the shaders menu.
At the top of the list, set "Simple Presets" to off. Then choose "Save Shader Preset As" and name the shader. Press the enter key on the on-screen keyboard to save the preset. Exit Retroarch normally via the hotkey preset, or by backing out to the main menu and choosing "Quit Retroarch"
I don’t know why they are suggesting that…
The faster presets are great!
At RP5’s resolution I can’t really tell the visual difference they both look fantastic, but the faster one holds 60 fps even when I let off a bomb in akai katana or deathsmiles which is where the normal preset usually dips to 55-57
that’s with the faster preset, even looking at the screenshot and screenshot of normal preset at 1440p desktop monitor I can’t really tell the difference.Since you’re in a tweak mood, please document yourself on “delta render” to spare battery juice, see docs-ng.md in the shader directory or online
Interesting,
so I copied the config-user-optional-template.txt
to config-user-optional.txt
and removed the 2 forward slashes from before #define DELTA_RENDER
that should be all that’s needed to enable it? Is there a way to confirm it is indeed enabled besides comparing power draw or something like that? Do I need to remake the presets?
Yeah, that’s perfect, you don’t need to remake the presets.
Just doing that will enable delta render with the default values.
On my rp5, I’ve the following for minimum power consumption:
#define DELTA_RENDER
#define DELTA_RENDER_FORCE_REFRESH 60.0 // Delta render force refresh interval.
#define DELTA_RENDER_CHECK_AREA 3.0 // Delta render area size.
…maybe 60.0 is a bit high; if an artifacts is present on screen, it may take a full second to recover, but I’m ok with that, you could try 10.0 or 20.0.
However, Delta rernder doesn’t play nice with high resolution content, because koko-aio presets swaps scanlines on every frame, so the screen content always changes.
On low resolution content I’m sure you’ll see a much improved battery consumption; puzzle games give the best gain, ofc, but i’m usually always getting more than 10hrs on low resolution content.