How to use a different shaders/overlays for each systems?


You don’t need to do any editing of the info files or the source code. Those steps were for people trying to make their own split cores because I’m not going to do it again in the future.

I included the pre-edited info files in the zip. Just put them into your ‘core info’ directory and put the cores into your cores directory.

You can go to settings > playlists and associated a playlist with a core, such as gambatte-gbc, instead of doing it via text editor. it won’t be able to change it for games you have already loaded with a core, though, so you may want to delete your playlist and re-scan to have a fresh, unassigned playlist to work with.


Alright. I didn’t succeed. :frowning: (Am I dumb or what?)

I have my Nintendo - Game Boy and Nintendo - Game in my playlist folder. In my cores folder: gambatte_gbc_libretro.dll and gambatte_libretro.dll. I just copy/paste the gambatte_libretro.dll and rename it to gambatte_gbc_libretro.dll, nothing more. I set up my GBC playlist to launch with gambatte_gbc_libretro.dll (it appears with this name). I set up my GB playlist to launch with Gambatte (this name appears).

So I guess i’ve done something wrong. I haven’t touched any .info file, for the moment.


did you just rename the cores? That won’t work. It uses the core internal name not the filename.


Yes, just the core. so which file do I need to edit now? That’s where i’m lost no, Don’t know if I have to edit the .info, the .dll etc… Sorry for asking stupid question :frowning:


The cores that they posted are compiled with the name edited. You would have to do the same.


I’m sorry, I think that my English is not too good to understand. Right before, Hunterk told me i didn’t need to compile it again, and you seems to told me I have to do. I’m just lost to be honest. I have the feeling i’m drowning into a terrible mess…


The settings use the internal name of the core, so the workaround I use is to do a copy of the dll and do a hexedit in it to change it’s internal name.

It’s a f-ing hack job, but is working for me…

I use is this batch file to automate the process:

@echo off

REM Setting the paths
SET "RETROCOREFOLDER=E:\games\retroarch\cores"
SET "GSAR_EXE=Y:\Le\git\retroarch-cores\gsar.exe"

REM gsar website:

REM Removing the older modified files
del "%RETROCOREFOLDER%\genesis_plus_gx_libretro-cd.dll"
del "%RETROCOREFOLDER%\genesis_plus_gx_libretro-gg.dll"
del "%RETROCOREFOLDER%\genesis_plus_gx_libretro-sg.dll"
del "%RETROCOREFOLDER%\genesis_plus_gx_libretro-sms.dll"
del "%RETROCOREFOLDER%\mednafen_ngp_libretro-bw.dll"
del "%RETROCOREFOLDER%\mednafen_pce_fast_libretro-16.dll"

REM Replace  orig. internal name      new internal name                       original file                                      modified files
%GSAR_EXE% -s"Genesis Plus GX"     -r"Genesis Plus CD"     "%RETROCOREFOLDER%\genesis_plus_gx_libretro.dll"   "%RETROCOREFOLDER%\genesis_plus_gx_libretro-cd.dll"
%GSAR_EXE% -s"Genesis Plus GX"     -r"Genesis Plus GG"     "%RETROCOREFOLDER%\genesis_plus_gx_libretro.dll"   "%RETROCOREFOLDER%\genesis_plus_gx_libretro-gg.dll"
%GSAR_EXE% -s"Genesis Plus GX"     -r"Genesis Plus SG"     "%RETROCOREFOLDER%\genesis_plus_gx_libretro.dll"   "%RETROCOREFOLDER%\genesis_plus_gx_libretro-sg.dll"
%GSAR_EXE% -s"Genesis Plus GX"     -r"Genesis Plus MS"     "%RETROCOREFOLDER%\genesis_plus_gx_libretro.dll"   "%RETROCOREFOLDER%\genesis_plus_gx_libretro-sms.dll"
%GSAR_EXE% -s"Mednafen NeoPop"     -r"Mednafen NPopBW"     "%RETROCOREFOLDER%\mednafen_ngp_libretro.dll"      "%RETROCOREFOLDER%\mednafen_ngp_libretro-bw.dll"
%GSAR_EXE% -s"Mednafen PCE Fast"   -r"Mednafen PCE Fa16"   "%RETROCOREFOLDER%\mednafen_pce_fast_libretro.dll" "%RETROCOREFOLDER%\mednafen_pce_fast_libretro-16.dll"


