romfs_factory.h 1013 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "common/common_types.h"
  7. #include "core/file_sys/vfs.h"
  8. #include "core/hle/result.h"
  9. namespace Loader {
  10. class AppLoader;
  11. } // namespace Loader
  12. namespace FileSys {
  13. enum class ContentRecordType : u8;
  14. enum class StorageId : u8 {
  15. None = 0,
  16. Host = 1,
  17. GameCard = 2,
  18. NandSystem = 3,
  19. NandUser = 4,
  20. SdCard = 5,
  21. };
  22. /// File system interface to the RomFS archive
  23. class RomFSFactory {
  24. public:
  25. explicit RomFSFactory(Loader::AppLoader& app_loader);
  26. ~RomFSFactory();
  27. void SetPackedUpdate(VirtualFile update_raw);
  28. ResultVal<VirtualFile> OpenCurrentProcess(u64 current_process_title_id) const;
  29. ResultVal<VirtualFile> Open(u64 title_id, StorageId storage, ContentRecordType type) const;
  30. private:
  31. VirtualFile file;
  32. VirtualFile update_raw;
  33. bool updatable;
  34. u64 ivfc_offset;
  35. };
  36. } // namespace FileSys