Handheld Border Shaders

I updated the border packs with modified PNG to fix the strange transparency artefacts that were visible at several scaling sizes.
It’s not perfectly smooth but it gets rid of grey/white lines on consoles screen edges.


Hey folks. The default value for RETRO_PIXEL_SIZE is 0.84. How is this calculated? Wondering if it should be higher at 4K resolution.

2021-03-19: Remade GB-DMG/Pocket/Color shaders to display the complete consoles pictures.
New shader for Watara SuperVision (DMG and high contrast).


Added a new Atari Lynx border shader.


-Downsample Lynx shaders:
That poor console resolution is so low the lcd-grid shader was looking a bit too blurry.
Now using higher internal resolutions for the smaller presets.

-Reworked most shaders size presets:
x2 to x12 for many shaders now, more precise size steps.

(update: higher max scaling, tweaked Lynx a bit, renamed presets)

1 Like

Thank you for adding 8x shaders. The 6x start to look a little small at 4k.

This pack was one of my first shaders, thank you for keeping it alive!


Hey thank you for your hard work I really love these shaders. I was wondering if there was a way to keep everything but disable the pixel grid? I know it’s a weird request but I’d like to keep the overlay, the color correction etc. just without the grid lines between pixels (or reduce the spacing to 0 I don’t how it works internally).

You can edit the preset in a text editor and replace “lcd-grid-v2.slang” with “stock.slang” or anything you want.

Nice thank you, but this doesn’t seem to work for GB and GB Pocket. I can push the neighbor blending to 1.0 but will that mess up neighboring pixels or is it just the “thickness” of the grid?

1 Like

If you have a fairly decent PC you can try the Mega Bezel shader along with my presets. I have graphics and presets for all of the handhelds RA supports.

With the advanced presets you have a lot of choices and control over the Game Boy screen colors, apart from what LCD-GRID provides. (The shader has Dogway’s Grade integrated and you can layer another image over the screen using multiple blending modes.)

The advanced presets for the GBC and GBA allow you to change the color of the console body and all the advanced presets allow you to scale the screen.

For a really clean display, you can change the reference shader to Guest and turn of scanlines. (And masks if desired.)

Shader thread.

My graphics thread.


Has there been any workaround or fix for this? Now that melonDS core supports screen gap I wanted to use the DS-64 shader, but it completely messes the touch controls unfortunately.

Hello, I have a GPD XD and I tried to activate the shaders by loading the following (overlay disabled) :

  • shaders/shaders_glsl/handheld/console-border/dmg-4x.glslp
  • or shaders/shaders_glsl/handheld/console-border/gb-pocket-4x.glslp

but in addition to having the console overheating, I also have the following rendering :

As you can see, the borders are cropped and it’s dark and blurry compared to you beautiful shaders, it looks nothing like this. The issue is the same with Gambatte and Gearboy / Sameboy cores.

Given the overheating, I suspect that there are several options enabled or shaders passed too much. I really need your help given the fact that I struggle with this issue since a time now. I would like to know what you think please? thank you for your kind help !


For Game Boy shaders to work correctly, you need to set the aspect ratio in retroarch to match your screen. 16:9 for example, if you use a 16:9 display.

Furthermore, you need to make sure you have configured the core to disable any and all color correction or LCD emulation settings. You need to configure the core to output a raw image. The shader will apply its own color correction and LCD emulation, so if you also have those options enabled in the core, those effects will be applied twice, resulting in wrong color, wrong brightness and wrong LCD ghosting emulation.

The best way to handle the aspect ratio setting is to create a retroarch config override for the core.

For example if you use the SameBoy core, then first start a game, then go to Settings->Video->Scaling->Aspect Ratio and set it to 16:9 (or whatever your display is.) Then go back to the “Quick Menu”, select “Overrides” and then choose “Save Core Overrides”. This will create an override for just that core that forced aspect ratio to 16:9.

