You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi again, I have been studying the Hi-SCoA codec, and I am starting to understand it somewhat, but some things are still flying over my head. I've got two questions for now:
From what I can figure, Hi-SCoA seems like an LZ77 implementation that uses a stack and registers. Instead of using dictionary keys in the form of backwards offsets and lengths, Hi-SCoA seems to be using commands for lookups (PREFIX, LONGREPx, REPBYTE), while keeping offsets in the registers (L2, L3, L4, L5).
It also seems to use the stack for single bytes, saving the classical LZ77 look-back for longer strings.
Would it be wrong to call Hi-SCoA "LZ77 implemented as a (Finite) State Machine"?
The text was updated successfully, but these errors were encountered:
IIRC, Hi-SCoA uses absolute offsets, that is, relative to the beginning of the buffer being decompressed. But I may be wrong, it was many years ago. In fact, I have a working Hi-SCoA decompressor that may be used as reference: https://github.com/agalakhov/anticapt/blob/master/hiscoa-decompress.c
Yes, it is some kind of LZ77-family algorithm. For the very first version of the compressor I didn't even reverse-engineerit completely. I just figured out how to use it in RLE-like mode and found that the printer is pretty happy with it.
Hi again, I have been studying the Hi-SCoA codec, and I am starting to understand it somewhat, but some things are still flying over my head. I've got two questions for now:
Q1
Just double-checking: when you say
LONGREPx
commands "copy prefix+N bytes from output positionPOSx
", do you mean "goPOSx
bytes backwards from end of output, then copy prefix+N bytes, from there, to after end of output"?Q2
From what I can figure, Hi-SCoA seems like an LZ77 implementation that uses a stack and registers. Instead of using dictionary keys in the form of backwards offsets and lengths, Hi-SCoA seems to be using commands for lookups (
PREFIX
,LONGREPx
,REPBYTE
), while keeping offsets in the registers (L2, L3, L4, L5).It also seems to use the stack for single bytes, saving the classical LZ77 look-back for longer strings.
Would it be wrong to call Hi-SCoA "LZ77 implemented as a (Finite) State Machine"?
The text was updated successfully, but these errors were encountered: