savestates: dropping support for old formats
savestates older than 3 years aren't supported anymore
This commit is contained in:
parent
b81a6762bc
commit
d1ab3461a6
|
@ -564,13 +564,6 @@ void deserialize(Deserializer& deser)
|
|||
deser >> arm::armFiqEnable;
|
||||
deser >> arm::armMode;
|
||||
deser >> arm::Arm7Enabled;
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip(256); // cpuBitsSet
|
||||
deser.skip(1); // intState
|
||||
deser.skip(1); // stopState
|
||||
deser.skip(1); // holdState
|
||||
}
|
||||
if (deser.version() >= Deserializer::V19)
|
||||
deser >> arm::arm7ClockTicks;
|
||||
else
|
||||
|
|
|
@ -1566,18 +1566,6 @@ void serialize(Serializer& ser)
|
|||
|
||||
void deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() < Deserializer::V7_LIBRETRO)
|
||||
{
|
||||
deser.skip(4 * 16); // volume_lut
|
||||
deser.skip(4 * 256 + 768); // tl_lut. Due to a previous bug this is not 4 * (256 + 768)
|
||||
deser.skip(4 * 64); // AEG_ATT_SPS
|
||||
deser.skip(4 * 64); // AEG_DSR_SPS
|
||||
deser.skip(2); // pl
|
||||
deser.skip(2); // pr
|
||||
}
|
||||
|
||||
bool old_format = (deser.version() >= Deserializer::V5 && deser.version() < Deserializer::V7) || deser.version() < Deserializer::V8_LIBRETRO;
|
||||
|
||||
for (ChannelEx& channel : Chans)
|
||||
{
|
||||
channel.quiet = true;
|
||||
|
@ -1587,94 +1575,35 @@ void deserialize(Deserializer& deser)
|
|||
|
||||
deser >> channel.CA;
|
||||
deser >> channel.step;
|
||||
if (old_format)
|
||||
deser.skip<u32>(); // channel.update_rate
|
||||
channel.UpdatePitch();
|
||||
deser >> channel.s0;
|
||||
deser >> channel.s1;
|
||||
deser >> channel.loop.looped;
|
||||
if (old_format)
|
||||
{
|
||||
deser.skip<u32>(); // channel.loop.LSA
|
||||
deser.skip<u32>(); // channel.loop.LEA
|
||||
}
|
||||
channel.UpdateLoop();
|
||||
deser >> channel.adpcm.last_quant;
|
||||
if (!old_format)
|
||||
{
|
||||
deser >> channel.adpcm.loopstart_quant;
|
||||
deser >> channel.adpcm.loopstart_prev_sample;
|
||||
deser >> channel.adpcm.in_loop;
|
||||
}
|
||||
else
|
||||
{
|
||||
channel.adpcm.in_loop = true;
|
||||
channel.adpcm.loopstart_quant = 0;
|
||||
channel.adpcm.loopstart_prev_sample = 0;
|
||||
}
|
||||
deser >> channel.adpcm.loopstart_quant;
|
||||
deser >> channel.adpcm.loopstart_prev_sample;
|
||||
deser >> channel.adpcm.in_loop;
|
||||
deser >> channel.noise_state;
|
||||
if (old_format)
|
||||
{
|
||||
deser.skip<u32>(); // channel.VolMix.DLAtt
|
||||
deser.skip<u32>(); // channel.VolMix.DRAtt
|
||||
deser.skip<u32>(); // channel.VolMix.DSPAtt
|
||||
}
|
||||
channel.UpdateAtts();
|
||||
if (old_format)
|
||||
deser.skip<u32>(); // channel.VolMix.DSPOut
|
||||
channel.UpdateDSPMIX();
|
||||
|
||||
deser >> channel.AEG.val;
|
||||
deser >> channel.AEG.state;
|
||||
channel.SetAegState(channel.AEG.state);
|
||||
if (old_format)
|
||||
{
|
||||
deser.skip<u32>(); // channel.AEG.AttackRate
|
||||
deser.skip<u32>(); // channel.AEG.Decay1Rate
|
||||
deser.skip<u32>(); // channel.AEG.Decay2Rate
|
||||
deser.skip<u32>(); // channel.AEG.Decay2Value
|
||||
deser.skip<u32>(); // channel.AEG.ReleaseRate
|
||||
}
|
||||
channel.UpdateAEG();
|
||||
deser >> channel.FEG.value;
|
||||
deser >> channel.FEG.state;
|
||||
if (!old_format)
|
||||
{
|
||||
deser >> channel.FEG.prev1;
|
||||
deser >> channel.FEG.prev2;
|
||||
}
|
||||
else
|
||||
{
|
||||
channel.FEG.prev1 = 0;
|
||||
channel.FEG.prev2 = 0;
|
||||
}
|
||||
deser >> channel.FEG.prev1;
|
||||
deser >> channel.FEG.prev2;
|
||||
channel.SetFegState(channel.FEG.state);
|
||||
channel.UpdateFEG();
|
||||
if (old_format)
|
||||
{
|
||||
deser.skip<u8>(); // channel.step_stream_lut1
|
||||
deser.skip<u8>(); // channel.step_stream_lut2
|
||||
deser.skip<u8>(); // channel.step_stream_lut3
|
||||
}
|
||||
channel.UpdateStreamStep();
|
||||
|
||||
deser >> channel.lfo.counter;
|
||||
if (old_format)
|
||||
deser.skip<u32>(); // channel.lfo.start_value
|
||||
deser >> channel.lfo.state;
|
||||
if (old_format)
|
||||
{
|
||||
deser.skip<u8>(); // channel.lfo.alfo
|
||||
deser.skip<u8>(); // channel.lfo.alfo_shft
|
||||
deser.skip<u8>(); // channel.lfo.plfo
|
||||
deser.skip<u8>(); // channel.lfo.plfo_shft
|
||||
deser.skip<u8>(); // channel.lfo.alfo_calc_lut
|
||||
deser.skip<u8>(); // channel.lfo.plfo_calc_lut
|
||||
}
|
||||
channel.UpdateLFO(true);
|
||||
deser >> channel.enabled;
|
||||
if (old_format)
|
||||
deser.skip<u32>(); // channel.ChannelNumber
|
||||
channel.quiet = false;
|
||||
}
|
||||
if (deser.version() >= Deserializer::V22)
|
||||
|
@ -1691,11 +1620,6 @@ void deserialize(Deserializer& deser)
|
|||
}
|
||||
deser >> cdda_sector;
|
||||
deser >> cdda_index;
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip(4 * 64); // mxlr
|
||||
deser.skip(4); // samples_gen
|
||||
}
|
||||
midiSendBuffer.clear();
|
||||
if (deser.version() >= Deserializer::V28)
|
||||
{
|
||||
|
|
|
@ -330,13 +330,11 @@ void serialize(Serializer& ser)
|
|||
|
||||
void deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() < Deserializer::V5)
|
||||
if (deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // size
|
||||
deser.skip<u32>(); // mask
|
||||
}
|
||||
if (deser.version() >= Deserializer::V5_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
{
|
||||
|
||||
// Legacy libretro savestate
|
||||
if (settings.platform.isArcade())
|
||||
sys_nvmem->Deserialize(deser);
|
||||
|
|
|
@ -1399,10 +1399,6 @@ void deserialize(Deserializer& deser)
|
|||
{
|
||||
deser >> packet_cmd;
|
||||
read_buff.cache_size = 0;
|
||||
// read_buff (old)
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO
|
||||
|| (deser.version() >= Deserializer::V5 && deser.version() < Deserializer::V8))
|
||||
deser.skip(4 + 4 + 2352 * 8192);
|
||||
}
|
||||
deser >> pio_buff;
|
||||
deser >> set_mode_offset;
|
||||
|
@ -1422,7 +1418,7 @@ void deserialize(Deserializer& deser)
|
|||
deser >> SecNumber;
|
||||
deser >> GDStatus;
|
||||
deser >> ByteCount;
|
||||
if (deser.version() >= Deserializer::V5_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
if (deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
deser.skip<u32>(); // GDROM_TICK
|
||||
}
|
||||
|
||||
|
|
|
@ -673,11 +673,6 @@ void naomi_Serialize(Serializer& ser)
|
|||
}
|
||||
void naomi_Deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // naomi_updates
|
||||
deser.skip<u32>(); // BoardID
|
||||
}
|
||||
deser >> GSerialBuffer;
|
||||
deser >> BSerialBuffer;
|
||||
deser >> GBufPos;
|
||||
|
|
|
@ -496,7 +496,8 @@ void rend_serialize(Serializer& ser)
|
|||
}
|
||||
void rend_deserialize(Deserializer& deser)
|
||||
{
|
||||
if ((deser.version() >= Deserializer::V12_LIBRETRO && deser.version() < Deserializer::V5) || deser.version() >= Deserializer::V12)
|
||||
if ((deser.version() >= Deserializer::V12_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
|| deser.version() >= Deserializer::V12)
|
||||
deser >> fb_w_cur;
|
||||
else
|
||||
fb_w_cur = 1;
|
||||
|
|
|
@ -84,26 +84,13 @@ void serialize(Serializer& ser)
|
|||
|
||||
void deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // FrameCount
|
||||
deser.skip<bool>(); // pend_rend
|
||||
}
|
||||
|
||||
YUV_deserialize(deser);
|
||||
|
||||
if (deser.version() >= Deserializer::V5_LIBRETRO && deser.version() < Deserializer::V9_LIBRETRO)
|
||||
deser.skip<bool>(); // fog_needs_update
|
||||
deser >> pvr_regs;
|
||||
fog_needs_update = true;
|
||||
|
||||
spg_Deserialize(deser);
|
||||
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip(4 * 256); // ta_type_lut
|
||||
deser.skip(2048); // ta_fsm
|
||||
}
|
||||
rend_deserialize(deser);
|
||||
|
||||
deser >> ta_fsm[2048];
|
||||
|
@ -112,36 +99,6 @@ void deserialize(Deserializer& deser)
|
|||
deser >> taRenderPass;
|
||||
else
|
||||
taRenderPass = 0;
|
||||
if (deser.version() >= Deserializer::V5_LIBRETRO && deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<bool>(); // pal_needs_update
|
||||
deser.skip(4 * 4); // _pal_rev_256
|
||||
deser.skip(4 * 64); // _pal_rev_16
|
||||
deser.skip(4 * 4); // pal_rev_256
|
||||
deser.skip(4 * 64); // pal_rev_16
|
||||
deser.skip(4 * 65536 * 3); // decoded_colors
|
||||
deser.skip(4); // tileclip_val
|
||||
deser.skip(65536); // f32_su8_tbl
|
||||
deser.skip(4); // FaceBaseColor
|
||||
deser.skip(4); // FaceOffsColor
|
||||
deser.skip(4); // SFaceBaseColor
|
||||
deser.skip(4); // SFaceOffsColor
|
||||
|
||||
deser.skip(4); // palette_index
|
||||
deser.skip<bool>(); // KillTex
|
||||
deser.skip(4 * 1024); // palette16_ram
|
||||
deser.skip(4 * 1024); // palette32_ram
|
||||
deser.skip(4 * 1024 * 8 * 2); // detwiddle
|
||||
}
|
||||
else if (deser.version() <= Deserializer::V4)
|
||||
{
|
||||
deser.skip(4);
|
||||
deser.skip(65536);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
}
|
||||
if (deser.version() >= Deserializer::V11 || (deser.version() >= Deserializer::V10_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO))
|
||||
DeserializeTAContext(deser);
|
||||
|
||||
|
|
|
@ -309,20 +309,7 @@ void spg_Deserialize(Deserializer& deser)
|
|||
if (deser.version() < Deserializer::V30)
|
||||
deser.skip<u32>(); // in_vblank
|
||||
deser >> clc_pvr_scanline;
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser >> pvr_numscanlines;
|
||||
deser >> prv_cur_scanline;
|
||||
deser >> vblk_cnt;
|
||||
deser >> Line_Cycles;
|
||||
deser >> Frame_Cycles;
|
||||
deser.skip<double>(); // speed_load_mspdf
|
||||
deser.skip<u32>(); // mips_counter
|
||||
deser.skip<double>(); // full_rps
|
||||
if (deser.version() <= Deserializer::V4)
|
||||
deser.skip<u32>(); // fskip
|
||||
}
|
||||
else if (deser.version() >= Deserializer::V12)
|
||||
if (deser.version() >= Deserializer::V12)
|
||||
{
|
||||
deser >> maple_int_pending;
|
||||
if (deser.version() >= Deserializer::V14)
|
||||
|
|
|
@ -232,7 +232,7 @@ static void deserializeContext(Deserializer& deser, TA_context **pctx)
|
|||
deser.deserialize(tad.thd_root, size);
|
||||
tad.thd_data = tad.thd_root + size;
|
||||
if ((deser.version() >= Deserializer::V12 && deser.version() < Deserializer::V26)
|
||||
|| (deser.version() >= Deserializer::V12_LIBRETRO && deser.version() < Deserializer::V5))
|
||||
|| (deser.version() >= Deserializer::V12_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO))
|
||||
{
|
||||
u32 render_pass_count;
|
||||
deser >> render_pass_count;
|
||||
|
|
|
@ -255,8 +255,6 @@ void interrupts_serialize(Serializer& ser)
|
|||
|
||||
void interrupts_deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
deser.skip(2);
|
||||
deser >> InterruptEnvId;
|
||||
deser >> InterruptBit;
|
||||
deser >> InterruptLevelBit;
|
||||
|
|
|
@ -980,11 +980,6 @@ void deserialize(Deserializer& deser)
|
|||
deser >> (*p_sh4rcb).sq_buffer;
|
||||
|
||||
deser >> (*p_sh4rcb).cntx;
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // old_rm
|
||||
deser.skip<u32>(); // old_dn
|
||||
}
|
||||
if (deser.version() >= Deserializer::V19 && deser.version() < Deserializer::V21)
|
||||
deser.skip<u32>(); // sh4InterpCycles
|
||||
if (deser.version() < Deserializer::V21)
|
||||
|
@ -1011,14 +1006,8 @@ void serialize2(Serializer& ser)
|
|||
void deserialize2(Deserializer& deser)
|
||||
{
|
||||
deser >> SCIF_SCFSR2;
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO
|
||||
|| (deser.version() >= Deserializer::V5 && deser.version() < Deserializer::V8))
|
||||
{
|
||||
deser.skip<bool>(); // SCIF_SCFRDR2
|
||||
deser.skip<u32>(); // SCIF_SCFDR2
|
||||
}
|
||||
else if ((deser.version() >= Deserializer::V11_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
|| deser.version() >= Deserializer::V11)
|
||||
if (deser.version() >= Deserializer::V11
|
||||
|| (deser.version() >= Deserializer::V11_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO))
|
||||
deser >> SCIF_SCSCR2;
|
||||
deser >> BSC_PDTRA;
|
||||
|
||||
|
@ -1026,24 +1015,9 @@ void deserialize2(Deserializer& deser)
|
|||
|
||||
deser >> CCN_QACR_TR;
|
||||
|
||||
if (deser.version() < Deserializer::V6_LIBRETRO)
|
||||
{
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
deser >> UTLB[i].Address;
|
||||
deser >> UTLB[i].Data;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
deser >> ITLB[i].Address;
|
||||
deser >> ITLB[i].Data;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
deser >> UTLB;
|
||||
deser >> ITLB;
|
||||
}
|
||||
deser >> UTLB;
|
||||
deser >> ITLB;
|
||||
|
||||
if (deser.version() >= Deserializer::V11
|
||||
|| (deser.version() >= Deserializer::V11_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO))
|
||||
deser >> sq_remap;
|
||||
|
|
|
@ -247,9 +247,6 @@ void sh4_sched_deserialize(Deserializer& deser)
|
|||
|
||||
if (deser.version() >= Deserializer::V19 && deser.version() <= Deserializer::V31)
|
||||
deser.skip<u32>(); // sh4_sched_next_id
|
||||
else if ((deser.version() >= Deserializer::V5 && deser.version() < Deserializer::V8)
|
||||
|| deser.version() < Deserializer::V9_LIBRETRO)
|
||||
deser.skip<u32>(); // sh4_sched_intr
|
||||
|
||||
sh4_sched_deserialize(deser, aica::aica_schid);
|
||||
sh4_sched_deserialize(deser, aica::rtc_schid);
|
||||
|
@ -260,12 +257,4 @@ void sh4_sched_deserialize(Deserializer& deser)
|
|||
sh4_sched_deserialize(deser, id);
|
||||
sh4_sched_deserialize(deser, render_end_schid);
|
||||
sh4_sched_deserialize(deser, vblank_schid);
|
||||
|
||||
if ((deser.version() >= Deserializer::V5 && deser.version() < Deserializer::V8)
|
||||
|| deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // sch_list[time_sync].tag
|
||||
deser.skip<u32>(); // sch_list[time_sync].start
|
||||
deser.skip<u32>(); // sch_list[time_sync].end
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,44 +99,20 @@ static void dc_deserialize_libretro(Deserializer& deser)
|
|||
|
||||
naomi_Deserialize(deser);
|
||||
|
||||
if (deser.version() < Deserializer::V9_LIBRETRO)
|
||||
{
|
||||
deser.skip<u32>(); // cycle_counter
|
||||
deser.skip<u32>(); // idxnxx
|
||||
deser.skip(44); // sizeof(state_t)
|
||||
deser.skip<u32>(); // div_som_reg1
|
||||
deser.skip<u32>(); // div_som_reg2
|
||||
deser.skip<u32>(); // div_som_reg3
|
||||
|
||||
deser.skip<u32>(); // LastAddr
|
||||
deser.skip<u32>(); // LastAddr_min
|
||||
deser.skip(1024); // block_hash
|
||||
|
||||
// RegisterRead, RegisterWrite
|
||||
for (int i = 0; i < 74; i++) // sh4_reg_count (changed to 75 on 9/6/2020 (V9), V10 on 22/6/2020)
|
||||
{
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
}
|
||||
deser.skip<u32>(); // fallback_blocks
|
||||
deser.skip<u32>(); // total_blocks
|
||||
deser.skip<u32>(); // REMOVED_OPS
|
||||
}
|
||||
deser >> config::Broadcast.get();
|
||||
deser >> config::Cable.get();
|
||||
deser >> config::Region.get();
|
||||
|
||||
if (CurrentCartridge != nullptr && (!settings.platform.isAtomiswave() || deser.version() >= Deserializer::V10_LIBRETRO))
|
||||
CurrentCartridge->Deserialize(deser);
|
||||
if (deser.version() >= Deserializer::V7_LIBRETRO)
|
||||
gd_hle_state.Deserialize(deser);
|
||||
gd_hle_state.Deserialize(deser);
|
||||
|
||||
DEBUG_LOG(SAVESTATE, "Loaded %d bytes (libretro compat)", (u32)deser.size());
|
||||
}
|
||||
|
||||
void dc_deserialize(Deserializer& deser)
|
||||
{
|
||||
if (deser.version() >= Deserializer::V5_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
if (deser.version() >= Deserializer::V9_LIBRETRO && deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
{
|
||||
dc_deserialize_libretro(deser);
|
||||
sh4_sched_ffts();
|
||||
|
@ -173,29 +149,6 @@ void dc_deserialize(Deserializer& deser)
|
|||
|
||||
naomi_Deserialize(deser);
|
||||
|
||||
if (deser.version() < Deserializer::V5)
|
||||
{
|
||||
deser.skip<u32>(); // idxnxx
|
||||
deser.skip(44); // sizeof(state_t)
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(1024);
|
||||
|
||||
deser.skip(8 * 74); // sh4_reg_count
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
|
||||
deser.skip(2 * 4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
deser.skip(4 * 4);
|
||||
deser.skip(4);
|
||||
deser.skip(4);
|
||||
}
|
||||
deser >> config::Broadcast.get();
|
||||
verify(config::Broadcast <= 4);
|
||||
deser >> config::Cable.get();
|
||||
|
@ -205,8 +158,7 @@ void dc_deserialize(Deserializer& deser)
|
|||
|
||||
if (CurrentCartridge != NULL)
|
||||
CurrentCartridge->Deserialize(deser);
|
||||
if (deser.version() >= Deserializer::V6)
|
||||
gd_hle_state.Deserialize(deser);
|
||||
gd_hle_state.Deserialize(deser);
|
||||
sh4_sched_ffts();
|
||||
|
||||
DEBUG_LOG(SAVESTATE, "Loaded %d bytes", (u32)deser.size());
|
||||
|
|
|
@ -26,25 +26,14 @@ class SerializeBase
|
|||
{
|
||||
public:
|
||||
enum Version : int32_t {
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5_LIBRETRO,
|
||||
V6_LIBRETRO,
|
||||
V7_LIBRETRO,
|
||||
V8_LIBRETRO,
|
||||
V9_LIBRETRO,
|
||||
V9_LIBRETRO = 8,
|
||||
V10_LIBRETRO,
|
||||
V11_LIBRETRO,
|
||||
V12_LIBRETRO,
|
||||
V13_LIBRETRO,
|
||||
VLAST_LIBRETRO = V13_LIBRETRO,
|
||||
|
||||
V5 = 800,
|
||||
V6,
|
||||
V7,
|
||||
V8,
|
||||
V8 = 803,
|
||||
V9,
|
||||
V10,
|
||||
V11,
|
||||
|
@ -99,7 +88,7 @@ public:
|
|||
: SerializeBase(limit, rollback), data((const u8 *)data)
|
||||
{
|
||||
deserialize(_version);
|
||||
if (_version > V13_LIBRETRO && _version < V5)
|
||||
if (_version < V9_LIBRETRO || (_version > V13_LIBRETRO && _version < V8))
|
||||
throw Exception("Unsupported version");
|
||||
if (_version > Current)
|
||||
throw Exception("Version too recent");
|
||||
|
@ -230,7 +219,7 @@ void register_deserialize(T& regs, Deserializer& deser)
|
|||
{
|
||||
for (auto& reg : regs)
|
||||
{
|
||||
if (deser.version() < Deserializer::V5)
|
||||
if (deser.version() <= Deserializer::VLAST_LIBRETRO)
|
||||
deser.skip<u32>(); // regs.data[i].flags
|
||||
if (!(reg.flags & REG_RF))
|
||||
deser >> reg.data32;
|
||||
|
|
Loading…
Reference in New Issue