Savestates: Rename DeferDeserialization, add some asserts

This commit is contained in:
Eladash 2023-12-31 21:10:51 +02:00 committed by Elad Ashkenazi
parent f5d39ef7f2
commit ce5f7bd4ff
9 changed files with 35 additions and 16 deletions

View file

@ -202,22 +202,36 @@ void init_fxo_for_exec(utils::serial* ar, bool full = false)
Emu.ConfigurePPUCache();
g_fxo->init(false, ar);
g_fxo->init(false, ar, [](){ Emu.ExecPostponedInitCode(); });
Emu.GetCallbacks().init_gs_render(ar);
Emu.GetCallbacks().init_pad_handler(Emu.GetTitleID());
Emu.GetCallbacks().init_kb_handler();
Emu.GetCallbacks().init_mouse_handler();
usz pos = 0;
if (ar)
{
Emu.ExecDeserializationRemnants();
pos = ar->pos;
}
[[maybe_unused]] auto flags = (*ar)(Emu.m_savestate_extension_flags1);
// TODO: Remove second call when possible
Emu.ExecPostponedInitCode();
if (ar)
{
ensure(pos == ar->pos);
(*ar)(Emu.m_savestate_extension_flags1);
const usz advance = (Emu.m_savestate_extension_flags1 & Emulator::SaveStateExtentionFlags1::SupportsMenuOpenResume ? 32 : 31);
load_and_check_reserved(*ar, advance); // Reserved area
// Reserved area
if (!load_and_check_reserved(*ar, advance))
{
sys_log.error("Potential failure to load savestate: padding buyes are not 0. %s", *ar);
}
}
}