libretro / blueMSX-libretro

Port of blueMSX to the libretro API.
Other
45 stars 68 forks source link

[Bounty] MSX Save Support #134

Open wilhitewarrior opened 3 years ago

wilhitewarrior commented 3 years ago

The BlueMSX core currently lacks support for saving outside of savestates. Because achievement support was added to MSX fairly recently, I'd like to see this issue resolved so I'm opening a bounty for it.

As I understand it, I believe that this is because the MSX saved on a second cartridge slot or something like that? And the core lacks the ability to recognize it? Correct me if I'm wrong on this one, never had a real MSX before. However, I believe the standalone emulator was capable of saving, for this reason I believe it would be possible to add save support to the core.

If this feature could be added I'd be very happy to see it, so thanks in advance to anyone willing to take it on

Bountysource Link

redwizard42 commented 1 year ago

Something like this m3u feature from the commodore core would be extremely helpful: https://docs.libretro.com/library/vice/#extra-m3u-features

Jamiras commented 1 year ago

I believe MSX uses a save disk. RetroAchievements hashes disks to ensure the player is using the correct version of the game. Unfortunately, even if we allow a blank disk for the save disk, if it gets updated by the core, it no longer matches the expected hash and gets rejected as incompatible.

There's two potential solutions for this: 1) Only write changes to the disks in the saves folder (like SRAM). As long as the original disk remains unmodified, it will be valid. 2) Use the #SAVEDISK: m3u extension as linked above to generate a virtual blank disk. This way there is no original disk to validate.

hizzlekizzle commented 1 year ago

IIRC, some FDS emus make their saves by generating an IPS patch against the original, clean ROM file. Something like that could work, though it might be a hassle to implement.