Coder Social home page Coder Social logo

slinga-homebrew / save-game-copier Goto Github PK

View Code? Open in Web Editor NEW
47.0 7.0 8.0 1.96 MB

Copy Sega Saturn save game files

License: GNU General Public License v3.0

C 98.10% Batchfile 1.11% Shell 0.23% Makefile 0.36% PowerShell 0.20%
sega sega-saturn joengine savegame save-game satiator mode

save-game-copier's People

Contributors

slinga-homebrew avatar terraonion-dev avatar tjanas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

save-game-copier's Issues

Target device is full

As was mentioned in a previous ticket Jo Engine does throw an error if the target device is full. Perhaps instead of blue-screening we could have a message pop-up that "Target Device is full, cannot copy save". Kind of getting into the weeds of just QOL changes, which is awesome :)

Satiator Doesn't Exit to Multiplayer with AR Cart

When a flashed AR cart is used, the "Exit to Multiplayer" option crashes the Saturn. The simplest fix would be to call SatiatorExit() before calling ExitToMuliplayer() but that doesn't seem to work.

SGC does not backup save file COMMENTS. It replaces them with SGC. Backing up comments is VITAL!

I've noticed that SGC ignores comments. Not only do those comments help identify what the save data is for, but many games use it. For example, on Sim City 2000, the name of my city was changed from JoeVille to SGC. In Policenauts, the comments are used to tell the game and the player the chapter and amount of time as been played up to that point. Now when I try to load a game, all of my 10 save files say SGC. As a result, the game thinks that each save file is the same. despite me having plenty of saves in disc 1 and 2, the game always asks me to insert disc 3 no matter which one I select. Kind of game breaking.

Again, the comments are vital and absolutely essential. Very, very, VERY important!

Add a backup/write option for cart firmware.

It would be nice to have a way to dump the cartridge firmware/rom and/or write it to an external device (such as MODE for example); some rare cartridges have yet to be dumped.

Create Labels for Button Functions?

Would be nice to see an "A" button to proceed "B" to return option at the bottom. It is fairly intuitive as-is, but it will just help for new users to navigate.

I got error message of "Failed to copy the save ,Possibly due to a lack of space."

I have played falcom classic2 in mednafen emulator,But A few days ago,I feel like to play falcom classic2 in my japanese saturn from savestate of mednafen emulator.
So,I extract raw save data from bkr extension file of mednafen emulator.(I use ss-save-parser 0.96 of below link in order to extract raw date from bkr file)
ss-save-parser 0.96

I converted raw save data file to BUP file and verified that it is correct BUP file by running below command in Windows CMD commands
python3 bup_parse.py --input_bup falcom_c.BUP
I add this bup file to SGC ISO with Winiso and Burned this SGC ISO with imgburn.
I inserted this burn disc into cd tray of japanese saturn and got into Save game copier menu.
I selected CD file SYSTEM and select falcom_c.bup file from list But it display below screenshot of
"Failed to copy the save ,Possibly due to a lack of space."
Error message of Save game copier
I don't have action replay or any other external cartridge ,I only use internal memory which is maintained by CR2032 battery..
Is there any ways to copy my savedata from mednafen into internal memory of japanese saturn?

For your information below link is BUP file which I tried to copy it into internal memory of saturn.
https://www.dropbox.com/s/30hnoktnlcqgxq7/FALCOM_C.BUP?dl=0

any reply would be appreciated.

Extracted save copied back is not working.

I extracted a Dragon Force 2 save (this game has an English patch applied), ran the python script from Save-Game-Extractor, I did this twice. I have not tried copying any other games yet.

@ubuntu3:~/Save-Game-Extractor$ python3 sgex.py mysave.bin
Save Game Extractor
(github.com/slinga-homebrew/Save-Game-Extractor)

Errors Corrected: 4
Transmitted Filename: DF2_DATA_01
Transmitted Save Size: 8636
Transmitted MD5: 883bd16501990a5c3cbef12f6f01309d
Computed MD5: 883bd16501990a5c3cbef12f6f01309d

MD5 hashes validate, save is correct.
Wrote save game DF2_DATA_01 to disk

@ubuntu3:~/Save-Game-Extractor$ python3 sgex.py df2.bin
Save Game Extractor
(github.com/slinga-homebrew/Save-Game-Extractor)

Errors Corrected: 2
Transmitted Filename: DF2_DATA_01
Transmitted Save Size: 8636
Transmitted MD5: 883bd16501990a5c3cbef12f6f01309d
Computed MD5: 883bd16501990a5c3cbef12f6f01309d

