Playing Homebrew Games Help

So basically Saroo is applying a game specific patch for any game it detects with the IP.BIN included in SBL and SGL? That's messed up. Any homebrew dev is going to run into an issue now just trying to test builds quickly with the included IP.BIN files in the SDK. We shouldn't have to worry about that. This is why taking the route of game specific patches to force things to work is a bad idea. You need to fix the underlying problem on Saroo instead.
 
Last edited:
So basically Saroo is applying a game specific patch for any game it detects with the IP.BIN included in SBL and SGL? That's messed up. Any homebrew dev is going to run into an issue now just trying to test builds quickly with the included IP.BIN files in the SDK. We shouldn't have to worry about that. This is why taking the route of game specific patches to force things to work is a bad idea. You need to fix the underlying problem on Saroo instead.
There is an unreleased game (Heart of Darkness)using this ID, this game needs to specify EXRAM to support it,So need ID information.

You can set up ID information such as gamename and version number when creating homebrew. If all homebrew uses the same ID, they will steal the backup memory card ID. These are parts that the original optical drive module does not need to consider
 
Last edited:
There is an unreleased game (Heart of Darkness)using this ID, this game needs to specify EXRAM to support it,So need ID information
It's not just extended RAM support, it's also having a patch applied to it which I'm seeing in the source code. Again just because the heart of darkness prototype used the generic SBL/SGL IP.BIN isn't my problem. You realize there could be other prototypes out there that did the same thing right? You can't just blindly patch shit in HWRAM based on that.

The patch you're applying for Heart of Darkness is in the middle of my main function and it's changing assembly code resulting in a crash.

You can set up ID information such as gamename and version number when creating homebrew. If all homebrew uses the same ID, they will steal the backup memory card ID. These are parts that the original optical drive module does not need to consider
Sure, and many of us do make our own IDs when we're ready for releasing something, but we also just use the generic included IP.BIN a lot when making simple test apps. That IP.BIN is not some special ID for a backup memory cart or RAM cart. It's just a generic placeholder value. We as developers shouldn't have to reference Saroo's patched list regularly to make sure we're not colliding with one of it's patches.

The problem here isn't the IP.BIN used, the problem is Saroo is applying patches to HWRAM as a shortcut to make a game boot instead of addressing the underlying problem causing the incompatibility. Even worse it's not even checking what it's patching before applying the patch to be sure it's patching what it should be patching.
 
Last edited:
It's not just extended RAM support, it's also having a patch applied to it which I'm seeing in the source code. Again just because the heart of darkness prototype used the generic SBL/SGL IP.BIN isn't my problem. You realize there could be other prototypes out there that did the same thing right? You can't just blindly patch shit in HWRAM based on that.

The patch you're applying for Heart of Darkness is in the middle of my main function and it's changing assembly code resulting in a crash.


Sure, and many of us do make our own IDs when we're ready for releasing something, but we also just use the generic included IP.BIN a lot when making simple test apps. That IP.BIN is not some special ID for a backup memory cart or RAM cart. It's just a generic placeholder value. We as developers shouldn't have to reference Saroo's patched list regularly to make sure we're not colliding with one of it's patches.

The problem here isn't the IP.BIN used, the problem is Saroo is applying patches to HWRAM as a shortcut to make a game boot instead of addressing the underlying problem causing the incompatibility. Even worse it's not even checking what it's patching before applying the patch to be sure it's patching what it should be patching.
SAROO‘s virtual internal backup memory card needs to generate storage space according to each game ID, so the game name and version number are required.

Heart of Darkness uses an unconventional EXRAM card, and cannot be run on real hardware without modifying the source code. Patching saroo can avoid players from downloading the saroo special version, like kof95, Ultraman and other games, players only need to download the regular version

SAROO is not strictly an optical drive emulator, because it integrates a BACKUP memory card and an EXRAM card. With the help of MCU, its processing power is more than 10 times that of SH2. More functions may be added in the future, so SAROO will encounter many problems that other ode devices will not encounter. However, considering that most of its users are ordinary players, not programming experts, the design direction will tend to be “simple”: we work harder and users are more convenient.

SAROO is not that scary. Once you set your ID, it will be a pure saturn space. It may have some shortcomings, but it is still being improved. As of today, it is only version 0.5. We hope it can attract you in the future.
 

Attachments

  • sssave.jpg
    sssave.jpg
    235.9 KB · Views: 0
SAROO‘s virtual internal backup memory card needs to generate storage space according to each game ID, so the game name and version number are required.

