From 57671e267df41b40e491edcb3028d8f47a0340a3 Mon Sep 17 00:00:00 2001 From: Eladash Date: Tue, 5 Jul 2022 20:09:10 +0300 Subject: [PATCH] Savestates: save cellAudioOut --- rpcs3/Emu/Cell/Modules/cellAudioOut.cpp | 17 +++++++++++++++++ rpcs3/Emu/Cell/Modules/cellAudioOut.h | 5 +++++ rpcs3/Emu/System.cpp | 3 ++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp b/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp index 36cfa116fd..5b870c6316 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp @@ -178,6 +178,23 @@ audio_out_configuration::audio_out_configuration() cellSysutil.notice("cellAudioOut: initial secondary output configuration: channels=%d, encoder=%d, downmixer=%d", secondary_output.channels, secondary_output.encoder, secondary_output.downmixer); } +audio_out_configuration::audio_out_configuration(utils::serial& ar) + : audio_out_configuration() +{ + // Load configuartion (ar is reading) + save(ar); +} + +void audio_out_configuration::save(utils::serial& ar) +{ + USING_SERIALIZATION_VERSION_COND(ar.is_writing(), cellAudioOut); + + for (auto& state : out) + { + ar(state.state, state.channels, state.encoder, state.downmixer, state.copy_control, state.sound_modes, state.sound_mode); + } +} + std::pair audio_out_configuration::audio_out::get_channel_count_and_downmixer() const { std::pair ret; diff --git a/rpcs3/Emu/Cell/Modules/cellAudioOut.h b/rpcs3/Emu/Cell/Modules/cellAudioOut.h index 9fc46447ed..6e829253bc 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudioOut.h +++ b/rpcs3/Emu/Cell/Modules/cellAudioOut.h @@ -135,6 +135,8 @@ struct CellAudioOutSoundMode u8 fs; u8 reserved; be_t layout; + + ENABLE_BITWISE_SERIALIZATION; }; struct CellAudioOutDeviceInfo @@ -217,5 +219,8 @@ struct audio_out_configuration std::array out; + SAVESTATE_INIT_POS(8.9); // Is a dependency of cellAudio audio_out_configuration(); + audio_out_configuration(utils::serial& ar); + void save(utils::serial& ar); }; diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index c0e7169084..d4c2f7cfed 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -71,7 +71,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, ...) \ \ @@ -125,6 +125,7 @@ SERIALIZATION_VER(cellVoice, 18, 1) SERIALIZATION_VER(cellGcm, 19, 1) SERIALIZATION_VER(sysPrxForUser, 20, 1) SERIALIZATION_VER(cellSaveData, 21, 1) +SERIALIZATION_VER(cellAudioOut, 22, 1) #undef SERIALIZATION_VER