Приложи пожалуйста сам файл — я хочу добавить цифру для LZ4 — т.к. сейчас очень большая лагуна между LZ4 и всем остальным. Интересно посмотреть, какие байтовые пакеры жали получше — думаю, мне бы не помешал упаковщик нацеленный на быструю распаковку, но нацеленный на нашу платформу (LZ4 достаточно ощутимо неэффективен по формату, ну и сам формат не вполне удобен для Z80).
Байтовые упаковщики встречались иногда в 1990е, но быстро проиграли смешанным битовым-байтовым пакерам, т.к. не могли конкурировать по коэффициенту сжатия.
CharPres. Настолько херово жмет, что им по два раза жали:)
Offtopic.
Нарыл у себя в тестах немного данных по разным архаичным и не очень упаковщикам.
16384 байта TR-DOS Ver 5.03 (md5 0da70a5d2a0e733398e005b96b7e4ba6)
Она пакует задом наперёд. Это упрощает распаковщик (на несколько байт), плюс, не нужно так же много возиться со стеком, так что и побыстрее распаковка. Выигрыш/проигрыш зависит только от конкретного набора данных, как повезёт. По сути — один хрен. По-хорошему, нужно было встраивать опцию упаковки задом наперёд в ZX7, как это сделано в Exomizer, но Einas — довольно странный чувак.
Главное достоинство распаковки задом наперёд — можно иметь кодовый блок заканчивающийся на самом верху памяти и распковывать внахлёст просто загрузив упакованный блок так, чтобы его начало оказалось немного ниже начала распакованного блока. В 1990е я написал несколько пакеров на спектруме; они были очень примитивные, но паковали они все задом наперёд как раз из-за того, что я переделывал мультифейсные кассетные релизы и мне часто бывало нужно распаковать в упор до конца памяти.
Отличная статья.
Немного скажу за zx7. Cуществует версия пакера zx7b * Modified in 2013 by Antonio Villena, какие то файлы жмет лучше, какие то хуже, но думаю автора депакера хуже бы делать не стал? Он сам ей всегда и пользуеЦЦа.
Потому что спектрумовские прерывания Бейсика (которые IM 1) модифицируют системные переменные через IY. Поэтому, если взять распаковщик использующий IY и не запретить прерывания — Бейсик будет гадить вокруг текущего значения IY, что может дать большое кол-во непредсказуемых багов. Ошибка, конечно, детская, но неприятная и распространённая.
В принципе, мне бы нужно было точно так же сказать про HL', потому что если в HL' неправильная величина, вернуться из распаковщика в Бейсик будет затруднительно.
Сохранить в BASin в TAP, загрузить в эмуляторе с поддержкой TAP и TRD, сохранить в TRD.
Через сохранение в SNA не всегда получается, unreal, например подвисает на снапшотах из BASin.
CharPres. Настолько херово жмет, что им по два раза жали:)
Offtopic.
Нарыл у себя в тестах немного данных по разным архаичным и не очень упаковщикам.
16384 байта TR-DOS Ver 5.03 (md5 0da70a5d2a0e733398e005b96b7e4ba6)
Размеры со всеми заголовками и депакерами (если без него нельзя). Для архивов — размеры блока файла со всеми заголовками.
Так получилось, что CodeCruncher3 и Data SQueezer тестировались на других данных, поэтому в сравнении не участвуют.
Главное достоинство распаковки задом наперёд — можно иметь кодовый блок заканчивающийся на самом верху памяти и распковывать внахлёст просто загрузив упакованный блок так, чтобы его начало оказалось немного ниже начала распакованного блока. В 1990е я написал несколько пакеров на спектруме; они были очень примитивные, но паковали они все задом наперёд как раз из-за того, что я переделывал мультифейсные кассетные релизы и мне часто бывало нужно распаковать в упор до конца памяти.
Немного скажу за zx7. Cуществует версия пакера zx7b * Modified in 2013 by Antonio Villena, какие то файлы жмет лучше, какие то хуже, но думаю автора депакера хуже бы делать не стал? Он сам ей всегда и пользуеЦЦа.
В принципе, мне бы нужно было точно так же сказать про HL', потому что если в HL' неправильная величина, вернуться из распаковщика в Бейсик будет затруднительно.
А почему «внимание IY»? =)
Через сохранение в SNA не всегда получается, unreal, например подвисает на снапшотах из BASin.