Heart of Darkness uses an unconventional EXRAM card, and cannot be run on real hardware without modifying the source code. Patching saroo can avoid players from downloading the saroo special version, like kof95, Ultraman and other games, players only need to download the regular version

SAROO is not strictly an optical drive emulator, because it integrates a BACKUP memory card and an EXRAM card. With the help of MCU, its processing power is more than 10 times that of SH2. More functions may be added in the future, so SAROO will encounter many problems that other ode devices will not encounter. However, considering that most of its users are ordinary players, not programming experts, the design direction will tend to be “simple”: we work harder and users are more convenient.

SAROO is not that scary. Once you set your ID, it will be a pure saturn space. It may have some shortcomings, but it is still being improved. As of today, it is only version 0.5. We hope it can attract you in the future.
This has nothing to do with backup or extended memory. Saroo is applying a patch to the game's executable to make it work instead of fixing the underlying problem causing the game to not work. The issue is that a patch is being applied. If I apply that same patch to my compiled demo the crash will happen on a disc, in emulators, and on satiator. The issue is the patching. The patching itself needs to either be done away with and the underlying compatibility issue fixed, or it needs to be improved to actually verify that what it's patching is what it actually should be patching.

It is not my responsibility to rework how a game or demo I made is built because Saroo is patching games and doing it poorly:
 
OK
If that's the case, you can completely ignore the existence of SAROO when creating Homebrew, and all development is based on Real CD block, Emulators, and on satiator
 
OK
If that's the case, you can completely ignore the existence of SAROO when creating Homebrew, and all development is based on Real CD block, Emulators, and on satiator
That's pretty much what I'm already doing, but when people inevitably try to run stuff I make on Saroo and it fails because of the flawed way it's trying to patch things I'm going to direct them to that exact issue and point out that it needs fixed on Saroo's end.

If you guys want this thing to be a serious ODE option you need to do it right and not take these sloppy shortcuts.
 
That's pretty much what I'm already doing, but when people inevitably try to run stuff I make on Saroo and it fails because of the flawed way it's trying to patch things I'm going to direct them to that exact issue and point out that it needs fixed on Saroo's end.

If you guys want this thing to be a serious ODE option you need to do it right and not take these sloppy shortcuts.
Saroo is an open-source product that we did not profit from, and its purpose is simpler: to provide players with the cheapest and simplest usage solutions.

For you, as mentioned earlier, labeling your homebrew with an ID means running it on an unpatched system, just like the two games (Utenyaa and SLIDEHOP)mentioned here.They are not patched. Because they have their own GAMEID.

Is patching reasonable?Let's conduct two experiments based on Satiator(or CDdriver and other ODE) and real saturn hardware:
First experiment:
1. Download IN THE HUNT (USA);
2. Set the clock of Sega Saturn to June 8th, 2024;
3. Run this game 2-3 times

Second experiment:
1. Download Die Hard Trilogy;
2. Insert the EXRAM4M card into the host and ensure good contact;
3. Run this game

What did you see in the above experiment?

For the design errors of the software itself, we solve them by patching to prevent ordinary players from being disturbed. Why not?

(Here is just an example. In reality, the virtual external memory card and EXRAM card of SAROO coexist:When using the CDdrive, you can manually unplug and insert the card to decide whether to insert a backup memory card or an EXRAM card. In older emulators, you need to choose which card to use in the settings bar, and SAROO will obtain the working status based on the GAMEID, which is the importance of ID. What if your homebrew needs to be stored on an external backpu memory card, but the ID uses an ID that requires an EXRAM game?)

Let's take a look at the mednafen emulator. Does it patch some games based on GAME ID?

You need a pure virtual CDblock System.
then
give Homebrew a unique GAMEID.
give Homebrew a unique GAMEID.
give Homebrew a unique GAMEID.
 
Saroo is an open-source product that we did not profit from, and its purpose is simpler: to provide players with the cheapest and simplest usage solutions.

That's fine but it's irrelevant to what we're talking about here.

For you, as mentioned earlier, labeling your homebrew with an ID means running it on an unpatched system, just like the two games (Utenyaa and SLIDEHOP)mentioned here.They are not patched. Because they have their own GAMEID.

The problem is the Product ID you are using for one of your patches is for a generic IP.BIN that was included with the SDK and therefore used in various other homebrew apps, demos, and probably other unreleased prototypes. It was a placeholder value for development purposes. Relying on it alone to do your patching is a flawed and unreliable approach.

Is patching reasonable?Let's conduct two experiments based on Satiator(or CDdriver and other ODE) and real saturn hardware:
First experiment:
1. Download IN THE HUNT (USA);
2. Set the clock of Sega Saturn to June 8th, 2024;
3. Run this game 2-3 times

