Apply some small fixes to save state serialization in libretro builds

This commit is contained in:
刘皓 2025-05-22 19:20:28 -04:00
parent bff931ce94
commit 01ff2ec75a
No known key found for this signature in database
GPG key ID: 7901753DB465B711
2 changed files with 6 additions and 6 deletions

View file

@ -79,14 +79,14 @@ namespace mkxp_sandbox {
using namespace mkxp_sandbox; using namespace mkxp_sandbox;
if (ptr == nullptr) { if (ptr == nullptr) {
if (!mkxp_sandbox::sandbox_serialize((uint32_t)2, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize((uint8_t)2, data, max_size)) return false;
} else { } else {
const auto &it = map.find(ptr); const auto &it = map.find(ptr);
if (it != map.end()) { if (it != map.end()) {
if (!mkxp_sandbox::sandbox_serialize((uint32_t)(it->second.is_extra ? 1 : 0), data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize((uint8_t)(it->second.is_extra ? 1 : 0), data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(it->second.key, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize(it->second.key, data, max_size)) return false;
} else { } else {
if (!mkxp_sandbox::sandbox_serialize((uint32_t)1, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize((uint8_t)1, data, max_size)) return false;
constexpr wasm_size_t typenum = get_typenum<T>::value; constexpr wasm_size_t typenum = get_typenum<T>::value;
extra_objects.emplace_back((const void *)ptr, typenum); extra_objects.emplace_back((const void *)ptr, typenum);

View file

@ -3392,6 +3392,9 @@ void Bitmap::loresDisposal()
#ifdef MKXPZ_RETRO #ifdef MKXPZ_RETRO
bool Bitmap::_sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &max_size) const bool Bitmap::_sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &max_size) const
{ {
if (isDisposed()) return mkxp_sandbox::sandbox_serialize(false, data, max_size);
if (!mkxp_sandbox::sandbox_serialize(true, data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize((int32_t)width(), data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize((int32_t)width(), data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize((int32_t)height(), data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize((int32_t)height(), data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(p->animation.enabled, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize(p->animation.enabled, data, max_size)) return false;
@ -3416,9 +3419,6 @@ bool Bitmap::_sandbox_serialize_inner(void *&data, mkxp_sandbox::wasm_size_t &ma
bool Bitmap::sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const bool Bitmap::sandbox_serialize(void *&data, mkxp_sandbox::wasm_size_t &max_size) const
{ {
if (isDisposed()) return mkxp_sandbox::sandbox_serialize(false, data, max_size);
if (!mkxp_sandbox::sandbox_serialize(true, data, max_size)) return false;
if (!mkxp_sandbox::sandbox_serialize(p->selfHires != nullptr, data, max_size)) return false; if (!mkxp_sandbox::sandbox_serialize(p->selfHires != nullptr, data, max_size)) return false;
if (p->selfHires != nullptr) { if (p->selfHires != nullptr) {