MD5 hashes validate, save is correct.
Wrote save game DF2_DATA_01 to disk

I compiled a bin+cue with the converted save DF2_DATA_01 twice and used Save-Game-Copier to copy to the internal memory.

https://imgur.com/a/BiSKHv8

File copied to the internal memory via Save-Game-Copier.
https://imgur.com/a/jddTISd

This is what it looks like on my cartridge which is where I extracted the save using Save-Game-Extractor.

https://imgur.com/a/5yEYeKK

This what the file looks like that has been copied by Save-Game-Copier.

https://imgur.com/a/n11xYm3

I go into the game and there is no save file.

https://imgur.com/a/P1CKCqs

saturnReadSaveFile() is recieving a Filename ending in .BUP

saturnReadSaveFile() is receiving a filename ending in .BUP instead of the savename. This seems to be safe for maximum character save names as Jo Engine must be silently ignoring the remaining characters. When using with a smaller save name, the read fails. Refactor.

Upload New Screenshots

There have been enough updates to SGC that new screenshots are warranted. Wait until after the dynamic menu is implemented.

Add Support for Partitions

Add support for device partitions. Notably SGC does not work correctly with the Floppy Disk Drive (FDD). The first partition works, the second is invisible. Unfortunately Jo Engine does not make visible the partitions as far as I can tell.

Better error handling for corrupt save files

I had on my official save cartridge a couple of 1 memory unit junk files..not sure where they came from. The built-in bios level saturn memory manager had no issue reading the entire contents of the cart, but the Save Game Copier throws an error for listing files until I went in and deleted these junk files. Not sure if there is a more graceful way of listing or identifying corrupt files in a memory source without throwing an error.

Add Write To Memory Option

Add a write to memory option to be able to write files to memory. It should use the same UI and Dump Memory. It should be in the list of destination devices.

Warning about overwriting (newer) saves

Not sure this is even possible but now that we have comments working and timestamp is a part of those comments could we throw a soft warning if you are attempting to copy over a newer version of a save that has the same name on a target device? Maybe this could/should be extended to any instance where you are copying over a save where the target device has a save there already.

Reset to Bios Menu option

Not sure this is possible to trigger, but it would be nice to have an exit function for those of us using an ODE to gracefully exit the program. This could be done by triggering a system reset to "reboot" the Saturn.

action replay saves missing file extension when saving to satiator

Hi, I was trying to copy games from my action replay to my satiator, and it seems to be missing the .BUP extension when it puts them in the folder, and in turn they aren't visible when you view the saves on the satiator.

Copying from internal memory works as expected, it's only when copying from action replay that this seems to happen

Complete back-up option

First off the number of issues is not a critique on the tool..it is awesome as-is. Just throwing ideas out there since I'm now using it in MODE.

Would it be possible to have the copier also allow for a complete internal back-up as opposed to one-off saves? Maybe with a timestamp function so you can save and restore off multiple instances? Obviously this wouldn't have made sense in the pre-ODE days, but with satiator and MODE using the tool now, it makes more sense.

Menu Backing Out is Buggy

Backing out with the menu is buggy. Look into creating a stack to hold the previous states and pop and push as necessary.

Change Dump Memory Option Filename

Change the dump memory filename to be 8.3. Something like <hex address 0 padded>.DMP. This will fix some sizing issues I've seen in the UI.

Add Support for Reading\Writing Save Metadata

When stored in the Saturn (internal memory, cartridge memory, external device) the saves have metadata such as comments, language, etc. Research into how to copy the metadata as well as how to write it to the Satiator.

This will likely involve changing the save format to some sort of metasave data structure. Look into how other Saturn utilities store this information.

It's possible that Panzer Dragoon Zwei's save is failing to work because the comment isn't correct.

Build in Release

Fix the project to build in release mode. This will require removing\replacing the jo_core_error()s in the code.

Testing Save-Game-Copier with Terraonion MODE

Hello!

I just wanted to report that I was able to use your Save-Game-Copier fairly successfully with TO's MODE internal ODE.

I was able to:

  1. See both internal and official sega cart saves
  2. Copy saves between internal and cart
  3. Copy from CD memory to both internal and cart

Issues found:

  1. If you choose the Satiator option the Saturn will freeze. Which that or an error screen would be expected as I do not have a Satiator. This should probably get a graceful error added similar to what happens with other functions that are performed but don't work.
  2. It cannot read Pro Action Replay (PAR) saves. I am using an unflashed cart. I know this is due to PAR compressing the saves (possibly encrypting?) and it would be nice if your program could read them if possible.
  3. No ability to write to MODE. This is expected as this application was not built for interaction with MODE...yet. However, integration would be amazing and I'd wager Alex and Neodev (the main developer) would entertain the idea at least.