Any bug with this that is not caused by your device isn't your responsibility to deal with. If your device is causing the issue then you should be fixing the issue on the device. If the game itself has a bug that prevents it from working after a certain date then release it as a patch for anyone to enjoy regardless of their ODE.

Second experiment:
1. Download Die Hard Trilogy;
2. Insert the EXRAM4M card into the host and ensure good contact;
3. Run this game

Die Hard Trilogy clearly isn't compatible with the 4MB RAM cart, so the proper solution here would be to remove the RAM cart. For Saroo you guys should be disabling it on the Saroo itself, not patching the game's code.

What did you see in the above experiment?

For the design errors of the software itself, we solve them by patching to prevent ordinary players from being disturbed. Why not?

You should be fixing them in passive ways that don't require you to actively mess with the game's code in memory. After the first boot file has been loaded and executed all memory in the system becomes off limits to you guys. It's the games and it has full control over it. You shouldn't be messing with it.

(Here is just an example. In reality, the virtual external memory card and EXRAM card of SAROO coexist:When using the CDdrive, you can manually unplug and insert the card to decide whether to insert a backup memory card or an EXRAM card. In older emulators, you need to choose which card to use in the settings bar, and SAROO will obtain the working status based on the GAMEID, which is the importance of ID.
The problem is the Product ID is unreliable. You can't just rely on that to decide whether or not to patch.

For determining what type of cart to use Saroo should work in a passive way like Action Replay and Pseudo Saturn Carts. They are able to work as both Backup RAM and 1MB/4MB carts without relying on checking the individual games. They just work by following the spec of the carts and behaving correctly when the games interact with them. If a specific type of cart is incompatible with a specific game, then that should be a setting the user sets in the menu to disable that feature on the cart itself. It shouldn't be something that the cart actively patches in the games running code to hide the issue.

What if your homebrew needs to be stored on an external backpu memory card, but the ID uses an ID that requires an EXRAM game?)
Then I'll interact with the cart the way Sega's spec says to interact with it. If your cart is passively behaving correctly and following spec it should work regardless.

Even if I use a unique game ID how will Saroo know what my game is to configure itself if you haven't programmed that new ID I just came up with into it? Do you see the flaw there? Your cart should instead just be behaving correctly and following the correct specs. If it requires a specific configuration that should be something the user configures instead in the menu before they boot a game.

Better yet, maybe instead of using the Product ID number in IP.BIN to determine what peripheral features need to be enabled in Saroo, maybe you should instead look at the Supported Peripheral Codes? You know if there's a W in there it means the game uses the 1MB or 4MB RAM cart. If there's an R in there it means it uses a ROM cart, X Means the Modem. If that section doesn't have any of those then you can probably just configure it as a Backup RAM cart instead.

Let's take a look at the mednafen emulator. Does it patch some games based on GAME ID?
To my knowledge no it doesn't patch anything in the game's code. For the Auto feature for Cartridges it probably uses the Supported Peripheral codes in IP.BIN.

You need a pure virtual CDblock System.
then
give Homebrew a unique GAMEID.
give Homebrew a unique GAMEID.
give Homebrew a unique GAMEID.
Or you guys could actually take some time to read the official documentation and come up with more robust ways to do this checking than relying on the Product ID number? Especially when one of the games you're patching is a prototype with no real Product ID number and therefore is using a generic placeholder one used for development purposes.
 
Last edited:
Blindly applying patches can lead not only to console crashes but also, if it's not your lucky day, to data corruption since it's possible to inadvertently trigger some code that can wipe memory areas, including in the system backup ram or on the cartridge.

The minimum would be to ask confirmation to the player when Saroo is going to patch a game.

Otherwise it's the equivalent of a player using some Action replay codes made for a game's region with the release of that game in another region on the ground that both games have the same name. Can and often will result in the same range of troubles.
 
Just to drive the issue home with why the Product ID in IP.BIN is not reliable, looking through dev tools and prototypes I've found the following that share IP.BINs and have the same Product IDs:

SG0000000:
Duck TrueMotion Test App from 1995
Solar Eclipse August 1995 Prototype
Astrocade 1994 Prototype
Doom September 1996 Prototype
Tempest 2000 May 1996 Prototype
Werewolf June 1996 Prototype

999999999:
Heart of Darkness Prototype
Atomic Runner Chelnov Prototype
Various homebrew apps and games over the past 20 years built with the GNU IP.BIN.

T-99901G:
Judgement Force Prototype
Machine Head May 1996 Prototype
Grid Runner April 1996 Prototype

