Порой, когда разбираешь ресурсы той или иной старой консольной игры, натыкаешь на сжатую графику. Это событие всегда вызывает негативные эмоции, так как влечёт за собой много лишней работы по распаковке / запаковке данных. Сам процесс поиска процедуры распаковки в коде игры не составляет особых проблем (для матёрых кодеров). Да и написание распаковщика путём конвертации оригинального кода на ассемблере в код на языке высокого уровня тоже не слишком трудоёмкий, но занимает время. А вот разбор оригинального алгоритма сжатия и написания упаковщика ресурсов может вылиться в долгую песню. В таком случае начитаешь искать различные пути, дабы как-то обойти стороной работу с упакованными данными. При наличии сводного места в исполняемом файле игры или других файлах (если речь идёт о консолях, использующие оптические носители), можно использовать трюк с предварительно распакованными данными. Суть его в том, чтобы грузить ранее распакованную графику, запретив переход к процедуре распаковки. Но такие манипуляции могут привести к увеличению времени загрузки данных с оптического носителя, так как объём считываемых данных изменился в большую сторону. Хорошо, если разница между сжатым и распакованным блоком небольшая (полтора-два раза). Но если это десятки раз? Вот тут то и может пригодиться утилита «
Simple Tools».
«
Simple Tools» - это набор, состоящий из двух простых программ (упаковщика и распаковщика). Алгоритм сжатия очень простой и эффективный в случае, когда изображение содержит много повторяющихся байт, идущих подряд (картинки с одноцветным фонов, например). Компрессии подвергаются только повторяющиеся подряд байты, в то время как остальные данные не сжимаются. За счёт этого изображения с палитрой до 256 цветов, можно неплохо ужать (в 4-7 раз) и соответственно сэкономить на времени загрузки таких данных. В комплекте с утилитой идёт описание алгоритма сжатия и готовые решения (код для распаковки) для процессоров
MIPS-R3000A (используемый в
Sony Playstation) и
Super Hitachi 2 (установленный в
Sega Saturn). Код распаковщика немного переваливает за десяток инструкций и в случае с процессором
SH-2, например, займёт чуть больше 30 байт.
Подводя итоги, если вы столкнулись с упакованными данными и вам жутко не хочется возиться с разбором оригинального алгоритма упаковки / распаковки (или напрягать кого-то с этим делом) и имеется некое свободное место в ресурсах игры, то можно воспользоваться «
Simple Tools». Даже в случае, когда консоль использует отличный от выше описанных процессор, зная алгоритм сжатия и ассемблер текущего процессора, можно написать собственный код и при желании добавить его к уже существующим. Достаточно создать текстовый файл с описанием и положить его в корневую папку утилиты, тем самым внеся свою лепту в проект «
Simple Tools».
Версия (v1.3.).