Handheld Border Shaders

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.

5 Likes

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 !

@prog-amateur1

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.

4 Likes

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

2 Likes

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

Hi, definitely, it seems to be a scaling issue : I have tried to play with Video filters (dmg-x2 / dmg-x3 / etc.) and shader scales (3 / 4 / 5) and I could have something sharper but too zoomed. Anyway, impossible to find the good combo. Given the fact that I have overheating in any shader scenarios, I think that just a simple overlay is wiser for battery and device longevity. I really thank you for your patience and kind help during this issue.

These shaders are not too heavy, but are not light either. How many FPS do you get in fast-forward with the DMG shader enabled for example?

Try your presets on another computer to rule out if it’s specific to your preset or if it’s a driver issue with the GPD XD.

New version using auto scaling made by nfp0, also a fix he found for GB shaders resizing at different scales.
Beware of that and don’t overwrite the old folder with the new one to avoid confusion.

The new scaling method allows to use only 1 preset file, and from Retroarch 1.11.0, it also gives a wider choice of multipliers.

-For shaders using the GameBoy style dot matrix (GB, GB Pocket, Super Vision), go to the “Shader Parameters” and change “Video Scale” to the multiplier size you want to use.
It can show some left over pixels when you downsize it, but go back to the main shader menu and do “Apply Changes”, that should refresh and clean it.

-For the other shaders using the LCD shader, after having it loaded scroll down to lcd-grid-v2.slang pass and change the scale that should be on 3 or 4x to any other multiplier size you want, then hit “Apply Changes” at that menu page top.

-The Game Gear shader is still using different files for different sizes as it is non square, and gives better results by letting RA handle that kind of resizing.

5 Likes

Yeah, since this update removes of a lot of now useless presets (and probably now incompatible too), it’s best to delete the folder and just use the new one. There should be only one preset of each. Different scale variants are not needed anymore.

I’ll add a fake parameter with a description on how to change scale on the LCD shaders so that users can easily change it.

1 Like
2 Likes

The gb-dmg-4x and gb-pocket-4x etc. are really the only shaders I have found that look like how I remember the GameBoy and GameBoy Pocket since they apply the dot matrix mostly to the content itself and not on the white/empty backgrounds.

Those shaders come with a border though. Is there a way to have only the shader and not the border?

The easiest way to do it is to just reduce the number of shader passes by 1 (the last pass is the one that adds the border)

1 Like