I changed directories as per the guideās instructions, and Iām directly in the Genesis-Plus-GX folder, but Iām still getting that error. Do I need to be in a subfolder or something?
Ok I needed to type it without the ādllā as hunterK originally instructed. Dunno why I did that, but it seems to have worked, let me test itā¦
It works, here you go guys - Genesis Plus GX - SG1000 (for Win64). Grab it before I decide to pull it.
(link removed, see post below with link to all the split cores)
Btw, for anyone wanting to do this, itās actually not that hard. Iām somewhat tech savvy, but I had no clue what I was doing going into this. Between the guide I was using, and hunterKās guidance, itās quite doable. None of what I did makes any sense to me - the terminology, the tools, the commands - but what needed done was not complicated to begin with.
Thanks hunterK.
eyyy, congrats, man!
Could you split the other systems? It would be nice since this core has had some nice updates lately. Congrats on your compiling!
Working on it as we speak.
As hunterk stated before, I do this as a one time service, and the link will not be up forever. The next time it needs updated, thereās enough information here for someone else to do what needs done, and share it with everyone.
GIve me about 10 minutes and Iāll make a zip with all of the Genesis Plus GX split cores, and everyone can just download that.
I installed and started fetching and following the building instructions earlier today, to share the split cores here, when I entered this thread to get Hunterkās instructions I saw you had already started the process, so I dropped it, next time, if I feel it needs updates, Iāll surely be the next one to build them.
Thanks again and all you guys involved.
Here it is guys. These are for Win64. If you need Win32, youāre on your own, sorry. I personally tested them - theyāre all updated to the latest core version, working, and with the same names as before (both filenames and core names), so all of your previous remap and core override files should work. Includes the newly created Genesis Plus GX - Sega SG-1000. Again, grab it while itās up. Iāll keep it up for a little while, but not indefinitely.
(Post edited, see below for updates)
These are cool, do you mind if I upload these over on the Launchbox forums for people over there since you have no plans on leaving these up indefinitely ?
Thanks man!
Iām hoping I can use these split cores for Master System so I can get the Sega Mark 3 games to pull up the proper BIOS (Instead of the US version)
I had it working on a seperate wheel using a seperate install of RA lol but I combined those wheels and havenāt gotten around to fixing it.
Itās a shame thereās not a way for it to tell the difference between the JP games and US games and automatically select the correct BIOS like the Mednafen Saturn core does.
I compiled a file to Sega CD and edited the info file. I have genesis_plus_gx_libretro.dll and genesis_plus_gx_scd_libretro.dll, but the option in RetroArch is the same for both.
What I have to change to RetroArch recognize like different cores?
The libreto.c file:
void retro_get_system_info(struct retro_system_info *info)
{
info->library_name = "Genesis Plus GX - Sega CD";
#ifndef GIT_VERSION
#define GIT_VERSION ""
#endif
info->library_version = "v1.7.4" GIT_VERSION;
info->valid_extensions = "bin|cue|iso|chd";
info->block_extract = false;
info->need_fullpath = true;
}
The info file:
display_name = "Sega CD (Genesis Plus GX)"
authors = "Charles McDonald|Eke-Eke"
supported_extensions = "bin|cue|iso|chd"
corename = "Genesis Plus GX - Sega CD"
manufacturer = "Sega"
categories = "Emulator"
systemname = "Sega CD"
database = "Mega-CD - Sega CD"
license = "Non-commercial"
permissions = ""
display_version = "v1.7.4"
supports_no_game = "false"
firmware_count = 3
firmware0_desc = "bios_CD_E.bin (MegaCD EU BIOS)"
firmware0_path = "bios_CD_E.bin"
firmware0_opt = "false"
firmware1_desc = "bios_CD_U.bin (SegaCD US BIOS)"
firmware1_path = "bios_CD_U.bin"
firmware1_opt = "false"
firmware2_desc = "bios_CD_J.bin (MegaCD JP BIOS)"
firmware2_path = "bios_CD_J.bin"
firmware2_opt = "false"
Thanks!
Think that is a side effect of running custom split cores. I know it from trying myself, I ran split bluemsx cores and had to modify the bluemsx_msxtype
to something like bluemsx_svitype
else when you change the machine type in one custom core it would change it for the other custom cores. So unless it become official, you need to either live with it or change it in the source code before you compile.
I havenāt messed with it in a while (about a year, actually :P) but I think you need to rename the core options in the split cores to make them not conflict.
Sure, thatās fine.
Glad you brought that to my attention, Iāll have to have a look at it myself.
Thereās always a ton of little things youād never think to configure when youāre setting things up initially.
I can confirm that changing an option in the quick menu for one split core affects them all, and that is obviously not ideal.
Iād like to do this right since itās already on my radar, and be done with it.
Can you give me some more details on what I need to do? What file needs altered, the libretro.c file still? Am I looking for a section called ācore options,ā and all of the fields simply need altered slightly? (for example, I could put initials in front of the respective cores like āggā for game gear)
Edit: These guesses were actually very close.
I think I found the the relevant section. I think it starts here in the libretro.c file:
/************************************
- libretro implementation ************************************/ unsigned retro_api_version(void) { return RETRO_API_VERSION; }
void retro_set_environment(retro_environment_t cb) { static const struct retro_variable vars[] = { { āgenesis_plus_gx_system_hwā, "System hardware;
So, what Iām going to attemp here is, to put an underscore, and then the initials of the system for all of these options (e.g. "System hardware_gg; ) custom cores.
This obviously makes this process a little more complicated, and Iām not sure if it will work or not, but Iāll give it a shot and post the results shortly. If it works, Iāll redo the cores and update them.
A useful tip (whether this works or not), in notepad++ you can ābookmarkā a line by clicking next to the number, then press F2 to skip to the next bookmark (shift+F2 for the previous).
What I will do is, copy the relevant section into a new tab, then put the _system name initials after each option name, then copy and paste it back into the regular file. Then I can just use āreplace allā to change the _system game initials in the new tab, and repeat the process for each split core.
Nope, my idea didnāt work. I changed System Hardware_gg = Game Gear (in the Game Gear split core that I altered) and it changed the setting for all of the split cores.
Iāll keep working on it, hopefully I can figure this out.
I believe Iāve figured it out, although it is more of a pain.
For someone trying to do this from scratch, open a retroarch game with the Genesis Plus GX core, and go into the quick menu/options, and find the names of the labels.
Edit: Iāve already done all of the legwork, here are the names of the labels:
System hardware
System region
System lockups
System bootrom
CD System BRAM
68k address error
Cartridge lock-on
Master System FM
YM2612 DAC quantization
YM2612/YM3438 core
Sound output
Audio filter
Low-pass filter %
Blargg NTSC filter
LCD Ghosting filter
Borders
Game Gear extended screen
Core-provide aspect ratio
Interlaced mode 2 output
Show Lightgun crosshair
Invert Mouse Y-axis
CPU speed
Remove per-line sprite limit
For example, System hardware. Open the libretro.c file in notepad++, and do a search for System hardware. (maybe do a ācountā also to make sure thereās only one). Once youāre where the label is, you should see something like this:
{ āgenesis_plus_gx_system_hwā, "System hardware;
All I did was alter it to this:
{ āgenesis_plus_gx_system_hw__ggā, "System hardware;
The reason I chose to use two underscores is, I specifically did a ācountā of _gg, and it came up 12 other times. So I wanted to change it to something unique, that way later on, I can do a find and replace all and only affect the altered fields. This will be a huge time saver.
But youāre still not done yet. the āgenesis_plus_gx_system_hwā links to another part of the file, and you need to now do a search for genesis_plus_gx_system_hw and find where it links. You should see a string of text that looks like this:
var.key = āgenesis_plus_gx_system_hwā;
I simply renamed it to this (to match the other one)
var.key = āgenesis_plus_gx_system_hw__ggā;
You will need to do this for all of the option labels, if you donāt want them to conflict with each other on each split core.
The good news is, since Iām having you use a unique edit (the __gg, that we previously made sure did not already exist in the file anywhere), all you will have to do is find and replace all instances of __gg with __sms for Sega Master System for example, when you go to compile the Sega Master System split core.
Again, always double check and make sure there are no instances of __sms before you do it (again, double underscore and not just single).
Iāll try to get this working on my end for all cores. I will not be testing it extensively, as I have better things to do. Iām doing this as a courtesy - if someone else wants to test them for me that would be much appreciated, and if I did manage to screw something up, Iāll fix it, this one time.
Nice seeing you figuring it all out by yourself, great achievements. For launcher users, like me, RocketLauncher will load the config files specifically for the split cores you created, provided you have created a new config file specifically for that core, it also creates a specific config folder once you save a game config file inside Quick Menu/Options.

Inside the folder for GPGX - SMS core you split for us, I have config for the Japanese titles, it will load the Mark III overlays only for those games, while the SMS for other regions will load the respective overlays for SMS.

Screenshots:
Inside config folder, the retroarch-core options is set to auto in genesis_plus_gx_system_hw = āautoā line.
It shows bios for all the supported systems I tested, I didnāt test SG-1000 though and I donāt know if this system has bios.