With this, I have a custom config for Sega CD, Game Gear, Master System, Neo Geo Pocket BW and PC Engine/TurboGrafx 16.

PS: Be cautious on the new name, because it need to have the same number of chars than the the original name.

Due to be my first post, my post have been send for moderation. The first time I didn’t noticed the message, so I wrote a second time with additional content, but the second post is not approved yet, so I’m editing this post with the rest.

Now I have my playlists like:

\playlists\Sega - Mega Drive -

roms\Sega - Mega Drive - Genesis\some
Some Rom Name
Sega - Mega Drive -

\playlists\Sega - Mega-CD - Sega

roms\Sega - Mega-CD - Sega CD\Some ISO.cue
Some ISO Name
Sega - Mega-CD - Sega

And this is my custom configs/overlay:

\config\Genesis Plus GX\Genesis Plus GX.cfg

menu_wallpaper = ".\assets\wallpapers\bichromatic pads\1440x900\Sega - Mega Drive - Genesis.png"
input_overlay = ":\overlays\nosh\Sega - Mega Drive - Genesis.cfg"

\config\Genesis Plus CD\Genesis Plus CD.cfg

menu_wallpaper = ".\assets\wallpapers\bichromatic pads\1440x900\Sega - Mega-CD - Sega CD.png"
input_overlay = ":\overlays\nosh\Sega - Mega-CD - Sega CD.cfg"

[Batch File] Core Splitter (Windows | Android)

Thanks le_el. But before to go further, with hexedit, batch and other stuff which need to have a phd in IT, i would like to summarize:

I have my Nintendo - Game Boy and Nintendo - Game in my playlist folder. In my cores folder: gambatte_gbc_libretro.dll and gambatte_libretro.dll. I’ve duplicate my file to And I edited the two:

display_name = “Game Boy Color (Gambatte)” authors = “Sinamas” supported_extensions = “gbc” corename = “Gambatte” manufacturer = “Nintendo” categories = “Emulator” systemname = “Game Boy Color” database = “Nintendo - Game Boy Color” license = “GPLv2” permissions = “” display_version = “v0.5.0” supports_no_game = “false”


display_name = “Game Boy (Gambatte)” authors = “Sinamas” supported_extensions = “gb|dmg” corename = “Gambatte” manufacturer = “Nintendo” categories = “Emulator” systemname = “Game Boy” database = “Nintendo - Game Boy” license = “GPLv2” permissions = “” display_version = “v0.5.0” supports_no_game = “false”


You don’t need to touch info files at all other than to get the nice name on Load Content


So I delete the and keep only one, the I’m really sorry, but i’m lost. Edit: in the “I Compiled Some Split Cores” thread, the folder contains some edited info files, that’s why i did it.


The way I do, I don’t change any info at all. Basically you would need to:

  1. Remove the copy of the core dll, just keep the original one;

  2. Go to the folder \config of your retroarch and copy the name of the folder of the core you are going to make a copy (in this case “Gambatte”);

  3. From the url I posted earlier, grab the zip binaries and extract the gsar.exe to the \cores folder;

  4. Open a command prompt on the folder (on recent windows explorer, shift + right click on a empty space to the option show up on context menu);

  5. On the command prompt run: gsar.exe -s"Gambatte" -r"GambatBW" "gambatte_libretro.dll" "gambatte_libretro-blackwhite.dll" Notice that the “GambatBW” have 8 chars, the same amount as “Gambatte”;

  6. Go to \config and make a copy of the folder Gambatte and save as GambatBW;

  7. Inside \config\GambatBW rename also the Gambatte.cfg to GambatBW.cfg;

  8. Now select your game and chose the core Game Boy / Game Boy Color (Gambatte) for Game Boy Color, and the gambatte_libretro-blackwhite.dll for the Black and White. And on the retroarch ui you can change the settings as you like and then use the Quick Menu > Save Core Overrides, to save the changes to that core.


Trust me, I appreciate your help, but i haven’t anything in /config exept the “remaps” folder.


I’ve tried something else before trying your hint le_el.

