mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	code: Remove save state compatibility checks (#6980)
This commit is contained in:
		
							parent
							
								
									542209c993
								
							
						
					
					
						commit
						d1c16bad78
					
				
					 13 changed files with 52 additions and 115 deletions
				
			
		|  | @ -35,8 +35,7 @@ public: | ||||||
|                 const auto r = GetCpuRegister(i); |                 const auto r = GetCpuRegister(i); | ||||||
|                 ar << r; |                 ar << r; | ||||||
|             } |             } | ||||||
|             std::size_t fpu_reg_count = file_version == 0 ? 16 : 64; |             for (std::size_t i = 0; i < 64; i++) { | ||||||
|             for (std::size_t i = 0; i < fpu_reg_count; i++) { |  | ||||||
|                 const auto r = GetFpuRegister(i); |                 const auto r = GetFpuRegister(i); | ||||||
|                 ar << r; |                 ar << r; | ||||||
|             } |             } | ||||||
|  | @ -55,8 +54,7 @@ public: | ||||||
|                 ar >> r; |                 ar >> r; | ||||||
|                 SetCpuRegister(i, r); |                 SetCpuRegister(i, r); | ||||||
|             } |             } | ||||||
|             std::size_t fpu_reg_count = file_version == 0 ? 16 : 64; |             for (std::size_t i = 0; i < 64; i++) { | ||||||
|             for (std::size_t i = 0; i < fpu_reg_count; i++) { |  | ||||||
|                 ar >> r; |                 ar >> r; | ||||||
|                 SetFpuRegister(i, r); |                 SetFpuRegister(i, r); | ||||||
|             } |             } | ||||||
|  | @ -268,8 +266,7 @@ private: | ||||||
|         ar << pc; |         ar << pc; | ||||||
|         const auto cpsr = GetCPSR(); |         const auto cpsr = GetCPSR(); | ||||||
|         ar << cpsr; |         ar << cpsr; | ||||||
|         int vfp_reg_count = file_version == 0 ? 32 : 64; |         for (int i = 0; i < 64; i++) { | ||||||
|         for (int i = 0; i < vfp_reg_count; i++) { |  | ||||||
|             const auto r = GetVFPReg(i); |             const auto r = GetVFPReg(i); | ||||||
|             ar << r; |             ar << r; | ||||||
|         } |         } | ||||||
|  | @ -316,8 +313,7 @@ private: | ||||||
|         SetPC(r); |         SetPC(r); | ||||||
|         ar >> r; |         ar >> r; | ||||||
|         SetCPSR(r); |         SetCPSR(r); | ||||||
|         int vfp_reg_count = file_version == 0 ? 32 : 64; |         for (int i = 0; i < 64; i++) { | ||||||
|         for (int i = 0; i < vfp_reg_count; i++) { |  | ||||||
|             ar >> r; |             ar >> r; | ||||||
|             SetVFPReg(i, r); |             SetVFPReg(i, r); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -717,9 +717,7 @@ void System::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     ar&* memory.get(); |     ar&* memory.get(); | ||||||
|     ar&* kernel.get(); |     ar&* kernel.get(); | ||||||
|     VideoCore::serialize(ar, file_version); |     VideoCore::serialize(ar, file_version); | ||||||
|     if (file_version >= 1) { |     ar& movie; | ||||||
|         ar& movie; |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     // This needs to be set from somewhere - might as well be here!
 |     // This needs to be set from somewhere - might as well be here!
 | ||||||
|     if (Archive::is_loading::value) { |     if (Archive::is_loading::value) { | ||||||
|  |  | ||||||
|  | @ -299,13 +299,7 @@ private: | ||||||
|     void serialize(Archive& ar, const unsigned int file_version) { |     void serialize(Archive& ar, const unsigned int file_version) { | ||||||
|         // event_types set during initialization of other things
 |         // event_types set during initialization of other things
 | ||||||
|         ar& timers; |         ar& timers; | ||||||
|         if (file_version == 0) { |         ar& current_timer; | ||||||
|             std::shared_ptr<Timer> x; |  | ||||||
|             ar& x; |  | ||||||
|             current_timer = x.get(); |  | ||||||
|         } else { |  | ||||||
|             ar& current_timer; |  | ||||||
|         } |  | ||||||
|         if (Archive::is_loading::value) { |         if (Archive::is_loading::value) { | ||||||
|             event_queue_locked = true; |             event_queue_locked = true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -79,29 +79,13 @@ private: | ||||||
|     void WakeUp(ThreadWakeupReason reason, std::shared_ptr<Thread> thread, |     void WakeUp(ThreadWakeupReason reason, std::shared_ptr<Thread> thread, | ||||||
|                 std::shared_ptr<WaitObject> object) override; |                 std::shared_ptr<WaitObject> object) override; | ||||||
| 
 | 
 | ||||||
|     class DummyCallback : public WakeupCallback { |  | ||||||
|     public: |  | ||||||
|         void WakeUp(ThreadWakeupReason reason, std::shared_ptr<Thread> thread, |  | ||||||
|                     std::shared_ptr<WaitObject> object) override {} |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     friend class boost::serialization::access; |     friend class boost::serialization::access; | ||||||
|     template <class Archive> |     template <class Archive> | ||||||
|     void serialize(Archive& ar, const unsigned int file_version) { |     void serialize(Archive& ar, const unsigned int file_version) { | ||||||
|         ar& boost::serialization::base_object<Object>(*this); |         ar& boost::serialization::base_object<Object>(*this); | ||||||
|         if (file_version == 1) { |  | ||||||
|             // This rigmarole is needed because in past versions, AddressArbiter inherited
 |  | ||||||
|             // WakeupCallback But it turns out this breaks shared_from_this, so we split it out.
 |  | ||||||
|             // Using a dummy class to deserialize a base_object allows compatibility to be
 |  | ||||||
|             // maintained.
 |  | ||||||
|             DummyCallback x; |  | ||||||
|             ar& boost::serialization::base_object<WakeupCallback>(x); |  | ||||||
|         } |  | ||||||
|         ar& name; |         ar& name; | ||||||
|         ar& waiting_threads; |         ar& waiting_threads; | ||||||
|         if (file_version > 1) { |         ar& timeout_callback; | ||||||
|             ar& timeout_callback; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -45,16 +45,7 @@ void Thread::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     ar& tls_address; |     ar& tls_address; | ||||||
|     ar& held_mutexes; |     ar& held_mutexes; | ||||||
|     ar& pending_mutexes; |     ar& pending_mutexes; | ||||||
| 
 |     ar& owner_process; | ||||||
|     // Note: this is equivalent of what is done in boost/serialization/weak_ptr.hpp, but it's
 |  | ||||||
|     // compatible with previous versions of savestates.
 |  | ||||||
|     // TODO(SaveStates): When the savestate version is bumped, simplify this again.
 |  | ||||||
|     std::shared_ptr<Process> shared_owner_process = owner_process.lock(); |  | ||||||
|     ar& shared_owner_process; |  | ||||||
|     if (Archive::is_loading::value) { |  | ||||||
|         owner_process = shared_owner_process; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     ar& wait_objects; |     ar& wait_objects; | ||||||
|     ar& wait_address; |     ar& wait_address; | ||||||
|     ar& name; |     ar& name; | ||||||
|  |  | ||||||
|  | @ -11,9 +11,9 @@ | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <boost/container/flat_set.hpp> | #include <boost/container/flat_set.hpp> | ||||||
| #include <boost/serialization/export.hpp> | #include <boost/serialization/export.hpp> | ||||||
| #include <boost/serialization/shared_ptr.hpp> |  | ||||||
| #include <boost/serialization/unordered_map.hpp> | #include <boost/serialization/unordered_map.hpp> | ||||||
| #include <boost/serialization/vector.hpp> | #include <boost/serialization/vector.hpp> | ||||||
|  | #include <boost/serialization/weak_ptr.hpp> | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| #include "common/thread_queue_list.h" | #include "common/thread_queue_list.h" | ||||||
| #include "core/arm/arm_interface.h" | #include "core/arm/arm_interface.h" | ||||||
|  |  | ||||||
|  | @ -188,9 +188,7 @@ private: | ||||||
|     void serialize(Archive& ar, const unsigned int file_version) { |     void serialize(Archive& ar, const unsigned int file_version) { | ||||||
|         ar& next_title_id; |         ar& next_title_id; | ||||||
|         ar& next_media_type; |         ar& next_media_type; | ||||||
|         if (file_version > 0) { |         ar& flags; | ||||||
|             ar& flags; |  | ||||||
|         } |  | ||||||
|         ar& current_title_id; |         ar& current_title_id; | ||||||
|         ar& current_media_type; |         ar& current_media_type; | ||||||
|     } |     } | ||||||
|  | @ -517,25 +515,23 @@ private: | ||||||
|     void serialize(Archive& ar, const unsigned int file_version) { |     void serialize(Archive& ar, const unsigned int file_version) { | ||||||
|         ar& next_parameter; |         ar& next_parameter; | ||||||
|         ar& app_jump_parameters; |         ar& app_jump_parameters; | ||||||
|         if (file_version > 0) { |         ar& delayed_parameter; | ||||||
|             ar& delayed_parameter; |         ar& app_start_parameters; | ||||||
|             ar& app_start_parameters; |         ar& deliver_arg; | ||||||
|             ar& deliver_arg; |         ar& capture_info; | ||||||
|             ar& capture_info; |         ar& capture_buffer_info; | ||||||
|             ar& capture_buffer_info; |         ar& active_slot; | ||||||
|             ar& active_slot; |         ar& last_library_launcher_slot; | ||||||
|             ar& last_library_launcher_slot; |         ar& last_prepared_library_applet; | ||||||
|             ar& last_prepared_library_applet; |         ar& last_system_launcher_slot; | ||||||
|             ar& last_system_launcher_slot; |         ar& last_jump_to_home_slot; | ||||||
|             ar& last_jump_to_home_slot; |         ar& ordered_to_close_sys_applet; | ||||||
|             ar& ordered_to_close_sys_applet; |         ar& ordered_to_close_application; | ||||||
|             ar& ordered_to_close_application; |         ar& application_cancelled; | ||||||
|             ar& application_cancelled; |         ar& application_close_target; | ||||||
|             ar& application_close_target; |         ar& new_3ds_mode_blocked; | ||||||
|             ar& new_3ds_mode_blocked; |         ar& lock; | ||||||
|             ar& lock; |         ar& capture_info; | ||||||
|             ar& capture_info; |  | ||||||
|         } |  | ||||||
|         ar& applet_slots; |         ar& applet_slots; | ||||||
|         ar& library_applet_closing_command; |         ar& library_applet_closing_command; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -48,9 +48,7 @@ void Module::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     ar& cpu_percent; |     ar& cpu_percent; | ||||||
|     ar& screen_capture_post_permission; |     ar& screen_capture_post_permission; | ||||||
|     ar& applet_manager; |     ar& applet_manager; | ||||||
|     if (file_version > 0) { |     ar& wireless_reboot_info; | ||||||
|         ar& wireless_reboot_info; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SERIALIZE_IMPL(Module) | SERIALIZE_IMPL(Module) | ||||||
|  |  | ||||||
|  | @ -30,11 +30,7 @@ void Module::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     ar& cameras; |     ar& cameras; | ||||||
|     ar& ports; |     ar& ports; | ||||||
|     ar& is_camera_reload_pending; |     ar& is_camera_reload_pending; | ||||||
|     if (file_version > 0) { |     ar& initialized; | ||||||
|         ar& initialized; |  | ||||||
|     } else { |  | ||||||
|         initialized = true; |  | ||||||
|     } |  | ||||||
|     if (Archive::is_loading::value && initialized) { |     if (Archive::is_loading::value && initialized) { | ||||||
|         for (int i = 0; i < NumCameras; i++) { |         for (int i = 0; i < NumCameras; i++) { | ||||||
|             LoadCameraImplementation(cameras[i], i); |             LoadCameraImplementation(cameras[i], i); | ||||||
|  |  | ||||||
|  | @ -681,11 +681,6 @@ private: | ||||||
|     private: |     private: | ||||||
|         template <class Archive> |         template <class Archive> | ||||||
|         void serialize(Archive& ar, const unsigned int file_version) { |         void serialize(Archive& ar, const unsigned int file_version) { | ||||||
|             // For compatibility: put a nullptr here
 |  | ||||||
|             if (file_version == 0) { |  | ||||||
|                 std::unique_ptr<Camera::CameraInterface> x; |  | ||||||
|                 ar& x; |  | ||||||
|             } |  | ||||||
|             ar& contexts; |             ar& contexts; | ||||||
|             ar& current_context; |             ar& current_context; | ||||||
|             ar& frame_rate; |             ar& frame_rate; | ||||||
|  |  | ||||||
|  | @ -46,9 +46,7 @@ void Module::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     if (Archive::is_loading::value) { |     if (Archive::is_loading::value) { | ||||||
|         LoadInputDevices(); |         LoadInputDevices(); | ||||||
|     } |     } | ||||||
|     if (file_version >= 1) { |     ar& state.hex; | ||||||
|         ar& state.hex; |  | ||||||
|     } |  | ||||||
|     // Update events are set in the constructor
 |     // Update events are set in the constructor
 | ||||||
|     // Devices are set from the implementation (and are stateless afaik)
 |     // Devices are set from the implementation (and are stateless afaik)
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -400,18 +400,16 @@ private: | ||||||
|         ar& clamp; |         ar& clamp; | ||||||
|         // mic interface set in constructor
 |         // mic interface set in constructor
 | ||||||
|         ar& state; |         ar& state; | ||||||
|         if (file_version > 0) { |         // Maintain the internal mic state
 | ||||||
|             // Maintain the internal mic state
 |         ar& encoding; | ||||||
|             ar& encoding; |         bool is_sampling = mic && mic->IsSampling(); | ||||||
|             bool is_sampling = mic && mic->IsSampling(); |         ar& is_sampling; | ||||||
|             ar& is_sampling; |         if (Archive::is_loading::value) { | ||||||
|             if (Archive::is_loading::value) { |             if (is_sampling) { | ||||||
|                 if (is_sampling) { |                 CreateMic(); | ||||||
|                     CreateMic(); |                 StartSampling(); | ||||||
|                     StartSampling(); |             } else if (mic) { | ||||||
|                 } else if (mic) { |                 mic->StopSampling(); | ||||||
|                     mic->StopSampling(); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -153,37 +153,30 @@ void Movie::serialize(Archive& ar, const unsigned int file_version) { | ||||||
|     u64 _current_byte = static_cast<u64>(current_byte); |     u64 _current_byte = static_cast<u64>(current_byte); | ||||||
|     ar& _current_byte; |     ar& _current_byte; | ||||||
|     current_byte = static_cast<std::size_t>(_current_byte); |     current_byte = static_cast<std::size_t>(_current_byte); | ||||||
| 
 |     ar& current_input; | ||||||
|     if (file_version > 0) { |  | ||||||
|         ar& current_input; |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     std::vector<u8> recorded_input_ = recorded_input; |     std::vector<u8> recorded_input_ = recorded_input; | ||||||
|     ar& recorded_input_; |     ar& recorded_input_; | ||||||
| 
 | 
 | ||||||
|     ar& init_time; |     ar& init_time; | ||||||
| 
 | 
 | ||||||
|     if (file_version > 0) { |     if (Archive::is_loading::value) { | ||||||
|         if (Archive::is_loading::value) { |         u64 savestate_movie_id; | ||||||
|             u64 savestate_movie_id; |         ar& savestate_movie_id; | ||||||
|             ar& savestate_movie_id; |         if (id != savestate_movie_id) { | ||||||
|             if (id != savestate_movie_id) { |             if (savestate_movie_id == 0) { | ||||||
|                 if (savestate_movie_id == 0) { |                 throw std::runtime_error("You must close your movie to load this state"); | ||||||
|                     throw std::runtime_error("You must close your movie to load this state"); |             } else { | ||||||
|                 } else { |                 throw std::runtime_error("You must load the same movie to load this state"); | ||||||
|                     throw std::runtime_error("You must load the same movie to load this state"); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|         } else { |  | ||||||
|             ar& id; |  | ||||||
|         } |         } | ||||||
|  |     } else { | ||||||
|  |         ar& id; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Whether the state was made in MovieFinished state
 |     // Whether the state was made in MovieFinished state
 | ||||||
|     bool post_movie = play_mode == PlayMode::MovieFinished; |     bool post_movie = play_mode == PlayMode::MovieFinished; | ||||||
|     if (file_version > 0) { |     ar& post_movie; | ||||||
|         ar& post_movie; |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     if (Archive::is_loading::value && id != 0) { |     if (Archive::is_loading::value && id != 0) { | ||||||
|         if (!read_only) { |         if (!read_only) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue