| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  | // Copyright 2018 yuzu emulator team
 | 
					
						
							|  |  |  | // Licensed under GPLv2 or any later version
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <memory>
 | 
					
						
							|  |  |  | #include "common/common_types.h"
 | 
					
						
							|  |  |  | #include "core/file_sys/vfs.h"
 | 
					
						
							|  |  |  | #include "core/loader/loader.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FileSys { | 
					
						
							|  |  |  | class NACP; | 
					
						
							|  |  |  | class NSP; | 
					
						
							|  |  |  | } // namespace FileSys
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Loader { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AppLoader_NCA; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /// Loads an XCI file
 | 
					
						
							|  |  |  | class AppLoader_NSP final : public AppLoader { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     explicit AppLoader_NSP(FileSys::VirtualFile file); | 
					
						
							| 
									
										
										
										
											2018-08-25 22:42:54 -04:00
										 |  |  |     ~AppLoader_NSP() override; | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * Returns the type of the file | 
					
						
							|  |  |  |      * @param file std::shared_ptr<VfsFile> open file | 
					
						
							|  |  |  |      * @return FileType found, or FileType::Error if this loader doesn't know it | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     static FileType IdentifyType(const FileSys::VirtualFile& file); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-05 17:42:41 -05:00
										 |  |  |     FileType GetFileType() const override { | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  |         return IdentifyType(file); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-09 17:03:04 -04:00
										 |  |  |     LoadResult Load(Kernel::Process& process) override; | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-25 09:17:14 -04:00
										 |  |  |     ResultStatus ReadRomFS(FileSys::VirtualFile& file) override; | 
					
						
							|  |  |  |     u64 ReadRomFSIVFCOffset() const override; | 
					
						
							| 
									
										
										
										
											2018-09-25 09:18:55 -04:00
										 |  |  |     ResultStatus ReadUpdateRaw(FileSys::VirtualFile& file) override; | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  |     ResultStatus ReadProgramId(u64& out_program_id) override; | 
					
						
							|  |  |  |     ResultStatus ReadIcon(std::vector<u8>& buffer) override; | 
					
						
							|  |  |  |     ResultStatus ReadTitle(std::string& title) override; | 
					
						
							| 
									
										
										
										
											2018-12-06 20:27:50 -05:00
										 |  |  |     ResultStatus ReadControlData(FileSys::NACP& nacp) override; | 
					
						
							| 
									
										
										
										
											2018-12-24 16:19:41 -05:00
										 |  |  |     ResultStatus ReadManualRomFS(FileSys::VirtualFile& file) override; | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-15 15:56:52 -05:00
										 |  |  |     ResultStatus ReadBanner(std::vector<u8>& buffer) override; | 
					
						
							|  |  |  |     ResultStatus ReadLogo(std::vector<u8>& buffer) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  | private: | 
					
						
							|  |  |  |     std::unique_ptr<FileSys::NSP> nsp; | 
					
						
							|  |  |  |     std::unique_ptr<AppLoader> secondary_loader; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     FileSys::VirtualFile icon_file; | 
					
						
							| 
									
										
										
										
											2018-10-09 14:22:31 -04:00
										 |  |  |     std::unique_ptr<FileSys::NACP> nacp_file; | 
					
						
							| 
									
										
										
										
											2018-08-25 11:49:31 -04:00
										 |  |  |     u64 title_id; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Loader
 |