|
|
|
@ -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;
|
|
|
|
|