MacPaw/XADMaster

Wanted: support for Mac OS 7/8/9 installer "tome" file

ci-macpaw opened this issue · 9 comments

Jason Duerstock (evilmoo):

There was an archive format used by the Mac OS installer before OS X known as a "tome". The majority of tomes I've come across are There are still copies of the Installer SDK available and there is a packer and unpacker utility therein. What is the best way to go about analyzing this file format and adding support for it to The Unarchiver?

Jason Duerstock (evilmoo):

This .zip file contains several tome files that use some sort of compression algorithm. According to some bits in the installer, I think the compression algorithm is named "InstaCompOne".

Dag Ågren (DagAgren):

The more obscure formats I have usually tried to decipher partly by inspecting files in a hex editor to find the high-level file format, and then by disassembling unpacking tools to reverse engineer the algorithm. It is quite challenging but also fun work.

To add support for a format to The Unarchiver basically involves creating a XADArchiveParser subclass to read the file format, and a CSHandle subclass to handle the decompression.

Kevin Wojniak (kainjow):

I wrote some code several years ago that read the metadata from Tome files, but I wasn't able to get the decompression to work. Seems like it does use an Apple private library that appears to be long gone. I just uploaded the code if it helps anyone: https://github.com/kainjow/TomeViewerX

First time I ran the code in a while. Still worked with the attached files.

Jason Duerstock (evilmoo):

I have the Installer SDK (the code is known as "InstaCompOne") and I
disassembled the m68k version of the decompressor. Would either of these
help?

I think recent versions of Pacifist can extract tomes, but they're all in a flat directory.

FYI, I just committed an initial Python implementation of the InstaCompOne decompressor, see https://github.com/maximumspatium/ResDecompress/blob/master/InstaCompOne.py

This implementation can be easily extended to decompress tomes as well. IIRC, the original algorithm is based on LZ77 and has two encoding modes: with or without Huffman coding.

@maximumspatium Where one can find files compressed with InstaCompOne ?

Where one can find files compressed with InstaCompOne

Mac OS 8/9 installation packages as well as System resources

Someone has written a (seemingly incomplete) tome viewer here: https://github.com/kainjow/TomeViewerX