mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	content_archive: Add getter for logo section of NCA
This commit is contained in:
		
							parent
							
								
									7c6bb8c17f
								
							
						
					
					
						commit
						318bf7c8e3
					
				| @ -359,6 +359,8 @@ bool NCA::ReadPFS0Section(const NCASectionHeader& section, const NCASectionTable | ||||
|             dirs.push_back(std::move(npfs)); | ||||
|             if (IsDirectoryExeFS(dirs.back())) | ||||
|                 exefs = dirs.back(); | ||||
|             else if (IsDirectoryLogoPartition(dirs.back())) | ||||
|                 logo = dirs.back(); | ||||
|         } else { | ||||
|             if (has_rights_id) | ||||
|                 status = Loader::ResultStatus::ErrorIncorrectTitlekeyOrTitlekek; | ||||
| @ -546,4 +548,8 @@ u64 NCA::GetBaseIVFCOffset() const { | ||||
|     return ivfc_offset; | ||||
| } | ||||
| 
 | ||||
| VirtualDir NCA::GetLogoPartition() const { | ||||
|     return logo; | ||||
| } | ||||
| 
 | ||||
| } // namespace FileSys
 | ||||
|  | ||||
| @ -74,6 +74,13 @@ inline bool IsDirectoryExeFS(const std::shared_ptr<VfsDirectory>& pfs) { | ||||
|     return pfs->GetFile("main") != nullptr && pfs->GetFile("main.npdm") != nullptr; | ||||
| } | ||||
| 
 | ||||
| inline bool IsDirectoryLogoPartition(const VirtualDir& pfs) { | ||||
|     // NintendoLogo is the static image in the top left corner while StartupMovie is the animation
 | ||||
|     // in the bottom right corner.
 | ||||
|     return pfs->GetFile("NintendoLogo.png") != nullptr && | ||||
|            pfs->GetFile("StartupMovie.gif") != nullptr; | ||||
| } | ||||
| 
 | ||||
| // An implementation of VfsDirectory that represents a Nintendo Content Archive (NCA) conatiner.
 | ||||
| // After construction, use GetStatus to determine if the file is valid and ready to be used.
 | ||||
| class NCA : public ReadOnlyVfsDirectory { | ||||
| @ -102,6 +109,8 @@ public: | ||||
|     // Returns the base ivfc offset used in BKTR patching.
 | ||||
|     u64 GetBaseIVFCOffset() const; | ||||
| 
 | ||||
|     VirtualDir GetLogoPartition() const; | ||||
| 
 | ||||
| private: | ||||
|     bool CheckSupportedNCA(const NCAHeader& header); | ||||
|     bool HandlePotentialHeaderDecryption(); | ||||
| @ -122,6 +131,7 @@ private: | ||||
| 
 | ||||
|     VirtualFile romfs = nullptr; | ||||
|     VirtualDir exefs = nullptr; | ||||
|     VirtualDir logo = nullptr; | ||||
|     VirtualFile file; | ||||
|     VirtualFile bktr_base_romfs; | ||||
|     u64 ivfc_offset = 0; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Zach Hilman
						Zach Hilman