This override file will be saved in the core’s config folder. For SameBoy, the file is:

<retroarch folder>/config/SameBoy/SameBoy.cfg

You can edit it with a text editor like Notepad if you want to remove settings from it that you don’t want to get overriden or you can also add more by hand (if you know the name of the setting.)

For example, my SameBoy.cfg file looks like this:

aspect_ratio_index = "1"
input_overlay_enable = "false"
run_ahead_enabled = "true"
run_ahead_frames = "1"
run_ahead_secondary_instance = "true"
video_shader_enable = "true"

This forces 16:9, disables overlays (since I use a GB border shader instead of overlays to get borders), enabled run-ahead with 1 frame and second instance, and also enables shaders.

This is just an example. You can handle your override files however you want.

If you don’t want the overrides at all anymore, you can delete that file.

One thing to note about .cfg overrides is that the settings in them can get deleted by retroarch whenever you select “Save Core Overrides” in retroarch. It’s a good idea to either backup your .cfg override files or make then read-only.


Thank you very much ! The aspect ratio was the cause of my issue, now it is still a bit blurry, but much more similar as your overlays instead of the dark rendering I had before. I am really surprised about the overheating, maybe the GPD XD is not enough powerful to render the overlays without making too many computing.

No… I still have issues. This is the best I can do, as you can see, still blurry, not comfortable on a long game session, compared to your wonderful shader :

Mine :

Yours :

Definitely, there should have something wrong in my setup (I have tried different Video Scales in the shaders parameters). Or do you think my GPD XD can’t handle those shaders because it requires power (because my GPD XD is literally overheating, which is surprising as it is still a correct machine in terms of emulation and SoC) ?

Thank you for you kind advise


Are you trying to make your own preset to get a larger image? Post the preset file, maybe there’s something wrong in it.

1 Like

Thank you, you are right when you say that I have modified the shader parameters because the stock one gives the image I have sent at the beginning (very dark & blurry). Please find the glslp custom code, I am not sure if it is what you call the preset :

#reference "shaders_glsl/handheld/console-border/gb-pocket-alt-5x.glslp"
baseline_alpha = "0.170000"
grey_balance = "3.799999"
response_time = "0.329000"
adjacent_texel_alpha_blending = "0.150000"
contrast = "0.750000"
screen_light = "1.000000"
pixel_opacity = "0.900000"
bg_smoothing = "0.050000"
shadow_opacity = "0.300000"
shadow_offset_x = "-4.000000"
shadow_offset_y = "4.000000"

Otherwise :

  • I am on ratio 16:9 (Video > scaling parameters)
  • I have no Video filtering
  • color customization is set to OFF

Thank you!

Just to make sure it’s something in the shader rather than somewhere else, disable the shader. Does it still look blurry?

To disable the shader, just press space on the keyboard or start on the controller when the “Load” entry in the shaders menu is selected.

Also, instead of using the “gl” driver with glsl shaders, can you test if the “glcore” driver works and use slang shaders instead? Make sure you know how to revert the setting change in case RA refuses to start anymore when you switch from gl to glcore. I’m not familiar with your device. Usually you clear app settings to restore defaults.

Thanks for the advice. I can confirm that when I press Start in the Shaders > Load menu, I have a raw image in 16:9 format that is sharp.

And unfortunately, it seems that the GPD XD does not support the vulkan driver (it’s the only one I have other than gl: impossible to restart (black screen, frozen application), and I have to edit the retroarch.cfg file by writing gl back in order to restart the application.

I found an overlay which gives a nice rendering but it lacks shadows and I would like to know if I could make a workaround using this overlay and a custom light shader which would display only pixels + shadows but I don’t know if it is possible (I don’t know how to make those shadows). Thanks

Well, I’m out of ideas. Maybe check if integer scaling has something to do with it. Or maybe Settings->Video->Bilinear Filtering.

1 Like