|
|
|
@ -188,11 +188,11 @@ NCA::NCA(VirtualFile file_) : file(std::move(file_)) { |
|
|
|
header.section_tables[i].media_offset * MEDIA_OFFSET_MULTIPLIER + |
|
|
|
section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].offset; |
|
|
|
const size_t romfs_size = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].size; |
|
|
|
const auto dec = |
|
|
|
auto dec = |
|
|
|
Decrypt(section, std::make_shared<OffsetVfsFile>(file, romfs_size, romfs_offset), |
|
|
|
romfs_offset); |
|
|
|
if (dec != nullptr) { |
|
|
|
files.emplace_back(); |
|
|
|
files.push_back(std::move(dec)); |
|
|
|
romfs = files.back(); |
|
|
|
} else { |
|
|
|
status = Loader::ResultStatus::ErrorMissingKeys; |
|
|
|
@ -204,13 +204,13 @@ NCA::NCA(VirtualFile file_) : file(std::move(file_)) { |
|
|
|
section.pfs0.pfs0_header_offset; |
|
|
|
u64 size = MEDIA_OFFSET_MULTIPLIER * (header.section_tables[i].media_end_offset - |
|
|
|
header.section_tables[i].media_offset); |
|
|
|
const auto dec = |
|
|
|
auto dec = |
|
|
|
Decrypt(section, std::make_shared<OffsetVfsFile>(file, size, offset), offset); |
|
|
|
if (dec != nullptr) { |
|
|
|
auto npfs = std::make_shared<PartitionFilesystem>(dec); |
|
|
|
auto npfs = std::make_shared<PartitionFilesystem>(std::move(dec)); |
|
|
|
|
|
|
|
if (npfs->GetStatus() == Loader::ResultStatus::Success) { |
|
|
|
dirs.emplace_back(npfs); |
|
|
|
dirs.push_back(std::move(npfs)); |
|
|
|
if (IsDirectoryExeFS(dirs.back())) |
|
|
|
exefs = dirs.back(); |
|
|
|
} |
|
|
|
|