mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Added core serialization
This commit is contained in:
		
							parent
							
								
									dc04774ece
								
							
						
					
					
						commit
						ee2cae2093
					
				
					 5 changed files with 47 additions and 9 deletions
				
			
		|  | @ -6,6 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <vector> | #include <vector> | ||||||
|  | #include "boost/serialization/array.hpp" | ||||||
| #include "audio_core/audio_types.h" | #include "audio_core/audio_types.h" | ||||||
| #include "audio_core/time_stretch.h" | #include "audio_core/time_stretch.h" | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
|  |  | ||||||
|  | @ -4,9 +4,12 @@ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <utility> | #include <utility> | ||||||
|  | #include "boost/serialization/array.hpp" | ||||||
|  | #include "boost/serialization/unique_ptr.hpp" | ||||||
| #include "audio_core/dsp_interface.h" | #include "audio_core/dsp_interface.h" | ||||||
| #include "audio_core/hle/hle.h" | #include "audio_core/hle/hle.h" | ||||||
| #include "audio_core/lle/lle.h" | #include "audio_core/lle/lle.h" | ||||||
|  | #include "common/archives.h" | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
| #include "common/texture.h" | #include "common/texture.h" | ||||||
| #include "core/arm/arm_interface.h" | #include "core/arm/arm_interface.h" | ||||||
|  | @ -30,7 +33,9 @@ | ||||||
| #include "core/hle/service/fs/archive.h" | #include "core/hle/service/fs/archive.h" | ||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
| #include "core/hle/service/sm/sm.h" | #include "core/hle/service/sm/sm.h" | ||||||
|  | #include "core/hw/gpu.h" | ||||||
| #include "core/hw/hw.h" | #include "core/hw/hw.h" | ||||||
|  | #include "core/hw/lcd.h" | ||||||
| #include "core/loader/loader.h" | #include "core/loader/loader.h" | ||||||
| #include "core/movie.h" | #include "core/movie.h" | ||||||
| #include "core/rpc/rpc_server.h" | #include "core/rpc/rpc_server.h" | ||||||
|  | @ -389,4 +394,25 @@ void System::Reset() { | ||||||
|     Load(*m_emu_window, m_filepath); |     Load(*m_emu_window, m_filepath); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | template<class Archive> | ||||||
|  | void System::serialize(Archive & ar, const unsigned int file_version) | ||||||
|  | { | ||||||
|  |     ar & memory; | ||||||
|  |     ar & GPU::g_regs; | ||||||
|  |     ar & LCD::g_regs; | ||||||
|  |     ar & dsp_core->GetDspMemory(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void System::Save(std::ostream &stream) const | ||||||
|  | { | ||||||
|  |     boost::archive::binary_oarchive oa{stream}; | ||||||
|  |     oa & *this; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void System::Load(std::istream &stream) | ||||||
|  | { | ||||||
|  |     boost::archive::binary_iarchive ia{stream}; | ||||||
|  |     ia & *this; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| } // namespace Core
 | } // namespace Core
 | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
|  | #include "boost/serialization/access.hpp" | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| #include "core/custom_tex_cache.h" | #include "core/custom_tex_cache.h" | ||||||
| #include "core/frontend/applets/mii_selector.h" | #include "core/frontend/applets/mii_selector.h" | ||||||
|  | @ -15,7 +16,6 @@ | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
| #include "core/perf_stats.h" | #include "core/perf_stats.h" | ||||||
| #include "core/telemetry_session.h" | #include "core/telemetry_session.h" | ||||||
| class boost::serialization::access; |  | ||||||
| 
 | 
 | ||||||
| class ARM_Interface; | class ARM_Interface; | ||||||
| 
 | 
 | ||||||
|  | @ -272,6 +272,10 @@ public: | ||||||
|         return registered_image_interface; |         return registered_image_interface; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     void Save(std::ostream &stream) const; | ||||||
|  | 
 | ||||||
|  |     void Load(std::istream &stream); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     /**
 |     /**
 | ||||||
|      * Initialize the emulated system. |      * Initialize the emulated system. | ||||||
|  | @ -342,11 +346,7 @@ private: | ||||||
| 
 | 
 | ||||||
|     friend class boost::serialization::access; |     friend class boost::serialization::access; | ||||||
|     template<typename Archive> |     template<typename Archive> | ||||||
|     void serialize(Archive & ar, const unsigned int file_version) |     void serialize(Archive & ar, const unsigned int file_version); | ||||||
|     { |  | ||||||
|         ar & GPU::g_regs; |  | ||||||
|         ar & LCD::g_regs; |  | ||||||
|     } |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| inline ARM_Interface& CPU() { | inline ARM_Interface& CPU() { | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| #include <cstring> | #include <cstring> | ||||||
| #include "boost/serialization/array.hpp" | #include "boost/serialization/array.hpp" | ||||||
| #include "boost/serialization/nvp.hpp" | #include "boost/serialization/nvp.hpp" | ||||||
|  | #include "boost/serialization/unique_ptr.hpp" | ||||||
| #include "audio_core/dsp_interface.h" | #include "audio_core/dsp_interface.h" | ||||||
| #include "common/archives.h" | #include "common/archives.h" | ||||||
| #include "common/assert.h" | #include "common/assert.h" | ||||||
|  | @ -107,11 +108,17 @@ private: | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| SERIALIZE_IMPL(MemorySystem::Impl) |  | ||||||
| 
 |  | ||||||
| MemorySystem::MemorySystem() : impl(std::make_unique<Impl>()) {} | MemorySystem::MemorySystem() : impl(std::make_unique<Impl>()) {} | ||||||
| MemorySystem::~MemorySystem() = default; | MemorySystem::~MemorySystem() = default; | ||||||
| 
 | 
 | ||||||
|  | template<class Archive> | ||||||
|  | void MemorySystem::serialize(Archive & ar, const unsigned int file_version) | ||||||
|  | { | ||||||
|  |     ar & impl; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | SERIALIZE_IMPL(MemorySystem) | ||||||
|  | 
 | ||||||
| void MemorySystem::SetCurrentPageTable(PageTable* page_table) { | void MemorySystem::SetCurrentPageTable(PageTable* page_table) { | ||||||
|     impl->current_page_table = page_table; |     impl->current_page_table = page_table; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include "boost/serialization/split_member.hpp" | #include "boost/serialization/access.hpp" | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| #include "core/mmio.h" | #include "core/mmio.h" | ||||||
| 
 | 
 | ||||||
|  | @ -324,6 +324,10 @@ private: | ||||||
|     class Impl; |     class Impl; | ||||||
| 
 | 
 | ||||||
|     std::unique_ptr<Impl> impl; |     std::unique_ptr<Impl> impl; | ||||||
|  | 
 | ||||||
|  |     friend class boost::serialization::access; | ||||||
|  |     template<class Archive> | ||||||
|  |     void serialize(Archive & ar, const unsigned int file_version); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /// Determines if the given VAddr is valid for the specified process.
 | /// Determines if the given VAddr is valid for the specified process.
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue