Сами по себе детали очень простые. Можешь посмотреть в любую игру из Codemasters Collection, и все поймешь. Там после распаковки моим депакером, идет восстановление графики во всех местах, где она была преобразована. Кстати, в 95 году, когда как раз выходила коллекция и была конкуренция с RST и Kan0, RST тоже спрашивал, что я делал с графикой, а я не хотел раскрывать секрет (тем более, что идея наипростейшая), и пол-ночи, сколько мы говорили по телефону, пытался поизящнее завуалировать эту информацию, всячески уходя в сторону от простых обьяснений. Что это вот, такой алгоритм, специально рассчитанный под особенности графики и т.д.
Делается так. Ищутся все спрайты или массивы спрайтов с шириной больше 1 знакоместа (т.е. 2 и т.д.), и их столбцы и строки меняются местами. Чаще всего в играх спрайты располагаются в памяти линейно, строка за строкой. Т.е. допустим был спрайт шириной 4 знакоместа, и высотой 10 пикселей. Он расположен так:
столбец 1, столбец 2, столбец 3, столбец 4,
столбец 1, столбец 2, столбец 3, столбец 4,
и т.д. в течение 10 линий.
Упаковывать его в линейном порядке невыгодно, т.к. вероятность изменения байтов в горизонтальном направлении (от столбца к столбцу) гораздо выше, чем в вертикальном (от строки к строке), т.к. в горизонтальном направлении один байт - это 8 пикселов, а в вертикальном - это 1 пиксел. Меняем строки и столбцы местами, и получаем спрайт в виде:
столбец 1, столбец 1, столбец 1 (так 10 раз)
столбец 2, столбец 2, столбец 2 и т.д.
В результате линейная энтропия стновится ниже, что позволяет упаковщику гораздо лучше сжать графику.

