I Compiled Some Split Cores

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. :slight_smile:

(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.

2 Likes

eyyy, congrats, man! :smiley:

1 Like

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. :slight_smile:

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. :slight_smile:

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.

2 Likes

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.

3 Likes

Here it is guys. These are for Win64. If you need Win32, youā€™re on your own, sorry. :slight_smile: 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)

4 Likes

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.

1 Like

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. :slight_smile:

1 Like

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.

1 Like

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. :slight_smile:

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. :slight_smile:

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:

GG

SMS

MIII

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.

Genesis Bios screen:

3 Likes