sdmc_factory.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <memory>
  5. #include "core/file_sys/registered_cache.h"
  6. #include "core/file_sys/sdmc_factory.h"
  7. #include "core/file_sys/xts_archive.h"
  8. #include "core/settings.h"
  9. namespace FileSys {
  10. constexpr u64 SDMC_TOTAL_SIZE = 0x10000000000; // 1 TiB
  11. SDMCFactory::SDMCFactory(VirtualDir dir_)
  12. : dir(std::move(dir_)), contents(std::make_unique<RegisteredCache>(
  13. GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents/registered"),
  14. [](const VirtualFile& file, const NcaID& id) {
  15. return NAX{file, id}.GetDecrypted();
  16. })),
  17. placeholder(std::make_unique<PlaceholderCache>(
  18. GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents/placehld"))) {}
  19. SDMCFactory::~SDMCFactory() = default;
  20. ResultVal<VirtualDir> SDMCFactory::Open() const {
  21. return MakeResult<VirtualDir>(dir);
  22. }
  23. VirtualDir SDMCFactory::GetSDMCContentDirectory() const {
  24. return GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents");
  25. }
  26. RegisteredCache* SDMCFactory::GetSDMCContents() const {
  27. return contents.get();
  28. }
  29. PlaceholderCache* SDMCFactory::GetSDMCPlaceholder() const {
  30. return placeholder.get();
  31. }
  32. VirtualDir SDMCFactory::GetImageDirectory() const {
  33. return GetOrCreateDirectoryRelative(dir, "/Nintendo/Album");
  34. }
  35. u64 SDMCFactory::GetSDMCFreeSpace() const {
  36. return GetSDMCTotalSpace() - dir->GetSize();
  37. }
  38. u64 SDMCFactory::GetSDMCTotalSpace() const {
  39. return SDMC_TOTAL_SIZE;
  40. }
  41. } // namespace FileSys