bsnes/higan/target-bsnes/program/state.cpp

19 lines
985 B
C++

auto Program::loadState(uint slot) -> bool {
if(!emulator->loaded()) return false;
string location = {Location::notsuffix(superNintendo.location), ".bs", slot};
if(!file::exists(location)) return showMessage({"Slot ", slot, " state does not exist"}), false;
auto memory = file::read(location);
serializer s{memory.data(), memory.size()};
if(!emulator->unserialize(s)) return showMessage({"Slot ", slot, " state is incompatible"}), false;
return showMessage({"Loaded state from slot ", slot}), true;
}
auto Program::saveState(uint slot) -> bool {
if(!emulator->loaded()) return false;
string location = {Location::notsuffix(superNintendo.location), ".bs", slot};
serializer s = emulator->serialize();
if(!s.size()) return showMessage({"Failed to save state to slot ", slot}), false;
if(!file::write(location, s.data(), s.size())) return showMessage({"Unable to write state to slot ", slot}), false;
return showMessage({"Saved state to slot ", slot}), true;
}