Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clownacy/clownlzss
Collection of compressors, built upon a small and simple graph-based LZSS framework.
https://github.com/clownacy/clownlzss
ansi-c c89 c90 compression compressor cpp20 framework library lzss sega sega-genesis sega-mega-drive
Last synced: 2 months ago
JSON representation
Collection of compressors, built upon a small and simple graph-based LZSS framework.
- Host: GitHub
- URL: https://github.com/clownacy/clownlzss
- Owner: Clownacy
- License: 0bsd
- Created: 2018-12-04T23:12:16.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-02T19:58:22.000Z (4 months ago)
- Last Synced: 2024-10-12T17:21:50.541Z (2 months ago)
- Topics: ansi-c, c89, c90, compression, compressor, cpp20, framework, library, lzss, sega, sega-genesis, sega-mega-drive
- Language: C++
- Homepage:
- Size: 1.01 MB
- Stars: 25
- Watchers: 7
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
clownlzss is a lightweight, minimalist, graph-based LZSS framework.
Also included are a collection of compressors which utilise the framework.Formats supported by the supplied utilities include:
- Kosinski - a compression format common to first-party Sega Mega Drive games
- Saxman - a format used by Sonic the Hedgehog 2, to compress its sound engine
and music data (is actually a lightly-modified version of Haruhiko Okumura's
1989 LZSS format)- Chameleon - a format that saw use in Kid Chameleon and Sonic the Hedgehog 2's
"Nick Arcade" prototype- Rocket - a format used by Rocket Knight Adventures
- Rage - a format used by Streets of Rage 2 (is actually RLE, not LZSS)
- Kosinski+ - a modified version of Kosinski developed by the Sonic ROM-hacking
community, which optimises the format for the Mega Drive's CPU, improving
decompression speed at no cost to compression ratio- Faxman - a modified version of Saxman designed to produce smaller files when
used to compress SMPS music data- Comper - another community-developed format, which is designed from the
ground up with a focus on decompression speed on the Motorola 68000. This
comes at a significant cost to compression ratioclownlzss utilises graph theory to perform optimal compression: naive "greedy
algorithm" compressors prefer to compress the longest runs possible, but this
does not guarantee the best compression ratio. Graph-based compressors resolve
this by creating an "LZSS graph" - a weighted directed acyclic graph where each
node is a value in the uncompressed file, and each edge is an LZSS match. By
using a shortest-path algorithm, this graph can be used to compute the ideal
combination of matches needed to produce the smallest file.This project is under the 0BSD licence.