KimJorgensen / KungFuFlash

Cartridge for the Commodore 64 that packs a punch
zlib License
380 stars 58 forks source link

Native Freezer/Restore feature #178

Open mwedmark opened 9 months ago

mwedmark commented 9 months ago

Maybe someone already asked. KFF can only do one thing at a time: either being Freezer Cartridge, being a D64-reader/writer or being a SD-loader. I guess this is both up to 64KB RAM and maybe partly PCU speed.

I got a question about using KFF as a freezer and tried it out. It works. For example using:

Is it possible to implement a feature so that the Freezer button by default freezes/dumps memory to FC-like file/s to SD-card, maybe selecting name of file and then returning to game? That would be a cool and useful features for those games cheaters out there.

KimJorgensen commented 9 months ago

Yes, it would be a really cool feature to have a built in freeze and restore functionality and even a monitor for hacking.

Let me know if anyone knows of a good and reliable open source freezer that is compatible with the KFF license

magwed commented 9 months ago

Backbit has native support for simple save/restore. I'm not sure it is open but I guess it should be possible to check out different solutions, learn and write our own using information learned. Also I would guess parts of this is in VICE which maybe have a resonable license.

mwedmark commented 9 months ago

Here are my suggestions for this feature from a crude "what I want" perspective, not what is possible:

mwedmark commented 9 months ago

Retro Replay/Nordic Replay may be sources of information and possibly could be used as a basis for stable Freezing. Let's check details on licences.

Tissemon commented 5 months ago

The ability to save-state with KFF would be truly amazing! I don't know if it's possible, but if it would be possible to save states directly to the SD-card would probably be the best and fastest approach. With OG freezer-carts you have to hazzle with changing disks to an empty disk before saving, and also use fast-loading to load it back to the memory as fast as possible. Maybe, if it's possible, dump everything from memory to a file that saves to /savestates/activegame01.sav. When you load activegame.crt the next time, it checks if there is a sav-file available and asks if you want to load. You then mount the file as usual and also restores everything to exactly the memory positions stored in the .sav-file. Or you just load the game from the start as usual and press freeze again, but this time you get the option to either save or load a savestate. As I said, don't know if this approach is possible with the KFF, but would be nice if it was :-)

Also, if you havn't seen it already, the source code for Action Replay seems to be available here: https://rr.pokefinder.org/wiki/Action_Replay (at the bottom of the page you can find the file Action_Replay_all_rr.c64.org_2022-08.rar that contains an AR_Sources-folder) You might be able to find out how the freezer in that cart works through that code.