My playlist for Game Boy game is launched with Emux. My playlist for Game Boy Color game is launched with Gambatte.

I launch a GB game, apply the grid shader for playing with some realistic game boy plastic bezel and urinal colors. Apply shaders, then save to core.

Did exactly the same with the GB color game, with the GB color bezel.

So I use 2 differents emulators, so basically 2 differents configuration, but still the same issue: my GB color games are launched with the GB yellow grid, and vice versa.

Of course I want to find a solution, but I want first to understand what i’m doing wrong there. I need to understand, if not I will never learn anything and I will do the same mistake again!

Don’t misunderstood guys, i’m not complaining about the difficulty, I just want to avoid to go in 1000 directions, and try to keep as simple I can my issue, and find a simple answer. No offense please! :slight_smile:

Edit: something weird. I installed some others emulators, and they launch everytime the game boy color shader/bezel even when I disabled it and save to core.


Yeah, actually, it took me like a while to me completely configure the appearances the way I liked too. The configuration part is a pain, but after that I found retroarch really awesome.

Just to be sure, on Configuration > Configuration > Load Content-Specific Core Options is set to ON?

After that, every time you enter a game and then go Quick Menu > Save Core Overrides, a folder with the core name should be saved in \configs. And with that option enabled, it should automatically load the overrides whenever you load that core.

Maybe the problem may be in the specific order to do the things?

  1. Without any core loaded, remove the overlays/shaders you are using. In this step make sure to it NOT be using the ones you actually want. *

  2. Configuration > Configuration > Load Content-Specific Core Options set to ON

  3. Main Menu > Configuration > Save Current Configuration

  4. Load the Gambatte core and select a game (this time it should NOT be using the overlays/shaders you want)

  5. Press F1 and change the overlays/shaders you want. After that, Save Core Overrides.

  6. The changes should be saved to the configs/Gambatte/Gambatte.cfg file.

  7. Load the Emux GB core and select a game

  8. Press F1 and change the overlays/shaders you want. After that, Save Core Overrides.

  9. The changes should be saved to (probably) the configs/Emux GB/Emux GB.cfg file.

  10. Load the Gambatte core and select a game, it should be auto-loaded the configs set on step 5.

  11. Load the Emux GB core and select a game, it should be auto-loaded the configs set on step 8.

* The Save overrides, only save what is different from the default config, so if you set a GB overlay on the default settings, the GB overlay will not be saved in the core override file, for example.


Personally, between steps 2 and 3, I also change Configuration > Configuration > Save Configuration On Exit to OFF, so the default settings only get saved when I manually go to Main Menu > Configuration > Save Current Configuration.


Once again, I really appreciate your help.

First of all, on a brand new fresh install, Load Content-Specific Core Options is OFF. So I will turn it into ON.

Then, I probably found why it’s not working!

When I follow the step by step tutorial you write for me, I have an issue with Emux: I load this core, then select a game by navigating into my game’s folder (not using the playlist), and each time… BOOM! Gambatte is launched everytime! This fuc***g core is not lauching properly! Why when I load emux, I have the Gambatte core launching? That’s why I can’t save my preset! This is a bug or what? (It’s a fresh install of Retroarch, btw).


This is strange. Personally, I never used the Emux GB, but I just tried and the major trouble I had was to find out that I would need the DMG_ROM.bin file in the rom folder to make it work (but it didn’t fallback to Gambatte, it just gave a error message).

Maybe you could try a core from a different console/system, just to see if you get the auto load config working.


If you launch a game from a playlist and then choose the core you want to use on that first launch, it will try to use that core from then on. You’ll have to delete the playlist and rescan to get rid of the association.

Instead, once you make a playlist, go over to settings > playlists and associate the playlist with a core there and you can change it to something else from that same menu.


Alright guys, it seems to work now! I’m using two different cores and it works. I’m not using the “save core preset” option, but instead i’m using the “save to overrides” option, but I don’t understand the difference between this 2 options to be honest…


Just a quick note about this option - while ‘Save Core Preset’ does indeed cause the right shader to be loaded for each core, if you then go into the Shader menu, it shows the last shader selected, rather than the actual shader being used.


Can’t find this any where Will this work on retropie on a raspberry pi3 b running the newest version on retropie