kyz/libmspack

Issue with KWAJ method 2 decompression

jsummers opened this issue · 2 comments

Using the contents of this file: MOUSE901.ZIP ...

Use msexpand to decompress MOUSE.IN$. Expected results: A readable text file. Actual results: a garbled file.

The problem exists for all KWAJ#2 files that I've tested. Note that the EXPAND.EXE DOS utility from MOUSE901.ZIP can successfully decompress the file.

What I think is that KWAJ#2 is supposed to use the mode that libmspack calls LZSS_MODE_QBASIC, instead of LZSS_MODE_EXPAND.

Or maybe there is a different kind of KWAJ#2 file out there that libmspack correctly decompresses. If so, I'd like to know about it.

Some other places to find KWAJ#2 files: lifepl02.zip, PRO207/

kyz commented

Thanks for finding this, I agree completely. Looking at the test suite for KWAJ decoding, I found I don't have any files using method 2, only 3 and 4.... even though I have archives containing such files.

To check it's not just that expand.exe, I unpacked all the test files I had (and now some method 2 files) with these executables which can unpack KWAJ files (their size/checksum comes after decrunching them, if they were PKLITE compressed).

The one in MOUSE901.ZIP is decomp.exe 1.00

File First line of help output Size SHA256
decomp.exe Microsoft (R) Char-Setup Toolkit Decompression Utility - Version 1.00 18684 3e8762a9df84c365a61b4270072a03e6d64f2da46dc9991095abe61c3a494156
decomp.exe Microsoft (R) Char-Setup Toolkit Decompression Utility - Version 1.02 35921 7b7dde3bc19d4ffe7b7d166e718daa063c9879ce9f4006543a97840a24d1bf01
decomp.exe Microsoft (R) Decompression Utility - Version 1.4 39044 0d2de164d6e9173d9230498721e624450aef25dd9b667c622509670e9bd835c6
expand.exe Expands one or more compressed files. 26097 5e0e909dabb4b9042bff6e9b2d103ccca5dccfcf71b4938727ecfe9bfa7fc42c
expand.exe Microsoft (R) File Expansion Utility Version 2.10 25239 668d6302c4042f5fa9a25c1e5a953a64904ed878ecbd8d93509a62cef930e436
expand.exe Microsoft (R) File Expansion Utility Version 2.10 24887 bbd30fbcc98d121e2ca0d4cdb2ad4570b0d076132b842da58631e69a5e2a308c

I unpacked all the files I have with all these programs, and for the methods they support, they all unpack files with exactly the same results. So I'm in agreement that method 2 is the QBasic variant of SZDD. Thanks for investigating.

kyz commented

Commit 83aaec2 switches KWAJ method 2 decoding to LZSS_MODE_QBASIC