Add DelayGenerator for all file backends
This commit is contained in:
@ -77,14 +77,17 @@ ResultVal<std::unique_ptr<FileBackend>> NCCHArchive::OpenFile(const Path& path,
|
||||
u64 romfs_size = 0;
|
||||
|
||||
result = ncch_container.ReadRomFS(romfs_file, romfs_offset, romfs_size);
|
||||
file = std::make_unique<IVFCFile>(std::move(romfs_file), romfs_offset, romfs_size);
|
||||
std::unique_ptr<DelayGenerator> delay_generator = std::make_unique<RomFSDelayGenerator>();
|
||||
file = std::make_unique<IVFCFile>(std::move(romfs_file), romfs_offset, romfs_size,
|
||||
std::move(delay_generator));
|
||||
} else if (filepath_type == NCCHFilePathType::Code ||
|
||||
filepath_type == NCCHFilePathType::ExeFS) {
|
||||
std::vector<u8> buffer;
|
||||
|
||||
// Load NCCH .code or icon/banner/logo
|
||||
result = ncch_container.LoadSectionExeFS(openfile_path.exefs_filepath.data(), buffer);
|
||||
file = std::make_unique<NCCHFile>(std::move(buffer));
|
||||
std::unique_ptr<DelayGenerator> delay_generator = std::make_unique<ExeFSDelayGenerator>();
|
||||
file = std::make_unique<NCCHFile>(std::move(buffer), std::move(delay_generator));
|
||||
} else {
|
||||
LOG_ERROR(Service_FS, "Unknown NCCH archive type %u!", openfile_path.filepath_type);
|
||||
result = Loader::ResultStatus::Error;
|
||||
@ -194,7 +197,10 @@ u64 NCCHArchive::GetFreeBytes() const {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
NCCHFile::NCCHFile(std::vector<u8> buffer) : file_buffer(std::move(buffer)) {}
|
||||
NCCHFile::NCCHFile(std::vector<u8> buffer, std::unique_ptr<DelayGenerator> delay_generator_)
|
||||
: file_buffer(std::move(buffer)) {
|
||||
delay_generator = std::move(delay_generator_);
|
||||
}
|
||||
|
||||
ResultVal<size_t> NCCHFile::Read(const u64 offset, const size_t length, u8* buffer) const {
|
||||
LOG_TRACE(Service_FS, "called offset=%" PRIu64 ", length=%zu", offset, length);
|
||||
|
Reference in New Issue
Block a user