|
@@ -53,22 +53,15 @@ NSP::NSP(VirtualFile file_)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ const auto files = pfs->GetFiles();
|
|
|
|
|
+
|
|
|
if (IsDirectoryExeFS(pfs)) {
|
|
if (IsDirectoryExeFS(pfs)) {
|
|
|
extracted = true;
|
|
extracted = true;
|
|
|
- exefs = pfs;
|
|
|
|
|
-
|
|
|
|
|
- const auto& files = pfs->GetFiles();
|
|
|
|
|
- const auto romfs_iter =
|
|
|
|
|
- std::find_if(files.begin(), files.end(), [](const FileSys::VirtualFile& file) {
|
|
|
|
|
- return file->GetName().find(".romfs") != std::string::npos;
|
|
|
|
|
- });
|
|
|
|
|
- if (romfs_iter != files.end())
|
|
|
|
|
- romfs = *romfs_iter;
|
|
|
|
|
|
|
+ InitializeExeFSAndRomFS(files);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
extracted = false;
|
|
extracted = false;
|
|
|
- const auto files = pfs->GetFiles();
|
|
|
|
|
|
|
|
|
|
SetTicketKeys(files);
|
|
SetTicketKeys(files);
|
|
|
ReadNCAs(files);
|
|
ReadNCAs(files);
|
|
@@ -212,6 +205,20 @@ bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void NSP::InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files) {
|
|
|
|
|
+ exefs = pfs;
|
|
|
|
|
+
|
|
|
|
|
+ const auto romfs_iter = std::find_if(files.begin(), files.end(), [](const VirtualFile& file) {
|
|
|
|
|
+ return file->GetName().find(".romfs") != std::string::npos;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ if (romfs_iter == files.end()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ romfs = *romfs_iter;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void NSP::ReadNCAs(const std::vector<VirtualFile>& files) {
|
|
void NSP::ReadNCAs(const std::vector<VirtualFile>& files) {
|
|
|
for (const auto& outer_file : files) {
|
|
for (const auto& outer_file : files) {
|
|
|
if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {
|
|
if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {
|