VolumeWad.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2008 Dolphin Emulator Project
  2. // Licensed under GPLv2+
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <map>
  6. #include <memory>
  7. #include <string>
  8. #include <vector>
  9. #include "Common/CommonTypes.h"
  10. #include "DiscIO/Volume.h"
  11. // --- this volume type is used for Wad files ---
  12. // Some of this code might look redundant with the CNANDContentLoader class, however,
  13. // We do not do any decryption here, we do raw read, so things are -Faster-
  14. namespace DiscIO
  15. {
  16. class IBlobReader;
  17. class CVolumeWAD : public IVolume
  18. {
  19. public:
  20. CVolumeWAD(IBlobReader* _pReader);
  21. ~CVolumeWAD();
  22. bool Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt = false) const override;
  23. bool GetTitleID(u8* _pBuffer) const override;
  24. std::string GetUniqueID() const override;
  25. std::string GetMakerID() const override;
  26. u16 GetRevision() const override;
  27. std::string GetInternalName() const override { return ""; }
  28. std::map<IVolume::ELanguage, std::string> GetNames(bool prefer_long) const override;
  29. u64 GetFSTSize() const override { return 0; }
  30. std::string GetApploaderDate() const override { return ""; }
  31. EPlatform GetVolumeType() const override;
  32. ECountry GetCountry() const override;
  33. u64 GetSize() const override;
  34. u64 GetRawSize() const override;
  35. private:
  36. std::unique_ptr<IBlobReader> m_pReader;
  37. u32 m_offset;
  38. u32 m_tmd_offset;
  39. u32 m_opening_bnr_offset;
  40. u32 m_hdr_size;
  41. u32 m_cert_size;
  42. u32 m_tick_size;
  43. u32 m_tmd_size;
  44. u32 m_data_size;
  45. };
  46. } // namespace