Duimon koko-aio Presets


Duimon koko-aio Presets

Presets for the koko-aio shader project, derived from graphics created for use with the HSM Mega Bezel Reflection Shader.

This project is an attempt to provide end users with high quality art and ready to use OOTB presets for the wonderfully performant shader by kokoko3k.

The shader discussion and updates page is at:


The initial release includes 93 CRT systems, with handhelds forthcoming.

For those of you familiar with my Mega Bezel project, things will look very familiar. There are three different bezels included initially.




And a few presets that use a frame-less bezel.


@kokoko3k’s shaders are able to run on much less performant devices and I am thrilled to provide users with this option.

That being said, I have had to learn a great many new tricks to get things to this point. The necessarily limited feature set (It is what make it fly. :grin:) has proved challenging. (But also very fun!)

Downloading the Duimon-koko-aio pack.

My graphics and presets can be individually downloaded via My GitHub repo.

The entire package can be installed using the latest release zip.



The koko-aio shaders are bundled with RetroArch, although you may have to update your slang shaders if you are using an older version RetroArch.

Installation using the release zip

The folder structure is…


An example presets folder and contents is…


Some Retroarch installations (Linux) have the “shader” folder outside of the root Retroarch folder. The preset paths are relative so the “shaders” folder can be anywhere (On any drive/mount.) as long as the correct shader path is defined in the Retroarch settings.

Unpack the release zip and move the newly extracted “Duimon-koko-aio” folder to “Retroarch/shaders/”. (Or where your shaders folder is defined in the settings.)

To update, delete the “Duimon-koko-aio” folder and repeat the previous steps. (If files were renamed in an update it could leave unneeded files or broken presets.)

Installation using git

You can install everything to a local clone and update using the following method.

  1. Install Git. https://git-scm.com/downloads using the default settings.
  2. Enter the “/Retroarch/shaders” folder and from the command-line run:
git clone --depth 1 https://github.com/Duimon/Duimon-koko-aio

It will create a “Duimon-koko-aio” folder inside the “shaders” folder.

* * Note * *

I added the “clone --depth 1” switch to the git installation method. This will avoid having to download two copies of the Graphics folder. (Since they have all been updated since the initial release.)

To update, go into the “Duimon-koko-aio” folder (note the path difference) and run

git pull

Load your content and then a preset. I recommend creating a core preset next.

If you are using a multiple system core, and using it for multiple systems, I recommend creating a content directory preset.

This pack is using a custom minimal boilerplate that makes it easy to select from 25 of koko’s base presets, and apply local and global overrides for custom settings across each preset class.

I took pains to insure that the comments in the presets were self explanatory. If you need more guidance please read the “Boilerplate Introduction Guide” in my Mega Bezel repo.


* * Notes on preset use requirements. * *

Aside from the core settings for dual screens…

(See this post about the latest update for information on these settings.)

…there are some additional Retroarch settings that are required for these presets. (And the koko-aio shader in general.)

I’m sure they are in the notes n the main shader thread, but I will list them here as well.

  • Retroarch video aspect must be set to “Full” (This is true for all “Border” shaders.)

  • “Allow Rotation” needs to be “ON” in the “Retroarch Menu>>Settings>>Core” section. (Unlike the Mega Bezel.)

  • MAME Current needs to use “Libretro” rotation.


Great, I missed the handheld consoles, I’m glad they can finally be added in the future.

I didn’t want to clutter the first post too much, but I wanted to mention that Night presets are also included…

…which leads to the first of many expected bug fixes.

As I said, I have had to learn a great many tricks to work within the strict boundaries of an unfamiliar shader.

One of which is that the auto vertical that @kokoko3k has integrated rotates the bezel, including the inner bezel shading.

To compensate, I created 90 and 270 degree shaded bezels and used the $CORE-REQ-ROT$ wildcard to automatically select the correct version for each rotation. (On presets for arcade systems.)

Somewhere along the line something was misplaced… as you can see by these Night preset shots.

Before the fix.

(Notice the very dark inner bezel.)


(All is better now. :grin:)

Unlike the Mega Bezel night presets, these are simply colored using a sample from a Mega Bezel night shot. I think they look pretty good. :innocent:

The repo is updated and a release will follow as soon as I verify that the frame-less bezels don’t suffer from the same bug.

1 Like


* * * The repo and release are updated to v0.5.0.1. * * *


  • Updated all default and no-frame bezel images.

