apultra is a command-line tool and a library that compresses bitstreams in the aPLib format.
The tool produces files that are 5 to 7% smaller on average than appack, the aPLib compressor. Unlike the similar cap compressor, apultra can compress files larger than 64K.
apultra is written in portable C. It is fully open-source under a liberal license. You can continue to use the regular aPLib decompression libraries for your target environment. You can do whatever you like with it.
Example compression with vmlinux-5.3.0-1-amd64
original 27923676 (100,00%)
appack 7370129 (26,39%)
gzip 1.8 7166179 (25,66%)
apultra 1.4.1 6910729 (24,75%)
The output is fully compatible with the original aPLib by Jørgen Ibsen.
Inspirations:
- cap by Sven-Åke Dahl.
- Charles Bloom's compression blog.
- LZ4 by Yann Collet.
- spke for help and support
Some projects that use apultra for compression:
- Hyperdrive, a new, excellent shoot'em up for the Amstrad CPC 464/6128/GX4000, in cartridge format, by usebox.net.
- Brick Rick, a new game for the Amstrad CPC 464/6128 by usebox.net. A physical copy can be ordered from Polyplay
- Brick Rick: Graveyard Shift, a similar new game for the ZX Spectrum 128K by usebox.net. Get it on tape from TFW8b.com
- Kitsune's Curse, another new title for the CPC line by usebox.net.
- Sgt. Helmet's Training Day, a new game for the Amstrad CPC by the Mojon Twins (using their MK1 engine).
- Prince Dastan - Sokoban Within, a CPCRetroDev 2020 game for the Amstrad CPC by Euphoria Design
- Petris, a homebrew game for the Gameboy.
- Mr Palot, a ZX Spectrum game made with the Mojon Twins MK1 engine.
- rasm, a popular Z80 assembler, features built-in support for apultra-compressed data sections.
Also of interest:
- oapack by Eugene Larchenko, a brute-force (exhaustive) optimal packer for the aPLib format.
- Streamed 8088 decompressor for aPLib by C. Masloch
- Gameboy decompressor by untoxa
License:
- The apultra code is available under the Zlib license.
- The match finder (matchfinder.c) is available under the CC0 license due to using portions of code from Eric Bigger's Wimlib in the suffix array-based matchfinder.