diff --git a/docs/compression.md b/docs/compression.md deleted file mode 100644 index 6395426d..00000000 --- a/docs/compression.md +++ /dev/null @@ -1,66 +0,0 @@ -# LC_LZ2 Compression - -The compression algorithm has multiple implementations with varying levels of quality, based primarily on the implementations made in skarsnik/sneshacking, Zarby89/ZScreamDungeon and ZCompress with optimizations made for C++. - -Currently, the Compress and Uncompress methods from Hyrule Magic are used and all other compression methods are considered deprecated. - -## Key Definitions - -### Constants and Macros: -- `BUILD_HEADER(command, length)`: Macro to build a header from a command and a length. -- Command Constants: Constants to represent different commands like `kCommandDirectCopy`, `kCommandByteFill`, etc. -- Length and Mode Constants: Such as `kMaxLengthNormalHeader`, `kNintendoMode1`, etc. - -### Data Structures: - -#### 1. CompressionCommand: - - **arguments**: 2D array representing the command arguments for each possible command. - - **cmd_size**: Array storing the size of each possible command. - - **data_size**: Array storing the size of the data processed by each possible command. - -#### 2. CompressionPiece: - - **command**: Represents the compression command. - - **length**: Length of the compressed data piece. - - **argument_length**: Length of the argument. - - **argument**: Argument as a string. - - **next**: Pointer to the next compression piece. - -#### 3. CompressionContext (for Compression V3): - - Contains vectors to store raw and compressed data, compression pieces, and compression string. - - Various counters and flags for compression control. - - Current compression command details. - -## Compression Functions - -### Version 1: -- **Byte Repeat**: `CheckByteRepeat` -- **Word Repeat**: `CheckWordRepeat` -- **Increasing Byte**: `CheckIncByte` -- **Intra Copy**: `CheckIntraCopy` -- **Validation and Alternatives**: `ValidateForByteGain` & `CompressionCommandAlternative` - -### Version 2: -- **Byte Repeat**: `CheckByteRepeatV2` -- **Word Repeat**: `CheckWordRepeatV2` -- **Increasing Byte**: `CheckIncByteV2` -- **Intra Copy**: `CheckIntraCopyV2` -- **Validation and Alternatives**: `ValidateForByteGainV2` & `CompressionCommandAlternativeV2` - -### Version 3: -Using `CompressionContext` to handle compression. -- **Initialization**: `InitializeCompression` -- **Command Checks**: Such as `CheckByteRepeatV3` -- **Determining Best Compression**: `DetermineBestCompression` -- **Handling Direct Copy**: `HandleDirectCopy` -- **Adding Compression to Chain**: `AddCompressionToChain` - -## Decompression Functions: -- `SetBuffer`: Prepares a buffer from data. -- `memfill`: Fills memory. -- **Decompression**: Such as `DecompressV2`, `DecompressGraphics`, and `DecompressOverworld`. - -## Utility Functions: -- **Printing**: Such as `PrintCompressionPiece` and `PrintCompressionChain`. -- **Compression String Creation**: `CreateCompressionString` -- **Compression Result Validation**: Such as `ValidateCompressionResult` and its V3 variant. -- **Compression Piece Manipulation**: Like `SplitCompressionPiece` and its V3 variant.