diff --git a/Source/Core/Core/Src/HW/DSP.cpp b/Source/Core/Core/Src/HW/DSP.cpp index cd136df53b..0eb19b006f 100644 --- a/Source/Core/Core/Src/HW/DSP.cpp +++ b/Source/Core/Core/Src/HW/DSP.cpp @@ -229,6 +229,7 @@ void DoState(PointerWrap &p) p.Do(g_ARAM_Info); p.Do(g_AR_MODE); p.Do(g_AR_REFRESH); + p.Do(dsp_slice); dsp_emulator->DoState(p); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp index 33f0d2f1e6..da4b10f34e 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp @@ -465,5 +465,6 @@ void CUCode_AX::DoState(PointerWrap &p) p.Do(numPBaddr); p.Do(m_addressPBs); p.Do(PBaddr); - p.Do(m_UploadSetupInProgress); + + DoStateShared(p); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp index 6300b35b4a..03b1d3b75b 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp @@ -261,5 +261,6 @@ void CUCode_AXWii::DoState(PointerWrap &p) p.Do(m_addressPBs); p.Do(wiisportsHack); - p.Do(m_UploadSetupInProgress); + + DoStateShared(p); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.h index 10ed5241a2..1e6cffcba0 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.h @@ -41,7 +41,6 @@ private: // PBs u32 m_addressPBs; - u32 _CRC; bool wiisportsHack; diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_ROM.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_ROM.cpp index c1544792f5..b94486fe9e 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_ROM.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_ROM.cpp @@ -122,5 +122,7 @@ void CUCode_Rom::DoState(PointerWrap &p) p.Do(m_CurrentUCode); p.Do(m_BootTask_numSteps); p.Do(m_NextParameter); + + DoStateShared(p); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp index 713236180d..89d0d6dcb2 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp @@ -612,5 +612,5 @@ void CUCode_Zelda::DoState(PointerWrap &p) p.Do(m_PBAddress); p.Do(m_PBAddress2); - p.Do(m_UploadSetupInProgress); + DoStateShared(p); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp index 62620253aa..c04bf41403 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.cpp @@ -182,3 +182,11 @@ void IUCode::PrepareBootUCode(u32 mail) m_DSPHLE->SwapUCode(ector_crc); } } + +void IUCode::DoStateShared(PointerWrap &p) +{ + p.Do(m_UploadSetupInProgress); + p.Do(m_NextUCode); + p.Do(m_NextUCode_steps); + p.Do(m_NeedsResumeMail); +} diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h index faea895609..225ac731c0 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h @@ -93,7 +93,7 @@ public: virtual void Update(int cycles) = 0; virtual void MixAdd(short* buffer, int size) {} - virtual void DoState(PointerWrap &p) {} + virtual void DoState(PointerWrap &p) { DoStateShared(p); } static u32 GetCRC(IUCode* pUCode) { return pUCode ? pUCode->m_CRC : UCODE_NULL; } @@ -105,6 +105,8 @@ protected: // The HLE can use this to bool NeedsResumeMail(); + void DoStateShared(PointerWrap &p); + CMailHandler& m_rMailHandler; std::mutex m_csMix;