Even if nothings comes of this, I would like to say thanks as this is a very quick and handy save game utility I can easily boot from MODE to manage my saves. So that alone is very much appreciated. And it also seems as though I could add saves to my Saturn by modifying the ISO. Which could also prove quite handy.

Thank you,

Michael

Add Ability to Dump Raw Memory to Backup Device

Create a new menu option to dump user specified address and size to one of the writeable save mediums. This will be useful for backing up the BIOS as well dumping all saves at once.

Entering the address will require coming up with a new input logic.

Serial connection?

Staying optimistic, how does it communicate with the serial adapter to right to a floppy drive? Being that they are not easy to get, maybe someone could make an external saver to an SD card to directly to a pc. I dont have 300 for a A saturator so I'm thinking of was I could backup my saves externally.

Paging for browsing save files and alphanumeric sorting

I ran into an issue while researching an issue yesterday where I had nearly 100 saves to sort through in my directory. And it will become harder with more people trading save files.

You have to individually tap down to get through every save file. You cannot hold down to keep moving. You also can't press left or right to page quickly. So when you get up to 30+ save files, that can start getting rough. When you get to even more, it will be extremely hard. Also, there was no alphanumeric sorting being applied so many of the saves were out of order compounding the issue.

Thank you!

Dynamically Generate Menu Based on Backup Devices Available

Dynamically generate the menu based on the backup devices available. For example don't show Cartridge Memory if the cartridge slot is empty. Likewise remove Satiator from the menu if the Satiator is not detected.

This should extend to the submenus where the list of copy targets should be dynamically generated as well. A file should not copy over its on location as well. For example Internal Memory should not let you copy the file to Internal Memory.

Fenrir 21pin support

Now that Fenrir/Fenrir 21 pin support save ram backup to sd / restore, would it be possible for add support for fenrir ode on the save game copier?

game.iso/cue goes in which folder?

"You must use the cue file named game_cue_for_mode.cue INSTEAD OF game.cue file. Ensure only 1 cue is present along with game.iso file. This is required because MODE needs a large TOC for the command interface."

you don't say which folder this has to go in?! hdd root, the saturn folder, or make a folder for it in the saturn folder like you have to for games?

Save List Position in List Saves

When performing an action on a save in list view, the list position is then sit back to zero. Create a new variable to save the list position. Update the list position in move_cursor().

Hexen save file too large for read parameters

As reported on TO discord;

bumfacekillaToday at 8:14 AM
It also seems that the Save Game Copier cannot handle saves for Hexen (not that anyone would care about that game, haha). The moment you try to access a cartridge with a save for Hexen, you will get a bluescreen with the error

"In saturnListSavesFiles():
Failed to read file size!!"

I assume this is owing to the fact that the save for Hexen is huge (by Saturn standards) at a gargantuan 237.6kb or 3801 blocks, the biggest I've seen so far. Two saves and the cart is basically filled, I remember it being a reason I sold the game back in the day (other than it being awful) lol.

bup_parse.py unable to read comment field from Shining The Holy Ark save file imported by Save Game Copier v3.6.15

Save file: HOLY_ARK_01.zip

  1. Import the save file from Satiator to internal memory using Save Data Manager v6.545:
    https://ppcenter.webou.net/pskai/#download
    Launch tools\pskai_sdm.iso on Satiator and then select "Save Data Import".

  2. Export the save file from internal memory to Satiator using Save Game Copier or Save Data Manager.
    To do that in the latter: Save Data Export -> Export Save(s) from Memory Device(s)

  3. Execute bup_parse.py --input_bup HOLY_ARK_01.BUP --extract_raw_save and you get this result:

1

Now do the following:

  1. Import the save file from Satiator to internal memory using Save Game Copier v3.6.15.

  2. Export the save file from internal memory to Satiator using Save Game Copier or Save Data Manager.

  3. Execute bup_parse.py --input_bup HOLY_ARK_01.BUP --extract_raw_save and you get this result:

2

If you take this BUP file and trim the first 64 bytes, the MD5 hash of the raw save file matches the hash shown in the first screenshot.

Implement save compression/decompression?

Compression and decompression was implemented in the rockin-b save game manager http://www.rockin-b.de/saturn-savegamemanager.html but honestly this program is much more intuitive to navigate and use and supports more devices. I would love to see the ability to compress/decompress individual saves combined with the copy function. For example a function to copy as a compressed save from backup cartridge to internal memory and vice versa with decompression. Is anything like this in your roadmap?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.