If we keep digging we'll probably find more of these. This is why this isn't a reliable way to identify games, especially prototypes. The value in Heart of Darkness does not belong to it, it's simply a development placeholder for one of many IP.BIN samples Sega gave out to developers.
 
I did want to post an update to my original questions: I was able to get Slidehop to run after some trial and error (and learning). Also a couple other homebrews (I'm up to 5 now on my Saroo). Never did get Utenyaa to work on Saroo or Pseudo Kai? Can't figure that one out. Regardless, thanks for everyone's input.

I think the fundamental problem is that these homebrews aren't coming with install instructions. Wouldn't be an issue if the devs are using consistent means when dumping them on the site, and it's not easy for laymen like myself to glance at these and know what I need to do. I would suggest either creating a standard when dumping homebrews on the site so everyone can always know what they need to do to run the game, OR requiring the devs to indicate what method/means is required to make their individual games playable.

I imagine that given time, this will be easier to identify for myself, personally. However, I can assure you all that many other fans are downloading these and not getting them to run and then just giving up. I think it's a disservice to both the creators who want people to play the games, and the gamers who want to play the games. As I mentioned, there are simple fixes to this, however.
 
I did want to post an update to my original questions: I was able to get Slidehop to run after some trial and error (and learning). Also a couple other homebrews (I'm up to 5 now on my Saroo). Never did get Utenyaa to work on Saroo or Pseudo Kai? Can't figure that one out. Regardless, thanks for everyone's input.

I think the fundamental problem is that these homebrews aren't coming with install instructions. Wouldn't be an issue if the devs are using consistent means when dumping them on the site, and it's not easy for laymen like myself to glance at these and know what I need to do. I would suggest either creating a standard when dumping homebrews on the site so everyone can always know what they need to do to run the game, OR requiring the devs to indicate what method/means is required to make their individual games playable.

I imagine that given time, this will be easier to identify for myself, personally. However, I can assure you all that many other fans are downloading these and not getting them to run and then just giving up. I think it's a disservice to both the creators who want people to play the games, and the gamers who want to play the games. As I mentioned, there are simple fixes to this, however.
On my way out the door but I just tried both of these both on the Satiator and burned to a disc. Both worked just fine with no modifications needed. I downloaded them directly from the resources section and put them as is on the Satiator and burned them with ImgBurn to a CD-R using the included cue sheets. Both methods worked just fine.

As for your complaints about install instructions and devs not using "consistent means", it makes no sense to include install instructions because we don't install anything into the Saturn with homebrew apps. Secondly the homebrew in question is already in a consistent standard format, ISO/CUE. The other common one you'll find is BIN/CUE. Both of those have been around for decades and are well established. Just about every ODE under the sun can read them and just about any burning software can burn them just fine to a disc. If it's not working for you on a disc I'd suggest looking up a guide for burning Saturn games to verify you're doing it correctly. Also make sure you're using good quality CD-Rs. The cheap crap you get at Wal-Mart doesn't cut it for burning games for older systems like the Saturn.

So I don't know what you're doing but there's nothing wrong with the 2 Homebrew in question. And for the record there was nothing wrong with Utenya's Cue Sheet. Looking at the modified one posted my guess is Saroo isn't parsing Cue sheets correctly and got confused by the Post Gap between Track 1 and Track 2. The comment about "redump format" makes no sense here as Redump isn't even an official format.
 
Last edited:
I did want to post an update to my original questions: I was able to get Slidehop to run after some trial and error (and learning). Also a couple other homebrews (I'm up to 5 now on my Saroo). Never did get Utenyaa to work on Saroo or Pseudo Kai? Can't figure that one out. Regardless, thanks for everyone's input.

I think the fundamental problem is that these homebrews aren't coming with install instructions. Wouldn't be an issue if the devs are using consistent means when dumping them on the site, and it's not easy for laymen like myself to glance at these and know what I need to do. I would suggest either creating a standard when dumping homebrews on the site so everyone can always know what they need to do to run the game, OR requiring the devs to indicate what method/means is required to make their individual games playable.

I imagine that given time, this will be easier to identify for myself, personally. However, I can assure you all that many other fans are downloading these and not getting them to run and then just giving up. I think it's a disservice to both the creators who want people to play the games, and the gamers who want to play the games. As I mentioned, there are simple fixes to this, however.

Utenyaa not working on Saroo really does not supprise me. Outside of the disc image (which is as standard as any homebrew image can get), its the most non-standard homebrew game you can have. Written in latest c++ with modern compiler, custom workarea and other stuff, so even SGL things are not in the same place you would expect them to be, (which is probably what Saroo is trying to patch).
 
Back
Top