Kronos & Beetle: Sega Saturn Saves


#21

I also found this

https://ppcenter.webou.net/devblog/article86/wip-saturn-save-data-manager-pseudo-saturn-kai-usb-dev-cart-etc

http://ppcenter.webou.net/pskai/

It’s being developed for real consoles, but I think it might be useful for emulators as well. I shall investigate.


#22

I’m not sure i understand, are you still trying to insert your mednafen “Legend of Oasis” save to an internal Kronos save ? As i said that doesn’t work and that’s a different issue. But if you manage to insert it properly to the “ext512k” one it should work, because this game is clearly able to read/write from this external cart.

About the ss-save-parser, feel free to report to them that their project doesn’t work with Kronos (and probably YabaSanshiro & Yabause too since they appear to use the same save format to me).


#23

No, no… you missed a few things. The save parser works like a charm with many games (i.e. I have managed to transfer those saves to Kronos), that’s why I said it’s weird it doesn’t with Oasis and Zwei. And yes, of course I’m inserting the saves in an ext512k.ram file created by Kronos. That’s why I said that the container should be compatible.


#24

And how did it turn out ? What’s the size of the file after you insert it ? Did you try opening it with a hex editor to see if the FF are still inserted between each characters ? Actually could you post this file ?

Afaik, double size and FF between each characters are deliberate choices in the backup codebase since yabause, only kronos shrinked internal to 32K and that might actually be the error causing internal to not work with some games.


#25

Yeah that has been my point all this time haha. See, the parser understands yabause’s format just like Beetle’s, and also SSF’s ‘raws’. It saves the output file in the same format that was loaded, keeping whatever size the original container had and all the FFs. This is why many saves load perfectly well in Kronos, and why I don’t understand why others don’t. It can also extract the actual tiny saves (which are just a few hundred bytes in size) from any container.

Sure, check these out. I’m uploading a few saves. Castlevania and Guardian Heroes are working, Oasis and Zwei aren’t. They are all rams (created by Kronos by running the game) in which I inserted my saves from other emulators.

Saves


#26

ok, so actually the double size and FF are accurate emulation of the original hardware (it’s mentioned in https://assemblergames.com/threads/sega-saturn-ram-backup-parser.55945/). I also confirm kronos internal being 32K is actually wrong because FF are present. After talking with Kronos’s author, since there is no reason to keep those FF from original hardware, we’ll try to move to a format compatible with mednafen (so no FF and no double size).


#27

I see… well considering all those FFs are just garbage, your suggestion about moving to a ‘cleaner’ format like mednafen’s makes a lot of sense :ok_hand:, as long as it doesn’t take a lot of work. You might even want to use the same bcr/bkr container system, thus standardizing Sega Saturn saves in retroarch.


#28

The issue in your Legend of oasis savefile is that your save was inserted as if the file was an internal backup, offset for game data in external backup should be higher (0x809, while yours is at 0x309), and there shouldn’t be a “OASIS2__SYS Config” string starting at offset 0x109.


#29

Man that was fast. That save is from the beginning of the game, so it’s not like I need to fix it, but could it be done somehow? I read the saturn doesn’t really care about saves being in internal or external memory, and in fact with SSF you can simply copy files from internal to external and viceversa and it always works. That doesn’t seem to be the case for emulators that wrap saves in a container, particularly Yabause and its offspring. What about Zwei, can you see anything?


#30

Same issue with offsets that don’t match what kronos is expecting. Clearly kronos (and any other yabause fork afaik) doesn’t save the data at the same offset (nor exactly the same data it seems) for internal and external, it might be an error though, i would need to investigate more to be sure of it.


#31

Alright, seems like the fog is clearing! So I guess Guardian and Dracula are fine?


#32

Those are internal saves and the offsets match what kronos is expecting for those.


#33

Good, so the problem is definitely related to external saves being different then, as I initially suspected.


#34

Could you send me a bunch of mednafen saves too ? It would help testing compatibility.


#35

Absolutely, same games will do?

saves beetle


#36

With the latest commit, Kronos should be able to load mednafen saves. It still needs a manual copy though, i won’t implement direct loading of mednafen’s bcr/bkr without proper testing, and it’s probably something i won’t enable by default anyway (most likely i’ll implement a core option to enable this behavior)


#37

Awesome news, mate! We are almost there


#38

So you did more tests ? Is there any remaining compatibility issue ?


#39

Oh I did, sorry I didn’t report back! So by simply copying beetle’s saves and changing their extensions to .ram, everything I tried worked perfect. That includes Oasis and Zwei, whose saves I had previously made internal for mednafen.

Fantasy Zone sound is still broken, but I guess that’s a story for another day haha


#40

Yeah, I just tested copying from mednafen to Kronos\Saturn save folder and changing its extension to .ram and it’s working perfectly, I noticed the append “-ext512K”, something like Herc’s Adventures (USA)-ext512K.ram, is added to the external memory so if people run into issues with the external cart, make sure you add this to the save file from mednafen Saturn.

I also noticed that Shining Force 3 in battle scenes are being rendered almost perfectly now, with minor issues, did you fix anything apart from the save files?