nax.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <memory>
  5. #include "common/common_types.h"
  6. #include "core/loader/loader.h"
  7. namespace Core {
  8. class System;
  9. }
  10. namespace FileSys {
  11. class NAX;
  12. } // namespace FileSys
  13. namespace Loader {
  14. class AppLoader_NCA;
  15. /// Loads a NAX file
  16. class AppLoader_NAX final : public AppLoader {
  17. public:
  18. explicit AppLoader_NAX(FileSys::VirtualFile file_);
  19. ~AppLoader_NAX() override;
  20. /**
  21. * Identifies whether or not the given file is a NAX file.
  22. *
  23. * @param nax_file The file to identify.
  24. *
  25. * @return FileType::NAX, or FileType::Error if the file is not a NAX file.
  26. */
  27. static FileType IdentifyType(const FileSys::VirtualFile& nax_file);
  28. FileType GetFileType() const override;
  29. LoadResult Load(Kernel::KProcess& process, Core::System& system) override;
  30. ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override;
  31. u64 ReadRomFSIVFCOffset() const override;
  32. ResultStatus ReadProgramId(u64& out_program_id) override;
  33. ResultStatus ReadBanner(std::vector<u8>& buffer) override;
  34. ResultStatus ReadLogo(std::vector<u8>& buffer) override;
  35. ResultStatus ReadNSOModules(Modules& modules) override;
  36. private:
  37. std::unique_ptr<FileSys::NAX> nax;
  38. std::unique_ptr<AppLoader_NCA> nca_loader;
  39. };
  40. } // namespace Loader