The link to the current release and installation instructions are in the first post.


OK… so I tried these presets on my Ayn Odin2 Pro… and they run great!

Bad news is that on some systems there are weird artifacts in the graphics.

It could be an issue with the android version of Retroarch and how it handles JPG images, or it could be an issue with the hardware graphics driver.

In either case I am not happy with the results. Rather than praying that some random update will fix the issue, I am leaning towards using PNG instead of JPG. (I already verified that it will fix the issue.)

This will result in the Graphics folder size going from ~141 MB to ~556 MB.

Certainly not ideal, but since the target audience for these presets may contain a great many Android users, I don’t want to let it ride.

Feel free to comment. I won’t be doing an update immediately.

1 Like

for jpg images, raise the black level a bit :wink: for android.

Late edit: yeah, as you noticed, pure blacks don’t play nice on jpgs on android.

1 Like

OK… I can do Brightness, Contrast, or Gamma… Or Lightness in HSV.

So when you say “raise” do you mean “increase” the black level so it is darker, or “decrease” so it is lighter?

Edit: In another batch editor I can adjust the levels so I could raise the black color so it is darker or raise the black output so it is lighter. Which do I raise?

Edit2: I took the second option and it seems to have solved the issue. That still means that the size of the download data for using git will increase by roughly 141 MB. I will add the “–depth 1” switch to the git clone method in the installation section.

Thanks @kokoko3k for the info.


* * * The repo and release are updated to v0.5.0.2. * * *


  • Raised the black level of all the background images to accommodate Android issues.

The link to the current release and installation instructions are in the first post.


Missing option Super Famicom Alternative (Snes Euro) :slight_smile:

Doh! You are correct. The graphics are there but I forgot to create the presets. :frowning_face:

I’ll include them with the next larger update.

Thanks for the heads up!


* * * The repo and release are updated to v0.6.0.0. * * *


  • Added all the handheld presets.

  • Added the GCE Vectrex, the “Monitor”, the Generic PDP-1, and the two sets of PVM presets.

  • Added in the missing Super Famicom Euro alternate.

  • Developed global automatic handling of the frame buffer flipping issue. (With the gracious help of @HyperSpaceMadness.)

The link to the current release and installation instructions are in the first post.


Here is a little more info about the release.

First off, the CRT presets were pretty easy to create. Once I had presets for a single system I used search and replace tools to create the rest. (I intentionally used the folder names for the graphics, presets, and params. This allowed me to use special rational expression variables in my search and replace. :grin:)

The handheld presets however, required creating them one at a time and manually editing each preset. :partying_face: This includes naming of params files.)

It was worth it though. :grin: Here are some shots.


Unlike other popular standalone shaders, @kokoko3k’s awesome “Dot Matrix Emulation” doesn’t require any specific core palette, as it doesn’t use a LUT for coloring.

The ability to individually select the hue for the two colors also lets you mimic other displays…

…for example.

SEGA Dreamcast VMU

Aside from the Gameboy type screen emulation, koko also has base presets for other handhelds.

Gameboy Color

Gameboy Advance

For the rest of the handhelds I used a combination of these three base presets, with a little tweaking.

Most of the “Monitor” presets don’t have a reflection, I just turned off the bezel generation like the handhelds and used a background that had the bezel.

I did create four new custom bezel images for use in some systems.

Nintendo Wii

This uses a version of the default bezel without a frame. This bezel was included in the initial release.

Acorn Archimedes

This uses a version that has more rounded outer corners.

Sharp X68000 Expert

The Sharp X68000 presets are near and dear to me, so I had to create a bezel for them. The monitor is shared by the Sharp X1.

Ikegami TM20


The two standalone PVM sets also have their own custom bezel. Due to restrictions of the shader I did have to reduce the bezel width on the TM20 so it doesn’t perfectly reflect my Mega Bezel presets.

In all (Including tweaked versions of Photoshop ported versions of the shader’s default bezels.) I have created 31 custom bezel images. (Some are just alternately shaded versions so they look correct when rotated for vertical games.) I have presets that I use with built-in Mega Bezel tools and Photoshop specific methods that have extracting custom Mega Bezel bezels down to a science.)

Other special cases include the dual screen systems. For these I used overlays and set the background to be “over”.

NDS Horizontal

NDS Vertical

The NDS presets each require different core settings. They work with either core and the required settings are included in the name of the presets.


