libretro / libretro-uae

PUAE libretro
GNU General Public License v2.0
114 stars 61 forks source link

IPF save support #550

Closed vagrant-17 closed 1 year ago

vagrant-17 commented 2 years ago

Looks like IPF saving is not supported, unless I overlooked something. Is it possible to add write support via files like winuae does?

sonninnos commented 2 years ago

No. Nothing writes to IPFs. This uses the exact same code that WinUAE does.

vagrant-17 commented 2 years ago

Winuae supports saving.. but not directly to the ipf. When you write-enable an ipf disk it immediately creates an adf 'save disk' in relation to the ipf file. Possible to add this function?

sonninnos commented 2 years ago

A save disk creation feature already exists in the core (which is enough for the majority of games since they use a separate save disk, but can't work when the game wants to write on the main disk), and the WinUAE disk replace feature is dodgy at best. Totally not worth it adding it here. I tried with Giana Sisters, and it still crashes when it writes to the "save" disk, just like when trying to write with write protection. So perhaps it is good enough for DOS format disks, which is not very common in retail disks.

Why not just use WHDLoads?

vagrant-17 commented 2 years ago

DOS format disk easiest workaround is just copy the ipf to an adf. No idea why giana sisters would crash but I've never had problems with ipf saving on winuae. There are many non-dos amiga games without a whd install that expect writing to the game disk. Also for users that want to use original floppy images instead of whdload cannot save there scores in Pinball Dreams for example (or every other ndos game).. unless using a cracked adf.

vagrant-17 commented 2 years ago

I think would definitely be a worthy addition if possible mate

sonninnos commented 2 years ago

Still seems like a massive waste of time, since there really aren't that many of those kind of savings, but fine, whatever.

sonninnos commented 1 year ago

I was able to make this happen with fairly small effort. I decided to add a new core option for setting the disk drive unit which has the disk that should be redirected. Seems to work fine with Pinball Dreams, which needs to be using DF1: for the disk if MultiDrive is enabled, since it saves to disk 2.

Obviously it can't be enabled all the time and not for all drives, since it would create a lot of unnecessary files under saves.

Not sure if I should try to make sure that the save disk won't be used if the core option is disabled, since the UAE internal feature will scan for the existence of the file regardless as is..

And maybe the created disk should be compressed on quit and extracted on start, since the file will be 2MB in size, yet has only a few kilobytes of data.

vagrant-17 commented 1 year ago

Ok thats great soninnos, sounds good :)

I went through a lot of IPF images some months ago, only games that have no WHD install. There were some non-dos games that refused to save data of course, but there were also games that refused to run at all unless the game disk is write-enabled! This usually result in neverending write-enable requests.. I don't remember which games though, probably should have written them down.

sonninnos commented 1 year ago

I was able to simplify it further as a simple toggle option which affects all disk drives, since UAE already deletes disks that are not written to. And I also added compression to these save disks, and also to the previously available manual save disks.

vagrant-17 commented 1 year ago

Excellent! Thanks sonninos 👍