Torch
Loading...
Searching...
No Matches
Decompressor.h
1#pragma once
2
3#include <vector>
4#include <cstdint>
5#include <unordered_map>
6#include <yaml-cpp/yaml.h>
7#include <optional>
8#include <cstdint>
9#include "lib/binarytools/BinaryReader.h"
10
11enum class CompressionType {
12 None,
13 MIO0,
14 YAY0,
15 YAY1,
16 YAZ0,
17 BKZIP,
18};
19
20
21struct DataChunk {
22 uint8_t* data;
23 size_t size;
24};
25
27 DataChunk* root;
28 DataChunk segment;
29
30 LUS::BinaryReader GetReader() {
31 return LUS::BinaryReader(reinterpret_cast<char*>(segment.data), segment.size);
32 }
33};
34
36public:
37 static DataChunk* Decode(const std::vector<uint8_t>& buffer, uint32_t offset, CompressionType type, const uint32_t in_size = 0, bool ignoreCache = false);
38 static DataChunk* DecodeTKMK00(const std::vector<uint8_t>& buffer, const uint32_t offset, const uint32_t size, const uint32_t alpha);
39 static DecompressedData AutoDecode(YAML::Node& node, std::vector<uint8_t>& buffer, std::optional<size_t> size = std::nullopt);
40 static DecompressedData AutoDecode(uint32_t offset, std::optional<size_t> size, std::vector<uint8_t>& buffer);
41 static CompressionType GetCompressionType(std::vector<uint8_t>& buffer, const uint32_t offset);
42 static uint32_t TranslateAddr(uint32_t addr, bool baseAddress = false);
43 static bool IsSegmented(uint32_t addr);
44
45 static void ClearCache();
46};
Definition Decompressor.h:35
Definition Decompressor.h:21
Definition Decompressor.h:26