home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 7662 / gttool_src_bin.7z / gttool / src / volume.h < prev   
Encoding:
C/C++ Source or Header  |  2014-08-01  |  811 b   |  44 lines

  1. #pragma once
  2.  
  3. #include "common.h"
  4. #include "packed_file.h"
  5.  
  6. enum class GameID
  7. {
  8.     UNKNOWN,
  9.     GT5,
  10.     GT6,
  11. };
  12.  
  13. extern const uint32_t kGT5_VOLUME_KEY[];
  14. extern const uint32_t kGT6_VOLUME_KEY[];
  15.  
  16. extern const char kGT5_VOLUME_SEED[];
  17. extern const char kGT6_VOLUME_SEED[];
  18.  
  19. struct KeyContext
  20. {
  21.     char seed[32];
  22.     uint32_t key[4];
  23. };
  24.  
  25. class Volume
  26. {
  27. public:
  28.     Volume();
  29.     explicit Volume(const char* const path, const GameID game_id);
  30.     ~Volume();
  31.  
  32.     bool open(const char* const path, const GameID game_id);
  33.     void close();
  34.  
  35.     bool extract(const char* const output_dir);
  36.  
  37. private:
  38.     std::unique_ptr<PackedFile> packed_file_;
  39.     GameID game_id_;
  40. };
  41.  
  42. void crypt_header(void* const data, const uint32_t size);
  43. void crypt_segment(void* const data, const uint32_t size, const uint32_t index);
  44.