From 4dd65bdc6668f90765c64b29bba0abb1bd451749 Mon Sep 17 00:00:00 2001 From: Slendi Date: Mon, 8 Sep 2025 17:52:24 +0300 Subject: [PATCH] oop Signed-off-by: Slendi --- docs/specification.pdf | Bin 37742 -> 37705 bytes docs/specification.typ | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/specification.pdf b/docs/specification.pdf index eb51ba6f9265306d9ae45f802019fde928d62fca..86d02133d02be881df1c2624cf397521a02a64fa 100644 GIT binary patch delta 13383 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 YnhF}&r6vbX7U49vH0M%Pb@g`x04)A*9smFU delta 13429 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 diff --git a/docs/specification.typ b/docs/specification.typ index c788dda..1ffeaeb 100644 --- a/docs/specification.typ +++ b/docs/specification.typ @@ -117,8 +117,8 @@ compressed independently using LZSS with the following parameters: Streams are encoded as a sequence of 8‑item groups preceded by a flag byte: - For each bit b (0..7) in the flag (LSB first): - - If `(flag >> b) & 1 == 1`: Literal — copy next byte to output. - - Else: Match — read two bytes b0, b1 and emit: + - If `(flag >> b) & 1 == 1`: Literal - copy next byte to output. + - Else: Match - read two bytes b0, b1 and emit: - `length = (b0 >> 4) + 3` (range 3..18) - `offset = ((b0 & 0x0F) << 8) | b1` (range 1..4095) - Copy length bytes from `out_size - offset`.