From a9fd2f76d2ca901d3364e1ae6875fd83f8c2604d Mon Sep 17 00:00:00 2001 From: Eladash <18193363+elad335@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:22:48 +0300 Subject: [PATCH] Savestates: serilialize avc2_settings --- rpcs3/Emu/Cell/Modules/cellSysutilAvc2.cpp | 21 +++++++++++++++++++++ rpcs3/Emu/savestate_utils.cpp | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/Modules/cellSysutilAvc2.cpp b/rpcs3/Emu/Cell/Modules/cellSysutilAvc2.cpp index 1368035b64..46c908080e 100644 --- a/rpcs3/Emu/Cell/Modules/cellSysutilAvc2.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSysutilAvc2.cpp @@ -68,12 +68,33 @@ struct avc2_settings avc2_settings(const avc2_settings&) = delete; avc2_settings& operator=(const avc2_settings&) = delete; + SAVESTATE_INIT_POS(52); + vm::ptr avc2_cb{}; vm::ptr avc2_cb_arg{}; u32 streaming_mode = CELL_SYSUTIL_AVC2_STREAMING_MODE_NORMAL; u8 mic_out_stream_sharing = 0; u8 video_stream_sharing = 0; u32 total_video_bitrate = 0; + + avc2_settings(utils::serial& ar) noexcept + { + [[maybe_unused]] const s32 version = GET_SERIALIZATION_VERSION(cellSysutil); + + if (version == 0) + { + return; + } + + save(ar); + } + + void save(utils::serial& ar) + { + GET_OR_USE_SERIALIZATION_VERSION(ar.is_writing(), cellSysutil); + + ar(avc2_cb, avc2_cb_arg, streaming_mode, mic_out_stream_sharing, video_stream_sharing, total_video_bitrate); + } }; error_code cellSysutilAvc2GetPlayerInfo(vm::cptr player_id, vm::ptr player_info) diff --git a/rpcs3/Emu/savestate_utils.cpp b/rpcs3/Emu/savestate_utils.cpp index 9ffb236c4c..0c6170cc78 100644 --- a/rpcs3/Emu/savestate_utils.cpp +++ b/rpcs3/Emu/savestate_utils.cpp @@ -25,7 +25,7 @@ struct serial_ver_t std::set compatible_versions; }; -static std::array s_serial_versions; +static std::array s_serial_versions; #define SERIALIZATION_VER(name, identifier, ...) \ \ @@ -86,6 +86,8 @@ SERIALIZATION_VER(sys_io, 23, 2) SERIALIZATION_VER(LLE, 24, 1) SERIALIZATION_VER(HLE, 25, 1) +SERIALIZATION_VER(cellSysutil, 26, 1) + template <> void fmt_class_string>::format(std::string& out, u64 arg) {