diff --git a/pcsx2/Sif.cpp b/pcsx2/Sif.cpp index ab71f86c68..6e50d0de96 100644 --- a/pcsx2/Sif.cpp +++ b/pcsx2/Sif.cpp @@ -39,35 +39,38 @@ __forceinline void dmaSIF2() void SaveStateBase::sifFreeze() { FreezeTag("SIFdma"); - - // Nasty backwards compatability stuff. - old_sif_structure old_sif0, old_sif1; - bool ee_busy[2], iop_busy[2]; - old_sif0.fifo = sif0.fifo; - old_sif1.fifo = sif1.fifo; - - ee_busy[0] = sif0.ee.busy; - ee_busy[1] = sif1.ee.busy; - iop_busy[0] = sif0.iop.busy; - iop_busy[1] = sif1.iop.busy; - - old_sif0.end = (sif0.ee.end) ? 1 : 0; - old_sif1.end = (sif1.ee.end) ? 1 : 0; - - old_sif0.counter = sif0.iop.counter; - old_sif1.counter = sif1.iop.counter; - - old_sif0.data = sif0.iop.data; - old_sif1.data = sif1.iop.data; - - Freeze(old_sif0); - Freeze(old_sif1); - Freeze(ee_busy); - Freeze(iop_busy); - - // When we break save state, switch to just freezing sif0 & sif1. - -// Freeze(sif0); -// Freeze(sif1); + if (GetVersion() <= 3) + { + // Nasty backwards compatability stuff. + old_sif_structure old_sif0, old_sif1; + bool ee_busy[2], iop_busy[2]; + + old_sif0.fifo = sif0.fifo; + old_sif1.fifo = sif1.fifo; + + ee_busy[0] = sif0.ee.busy; + ee_busy[1] = sif1.ee.busy; + iop_busy[0] = sif0.iop.busy; + iop_busy[1] = sif1.iop.busy; + + old_sif0.end = (sif0.ee.end) ? 1 : 0; + old_sif1.end = (sif1.ee.end) ? 1 : 0; + + old_sif0.counter = sif0.iop.counter; + old_sif1.counter = sif1.iop.counter; + + old_sif0.data = sif0.iop.data; + old_sif1.data = sif1.iop.data; + + Freeze(old_sif0); + Freeze(old_sif1); + Freeze(ee_busy); + Freeze(iop_busy); + } + else + { + Freeze(sif0); + Freeze(sif1); + } }