| |
| |
|
|
| #pragma once |
|
|
| #include "common/common_types.h" |
| #include "core/loader/loader.h" |
|
|
| namespace Core { |
| class System; |
| } |
|
|
| namespace FileSys { |
| class NCA; |
| } |
|
|
| namespace Loader { |
|
|
| class AppLoader_DeconstructedRomDirectory; |
|
|
| |
| class AppLoader_NCA final : public AppLoader { |
| public: |
| explicit AppLoader_NCA(FileSys::VirtualFile file_); |
| ~AppLoader_NCA() override; |
|
|
| |
| |
| |
| |
| |
| |
| |
| static FileType IdentifyType(const FileSys::VirtualFile& nca_file); |
|
|
| FileType GetFileType() const override { |
| return IdentifyType(file); |
| } |
|
|
| LoadResult Load(Kernel::KProcess& process, Core::System& system) override; |
|
|
| ResultStatus VerifyIntegrity(std::function<bool(size_t, size_t)> progress_callback) override; |
|
|
| ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override; |
| ResultStatus ReadProgramId(u64& out_program_id) override; |
|
|
| ResultStatus ReadBanner(std::vector<u8>& buffer) override; |
| ResultStatus ReadLogo(std::vector<u8>& buffer) override; |
|
|
| ResultStatus ReadNSOModules(Modules& modules) override; |
|
|
| private: |
| std::unique_ptr<FileSys::NCA> nca; |
| std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader; |
| }; |
|
|
| } |
|
|