@cholok,
post #97
ARTM
Znalazłem taką bibliotekę nieznanego autora. Jest to książkowy przykład kompresji arytmetycznej. Bardziej przykład niż paker, ale co tam, niech jest.
DMCB
Jest to packer na FPU żywo oparty na kompresji dmc i źródłach dmc.c. Z racji tego, że paker tego typu pakuje dobrze od 16 MB pamięci, a autor ustawił max 2 MB to kompresja nie jest dobra, a jest tylko wolna. Ale tak poprawiłem wiele błędów.
DMCU
Jest to ulepszony paker autora DMCB. Używa maksymalnie 16 MB pamięci i zmodyfikowanej formy dmc. Pakuje całkiem dobrze, ale jest to wersja tylko dla PowerUP, która nie działała pod emulatorem w odróżnieniu od BZIP tego samego autora. Z racji dostępności źródeł przekompilowałem bibliotekę pod 68k, no i działa. Użyłem FPU z racji, że nawet pod emulatorem jest szybciej. Niemniej użyteczność tej biblioteki jest zerowa. Kompresja jest symetryczna względem czasowym i zużycia pamięci. Ale na niej nauczyłem się kompilować biblioteki w C co dało doświadczenie na rozprawienie się z GZIP.
GZIP
Dla sportu przekompilowałem ze źródeł zlib 1.2.8. Po porównaniu z xpkGZIP 1.2 było zbyt wolno, nawet 2 razy. Więc konwersja na assembler i już było dobrze, a i rozmiar się skurczył 3-krotnie. Z pewnych względów użyłem formatu raw deflate, zaś poprzednia wersja używa formatu zlib. Moja biblioteka rozpoznaje i dekoduje format zlib dla zachowania kompatybilności, zaś zapisuje tylko w formacie raw deflate dynamic trees.
LZCB, PPMQ
Oba pakery autorstwa C. Blooma. Oba błędne. PPMQ z racji powolności i tak nieużywalny. LZCB jeszcze by był używalny, ale niewarty naprawy z racji braku źródeł, trudno zlokalizować, których użyto (są na stronie Blooma). Odradzam ich używanie.
Przy pracy na GZIP odkryłem błąd xpkmaster oraz jej niedoskonałość. Błędem jest brak zapisu do spakowanego pliku wersji kompresora, więc depaker zawsze dostaje 0 jak parametr xsp_SubVersion. Powoduje to pewien problem przy produkcji nowszych wersji bibliotek o zmienionym formacie jak moja GZIP (obeszłem ten problem inaczej).
Co do niedoskonałości jest problem z xpkPackReset. Jest to funkcja, która została niezaimplementowana w xpkmaster (jak wiele innych rzeczy). Okazuje się, że xpkmaster nigdy nie wywoła tej funkcji.