sdmc_factory.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. SDMCFactory::SDMCFactory(VirtualDir dir_)
  11. : dir(std::move(dir_)), contents(std::make_unique<RegisteredCache>(
  12. GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents/registered"),
  13. [](const VirtualFile& file, const NcaID& id) {
  14. return NAX{file, id}.GetDecrypted();
  15. })),
  16. placeholder(std::make_unique<PlaceholderCache>(
  17. GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents/placehld"))) {}
  18. SDMCFactory::~SDMCFactory() = default;
  19. ResultVal<VirtualDir> SDMCFactory::Open() const {
  20. return MakeResult<VirtualDir>(dir);
  21. }
  22. VirtualDir SDMCFactory::GetSDMCContentDirectory() const {
  23. return GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents");
  24. }
  25. RegisteredCache* SDMCFactory::GetSDMCContents() const {
  26. return contents.get();
  27. }
  28. PlaceholderCache* SDMCFactory::GetSDMCPlaceholder() const {
  29. return placeholder.get();
  30. }
  31. VirtualDir SDMCFactory::GetImageDirectory() const {
  32. return GetOrCreateDirectoryRelative(dir, "/Nintendo/Album");
  33. }
  34. u64 SDMCFactory::GetSDMCFreeSpace() const {
  35. return GetSDMCTotalSpace() - dir->GetSize();
  36. }
  37. u64 SDMCFactory::GetSDMCTotalSpace() const {
  38. return static_cast<u64>(Settings::values.sdmc_size);
  39. }
  40. } // namespace FileSys