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};
18
19
20struct DataChunk {
21 uint8_t* data;
22 size_t size;
23};
24
26 DataChunk* root;
27 DataChunk segment;
28
29 LUS::BinaryReader GetReader() {
30 return LUS::BinaryReader(reinterpret_cast<char*>(segment.data), segment.size);
31 }
32};
33
35public:
36 static DataChunk* Decode(const std::vector<uint8_t>& buffer, uint32_t offset, CompressionType type, bool ignoreCache = false);
37 static DataChunk* DecodeTKMK00(const std::vector<uint8_t>& buffer, const uint32_t offset, const uint32_t size, const uint32_t alpha);
38 static DecompressedData AutoDecode(YAML::Node& node, std::vector<uint8_t>& buffer, std::optional<size_t> size = std::nullopt);
39 static DecompressedData AutoDecode(uint32_t offset, std::optional<size_t> size, std::vector<uint8_t>& buffer);
40 static CompressionType GetCompressionType(std::vector<uint8_t>& buffer, const uint32_t offset);
41 static uint32_t TranslateAddr(uint32_t addr, bool baseAddress = false);
42 static bool IsSegmented(uint32_t addr);
43
44 static void ClearCache();
45};
Definition Decompressor.h:34
Definition Decompressor.h:20
Definition Decompressor.h:25