-
Распаковщик Shrinkler
Пожалуй самый сильный упаковщик для msx на данный момент - shrinkler. Для него сделали раcпаковщик для z80. И еще есть модификация совместимая с R800 и пригодная для размещения в пзу.
Сделал свою модификацию:
1. Оптимизировал по мелочи, чуть сократил и ускорил.
2. Убрал самомодификацию, но не как uniabis, а с учетом быстродействия.
3. Добавил инициализацию переменной d2, стало можно вызывать распаковщик много раз. Если добавить инициализацию d2 в оригинальную версию, то она будет 209+5=214 байт, версия без самомодификации увеличится с 211 до 215 байт, у меня - 212 байт.
4. В варианте для R800 заменил умножение на аппаратное, с ним распаковщик стал еще быстрее и компактнее. Можно отметить, что если для z80 на частотах 3.5 да и 7 МГц shrinkler все же тяжеловат, то на R800 работает с приемлемой скоростью.
-
На Z80 даже просмотрщих GIF работал построчно, картинка грузилась больше минуты. Вопрос - если взять 16кб образ картриджа (king's valley), во сколько байт его упакует этот Шринклер? И сколько секунд/минут будет распаковывать?
-
Kings Valley сжимается shrinklerом 16384->12368 байт (+распаковщик 212 байт). Но на z80 не стоит его использовать для таких "больших" файлов, распаковываться будет 52-53 секунды, это очень долго. Зато R800 распакует за несколько секунд. Для z80 сейчас есть много хороших и быстрых упаковщиков/распаковщиков, из быстрых - LZSA, из сильно сжимающих - exomizer. LZSA2 сожмет до 13436 байт, зато распакует за полсекунды или даже быстрее. Exomizer упакует до 12786 байт, но распаковка займет больше секунды.
Shrinkler на z80 нужен для очень специфических целей, например для интры 4k, в которую с ним можно уместить чуть больше, чем с другими пакерами. Вот на R800 уже можно и для 16 и даже 32 Кб программ использовать.