temisu / ancient

Decompression routines for ancient formats
BSD 2-Clause "Simplified" License
209 stars 14 forks source link

.ar6 compression file format from m602 #39

Closed mariolacko closed 1 year ago

mariolacko commented 2 years ago

Can you add support for ar6 format from Manažér 602 ?

temisu commented 2 years ago

Hi,

Basically I'm pretty open implementing new formats, as long they are

  1. Identifyable in the bitstream
  2. Not archive formats (like zip, lha) but compression formats (like gzip, bzip2)
  3. Not terribly complicated, or broken.
  4. It provides value to someone i.e. not so esoteric format that is not used at all.

In that tune I tried to find more information than what there is on that linked wikipedia page, but it looks like there really is not much. I can see there are two versions of the M602 and there is compression AR6 mentioned. But finding files or documentation is not possible.

Is there a chance you can help me trying to find more information about the format since most of the information seems to come from czech pages? Bare minimum would be to get some test files (and any documentation if it exists) Standalone compression tools would be great if they exist. Going through a huge DOS real mode executable like that M602 trying to find a compression algorithm is not really feasible, unless the format itself is copy of some known algorithm

Thanks

mariolacko commented 2 years ago

Hello. There in files.zip are two files. files.txt and files.ar6 ar6 file, which is a compressed files.txt file.

temisu commented 1 year ago

Finally got some time to debug the file

00000000 41 52 36 00 46 49 4c 45 53 2e 41 52 36 20 20 20 00000010 00 00 41 52 36 01 64 00 00 02 83 94 47 54 d9 71 ^^^^^^^^ ^^^^^^^^^^^ ^^^^^ File hdr. timestamp crc32 00000020 cd a2 f5 01 00 00 e8 05 00 00 09 00 00 00 46 49 ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ crc32 compr. len uncompr. len name len name 00000030 4c 45 53 2e 54 58 54 01 06 44 c4 1e 0c dd 94 c9 ^^^^^^^^^^^^^^^^^^^^ ^^-> name compressed stream 00000040 b6 b7 0c 4f d7 2c 08 5b 88 3c c5 51 bd a1 7b d3 ... 00000220 fa d3 d7 8f ab a3 d9 f6 3a 04 fc 03 41 52 36 02 <-^^ ^^-> compressed stream dir. entry 00000230 64 00 00 02 83 94 47 54 d9 71 cd a2 f5 01 00 00 00000240 e8 05 00 00 09 00 00 00 00 00 00 00 12 00 00 00 00000250 20 00 46 49 4c 45 53 2e 54 58 54 41 52 36 03 00 00000260 00 00 00 2c 02 00 00 00 00 2f 00 00 00 00 00

This is not just a compression format. this is archiver like zip (very close to zip in fact). This means that it does not really fit into the codebase. I'll keep the file as a reference in future if I extend the project to archivers (currently I'm working in opposite direction)

For the actual compression format - there does not seem to be any direct indication what it might be. And since I do not have access to the executable it is pretty hard to dig any further.

In any case thanks for following up on this but I currently do not see this being implemented