Implement matching compression for old gzip versions #22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is based on https://github.com/Thar0/gzip-1.3.3-ique though I tried to reimplement things as much as possible instead of blindly porting the code. The gzip algorithm has a lot of quirks though which basically force some things to be done a particular way in order to match. It supports compression levels 4-9 (0-3 use a slightly different algorithm which I didn't implement) and simulating building with
-DSMALL_MEM
.I checked that this matches both OOT iQue versions and all 3 Dr. Mario versions. Test script (run
cargo build --release
first): https://gist.github.com/cadmic/3b058f3809932df4dc6bc6ff9cf2ff8d. I also added in-repo tests for the 3 settings we care about (--level 9
,--level 9 --small-mem
, and--level 6 --small-mem
).