2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-09-23 16:56:39 +00:00

chore: recognize when xenon fastfile use lzx compression

This commit is contained in:
Jan Laupetin
2025-08-20 22:13:01 +01:00
parent 802b0f244a
commit 763d280805
9 changed files with 71 additions and 27 deletions

View File

@@ -12,15 +12,15 @@ namespace T6
ZoneConstants() = default;
public:
static constexpr const char* MAGIC_SIGNED_PC_TREYARCH = "TAff0100";
static constexpr const char* MAGIC_SIGNED_XENON_TREYARCH = "TAffx100";
static constexpr const char* MAGIC_SIGNED_PC_OAT = "ABff0100";
static constexpr const char* MAGIC_SIGNED_TREYARCH = "TAff0100";
static constexpr const char* MAGIC_SIGNED_LZX_TREYARCH = "TAffx100";
static constexpr const char* MAGIC_SIGNED_OAT = "ABff0100";
static constexpr const char* MAGIC_UNSIGNED = "TAffu100";
static constexpr const char* MAGIC_UNSIGNED_SERVER = "TAsvu100";
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_PC_TREYARCH) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_XENON_TREYARCH) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_PC_OAT) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_TREYARCH) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_LZX_TREYARCH) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_SIGNED_OAT) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED_SERVER) == sizeof(ZoneHeader::m_magic));

View File

@@ -1,8 +1,9 @@
#include "AbstractSalsa20Processor.h"
#include <cassert>
#include <cstring>
AbstractSalsa20Processor::AbstractSalsa20Processor(const unsigned streamCount, const std::string& zoneName, const uint8_t* salsa20Key, const unsigned keySize)
AbstractSalsa20Processor::AbstractSalsa20Processor(const unsigned streamCount, const std::string& zoneName, const uint8_t* salsa20Key, const size_t keySize)
: m_stream_count(streamCount),
m_stream_contexts(streamCount),
m_block_hashes(BLOCK_HASHES_COUNT * streamCount * SHA1_HASH_SIZE),

View File

@@ -31,7 +31,7 @@ protected:
static constexpr auto SHA1_HASH_SIZE = 20u;
static constexpr auto SALSA20_IV_SIZE = 8u;
AbstractSalsa20Processor(unsigned streamCount, const std::string& zoneName, const uint8_t* salsa20Key, unsigned keySize);
AbstractSalsa20Processor(unsigned streamCount, const std::string& zoneName, const uint8_t* salsa20Key, size_t keySize);
void InitStreams(const std::string& zoneName, const uint8_t* salsa20Key, size_t keySize);
[[nodiscard]] uint8_t* GetHashBlock(unsigned streamNumber);

View File

@@ -0,0 +1,12 @@
#include "XChunkProcessorLzxDecompress.h"
#include <cstring>
size_t
XChunkProcessorLzxDecompress::Process(unsigned streamNumber, const uint8_t* input, const size_t inputLength, uint8_t* output, const size_t outputBufferSize)
{
// TODO: Implement
memcpy(output, input, inputLength);
return inputLength;
}

View File

@@ -0,0 +1,8 @@
#pragma once
#include "IXChunkProcessor.h"
class XChunkProcessorLzxDecompress final : public IXChunkProcessor
{
public:
size_t Process(unsigned streamNumber, const uint8_t* input, size_t inputLength, uint8_t* output, size_t outputBufferSize) override;
};