For the 3DS I used overlays I designed for the standalone emulator in Batocera.

3DS Vertical

3DS Horizontal

The preset names also contain the required core settings.


With the exception of a very few systems (e.g. Nintendo Virtual Boy, Arduboy, etc.) all the handhelds have at least one local override for the base preset. Most often it is a choice between my default selection and either the “GameboyAdvance-Overlay.slangp” or the “Generic-Handheld-RGB.slangp” presets. The Gameboy type displays have a choice between the “GameboyPocket.slangp” and the “GameboyMono.slangp” base presets.

The comments in the presets explain how to use the overrides or when there is an exception and no override is available.

Presets use requirements.

Aside from the core settings for dual screens, there are some additional Retroarch settings that are required for these presets. (And the koko-aio shader in general.)

I’m sure they are in the notes n the main shader thread, but I will list them here as well.

  • Retroarch video aspect must be set to “Full” (This is true for all “Border” shaders.)

  • “Allow Rotation” needs to be “ON” in the “Retroarch Menu>>Settings>>Core” section. (Unlike the Mega Bezel.)

  • MAME Current needs to use “Libretro” rotation.

I will add these requirements to the first thread, along with a link to this post.

Some Feedback Please!

I do need the community’s opinions about a few things as I move forward.

  1. This update raises the release size from ~100 MB to ~400MB. Now that I have PVM20 and TM20 custom bezels I could add these versions to the CRT presets.

Archimedes-[STD]-[Guest]-[TM20] example from my Mega Bezel presets for those who are unfamiliar.

I am guessing that it would raise the repo size by at least ~30 MB, but that is just a wild guess.

Is this something you want?

  1. Within the restrictions of the shader (No bezel outer curvature, and maximum inner bezel height/width.) I could create custom bezels for more of the “Monitor” presets so they have a reflection.

Same question… is this something you want?

Depending on the answers to the above questions, and probably some bug fixes as you guys report them, I am pretty much done with this pack. I will add to the presets as I do the same to my Mega Bezel pack, and probably create a guide specific to this boilerplate.

I hope you have as much fun using these presets as I had creating them. :partying_face:


I definitely won’t mind. This is great work @Duimon including the work and the look of the screen presets!

We’re really spoiled for choice when it comes to shaders these days. I’d love to see things keep evolving, you might even be able to fake or bake-in (pre-render) some more of the Mega Bezelesque effects if you’re not fully satisfied with what the real-time engine has to offer with this shader.



Yep. All the “Night” presets and most of the “Monitor” presets are using baked in effects. It also composites any separated graphics so I don’t have to manually do it. (Although I had to do that in the past before some MB features were added.)

The built-in tools for artists is one of the things that sets the Mega Bezel apart from other shaders.

Thanks for the feedback!


You’re welcome.

It’s just so weird that I’m feeling a sort of compulsion to start working on some presets for this shader even though I’ve already gotten decent enough results with others.

I’ve always admired its efficiency and the out of the box approach of @kokoko3k in solving some of CRT shaders’ common problems.

I do want to take a rest from all the tweaking and just enjoy playing some games though but I doubt I’d be able to help myself even if I tried to stay out of the Parameters menu.


Yeah. I think the community just has to dig in a bit more on this shader. It has some low level control over phosphors, and uses some really unique methods. In many ways I think it is more capable of emulating vintage systems than any other shader. But I am no expert at that kind of thing.

I’m sure there will eventually be a thread dedicated to custom presets. Which is why I went with boilerplate features that can use them when that time comes.


I have been playing with the ambient lights parameters. I already have an override that enables them and forces them to show on the background. Turns out that “nightfying” everything and tweaking how much the lights show on the bezel produce an even better effect.

I will be adding a global override that can be set for each of the “bezel” sets, and an equivalent local override within the presets.

It is designed to work with “Day” presets.


Somehow the light color does not seem to reflect the content, maybe you pushed it on purpose?

There is also this parameter that changes the light blend mode:
Back/Foreground image alpha blend (0=mix, 1=add)

Yeah I’m using that. I’ll take a look at the ambient light settings, maybe reset them and start over. It may have something to do with the ambient “speed”, or position. I think it looks more accurate while you are playing the game.

Here are three shots of the current override.

I think it echoes the color of the content pretty well.

I’ll double check the sampling position for the ambient lights.


Hi Duimon, it was perfect. Excellent work, today I’m going to play a little with this collection. Congratulations.