libretro / easyrpg-libretro

⚠️⚠️⚠️ DON'T USE THIS FORK FOR YOUR OWN BUILDS / PACKAGES / ETC ⛔️⛔️⛔️ NO SUPPORT WHEN YOU USE IT ⚠️⚠️⚠️ It is only used by the libretro buildbot. ❤️❤️❤️ For your own builds use the upstream repository: https://github.com/EasyRPG/Player/ (See: "Building a libretro core" in the Readme) ❤️❤️❤️
https://easyrpg.org/
GNU General Public License v3.0
10 stars 8 forks source link

Save function in RetroArch not enabled #32

Open Kupo91 opened 5 years ago

Kupo91 commented 5 years ago

Name of the game: Vampires Dawn

Player platform: Linux (LibreElec)

Describe the issue in detail and how to reproduce it: Usually all cores in RetroArch have a save function. Atleast all cores which I've tested so far. However in RetroArch easyrpg you get an error message like "This core doesn't support this function" or something like that.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/66934064-save-function-in-retroarch-not-enabled?utm_campaign=plugin&utm_content=tracker%2F43571945&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F43571945&utm_medium=issues&utm_source=github).
Ghabry commented 5 years ago

Well the problem is here that EasyRPG Player, compared to almost anything else in RetroArch, is a game engine and not an emulator.

Savestates are really tricky for these because you must serialize all the game data which is a gigantic afford for little gain. For emulators you can "simply" dump the memory map and the register of the virtual CPU and you are done.

Ghabry commented 5 years ago

Actually supporting that save option would be possible with some restrictions. I could just hook it to the normal Save function which means the saving will fail when not on the map and in some situations on the map it will not properly save.

Could hide it behind a core option.

Ghabry commented 5 years ago

I will keep this disabled.

Arbitrary save and load, even on the map, doesn't really work currently without crashing because our code is just not designed for it and this use case was never tested (especially load is broken). For now I recommend using the Debug mode through the core options and then save via the debug scene.