You can make the ads go away by registering
Hi! I'm currently trying to reverse engineer the music from Cryo Interactive's 1992 game KGB, re-released as Conspiracy. In order to get to the music files, I have to decompress the files first. The game uses a compression algorithm called SQX, that's exclusive to this game. What's important is that it is very similar to a known format, HSQ (which is used by Dune and MegaRace). Nevertheless, it is still slightly different and I could use your help.Here's what we know:
* SQX is very similar to HSQ. Both compression formats are based off of Lemple-Ziv and use Sliding Window RLE compression.How do we know SQX is very similar to HSQ?
* Both formats have a six byte header, however SQX's is different.
* HSQ uses a checksum of 0xAB, which is calculated by adding the first six bytes of the header, to perform decompression. From what it looks like, SQX doesn't use a checksum.
* Both formats use at least 18-byte chunks, a two-byte header that's used as a bitmap and the proceeding 16 or more bytes is the compressed data.
Because Cryo placed a song from Dune ("MORNING") in the assets for KGB and had it compressed in SQX instead of HSQ. So we have the MORNING song file in SQX, HSQ and in uncompressed format, which allows us to compare between the formats. Now, SQX is supported in the old OPL2/3 player RDOSPlay, but the source code is long gone, so we still don't know how the format works, however I did comfirm that the MORNING.SQX file does play correctly in RDOSPlay and sounds exactly like it's HSQ and uncompressed counterparts.
To help with analysis, I've attached the HSQ, SQX and uncompressed SDB files to this thread. You can easily see how similar SQX is to HSQ in a hex editor. I also attached the source code to a program that handles HSQ decompression so you can see how that format works. In addition, here's a link
that shows the logic for HSQ's algorithm.
I understand this is a really obscure game and an even more obscure file format. But, if anyone can help out, it would mean so much to me. Thanks in advance!