diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2024-11-10 16:53:39 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-10 18:53:39 -0600 |
| commit | 6edf65beca37954d6d2243c92875a1dc84b6b3f6 (patch) | |
| tree | c75ab753b17da054295ec11a87688699d4141d00 /src/utils/Decompressor.cpp | |
| parent | ff8c2d13c71069f3117faf42ed25f0816229a872 (diff) | |
Revert yay0 change that broke mk64 (#156)
* Revert breakage
* Update Decompressor.cpp
Diffstat (limited to 'src/utils/Decompressor.cpp')
| -rw-r--r-- | src/utils/Decompressor.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/utils/Decompressor.cpp b/src/utils/Decompressor.cpp index 011fad4..95af7b1 100644 --- a/src/utils/Decompressor.cpp +++ b/src/utils/Decompressor.cpp @@ -69,18 +69,23 @@ DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t> auto fileOffset = TranslateAddr(offset, true); - // Extract compressed assets. - if (node["mio0"] || node["yay0"]) { - auto foffset = TranslateAddr(offset, true); - auto decoded = Decode(buffer, foffset, node["mio0"] ? CompressionType::MIO0 : CompressionType::YAY0); + // Check if an asset in a yaml file is mio0 compressed and extract. + if (node["mio0"]) { + auto assetPtr = ASSET_PTR(offset); + auto gameSize = Companion::Instance->GetRomData().size(); + + auto fileOffset = TranslateAddr(offset, true); + offset = ASSET_PTR(offset); + + auto decoded = Decode(buffer, fileOffset + offset, CompressionType::MIO0); auto size = node["size"] ? node["size"].as<size_t>() : manualSize.value_or(decoded->size); return { - .root = decoded, - .segment = { decoded->data, size } + .root = decoded, + .segment = { decoded->data, size } }; } - // Extract compressed tkmk00 assets in mk64. + // Check if an asset in a yaml file is tkmk00 compressed and extract (mk64). if (node["tkmk00"]) { const auto alpha = GetSafeNode<uint32_t>(node, "alpha"); const auto width = GetSafeNode<uint32_t>(node, "width"); @@ -98,7 +103,7 @@ DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t> }; } - // Extract compressed files that contain many assets. + // Extract a compressed file which contains many assets. switch(type) { case CompressionType::YAY0: case CompressionType::MIO0: { |
