← 全部工具

ancient

热度 85 更新于 开发与构建

Decompression routines for ancient formats

homebrewauto-collected

安装

Homebrew
brew install ancient

通过 Homebrew 安装。

Ancient - Modern decompressor for old data compression formats

This is a collection of decompression routines for old formats popular in the Amiga, Atari computers and some other systems from 80's and 90's as well as some that are currently used which were used in a some specific way in these old systems.

Even though most of these algorithms are still available for download, scavenging and using them might prove to be a challenge. Thus the purpose of this project is to:

  • Provide a clean, modern implementation of the algorithms - Typically the implementations were not meant to be used outside of the original systems they were made for. Some other ported implementations are incomplete, bad quality or direct translations from old M68K assembly code.
  • Provide a clean BSD-style licensing - Original implementations or their ports might have strange license or no visible license at all. There are also implementations that have been ripped off from some other source thus their legality is questionable at best.
  • Provide a tested implementation - The code is no good if it does not work properly and the old code have a lot of corner cases. These implementations are tested using a cache of available files (~10k) that used these algorithms. Although it does not offer any guarantee especially when we are talking about undocumented formats, it gives hope that there are less "stupid errors" in the code. I have also generated a small batch of test files for different formats for testing. The source files are known public domain sources

For simple usage both a simple command line application as well as a simple API to use the decompressors are provided. The compression algorithm is automatically detected in most cases, however there are some corner cases where it is not entirely reliable due to weaknesses in the old format used. Please see the main.cpp and ancient.hpp to get an idea.

This code should compile cleanly on most C++17 capable compilers, and it is tested on clang and MSVC.

Some formats have incorporated weak password protection on them which can be bypassed. However, this project does not attempt to do any real cryptograpy.

Currently the project does not support any archival files nor self extracting executables.

Decompression algorithms provided:

  • ANC Cruncher (ByteKiller Clone)
  • Bytekiller
  • BK: ByteKiller (all versions)
  • BK: ByteKiller Pro
  • ID ACE! (ByteKiller Clone)
  • ID GR20 (ByteKiller Clone)
  • ID MD10 (ByteKiller Clone)
  • ID MD11 (ByteKiller Clone)
  • bzip2
  • both normal and randomized bitstreams
  • Compact (Unix)
  • Compress (Unix)
  • Supports both old and new formats
  • CrunchMania by Thomas Schwarz
  • CrM!: Crunch-Mania standard-mode
  • Crm!: Crunch-Mania standard-mode, sampled
  • CrM2: Crunch-Mania LZH-mode
  • Crm2: Crunch-Mania LZH-mode, sampled
  • ID 0x18051973 (CrunchMania CrM2 Clone)
  • ID CD³¹ (CrunchMania CrM2 Clone)
  • ID DCS! (CrunchMania CrM! Clone)
  • ID Iron (CrunchMania CrM2 Clone)
  • ID MSS! (CrunchMania CrM2 Clone)
  • ID mss! (CrunchMania Crm2 Clone)
  • Disk Masher System a.k.a. DMS
  • Supports all different compression methods (NONE,SIMPLE,QUICK,MEDIUM,DEEP,HEAVY1,HEAVY2)
  • Supports password bypassing
  • File Imploder
  • ID ATN! (Imploder Clone)
  • ID BDPI (Imploder Clone)
  • ID CHFI (Imploder Clone)
  • ID EDAM (Imploder Clone)
  • ID M.H. (Imploder Clone)
  • ID RDC9 (Imploder Clone)
  • ID FLT! (Imploder Clone) (verification missing)
  • ID Dupa (Imploder Clone) (verification missing)
  • ID PARA (Imploder Clone) (verification missing)
  • Freeze/Melt
  • Supports both old and new formats
  • gzip
  • JAM Packer
  • JEK: JAM Packer v1.x (ByteKiller Clone)
  • Supports JAMPacker ICE algorithm (handled by Pack-Ice)
  • LSD: JAMPacker V2 v2.x+
  • LZW: JAMPacker LZH v3.0 / v4.0
  • LZH: JAMPacker LZW v4.0
  • JEK Packer
  • JEK: Jek Packer v1.x - v2.x (ByteKiller Clone)
  • LOB's File Compressor (Also known as a Multipak)
  • Supports all original 6 modes and their combinations (BMC, HUF, LZW, LZB, MSP, MSS)
  • Does not support mode 8 (as defined by some game files)
  • Pack (Unix)
  • Supports both old and new formats
  • Pack-Ice