26

Re: Z archive Unpacker

Что там понимать... это больше псевдокод, чем Си.

27 Отредактировано AxXxB (23-04-2007 17:57:58)

Re: Z archive Unpacker

Ну, общие моменты я все же понял smile


Added: Итак, я расжал Main.exp и запаковал его заново по lzss. Результаты тестов:

1. Winz при загрузке уровня вылетает в главное меню, не успев показать экран загрузки.
2. Z Dos вместо главного меню показывает черный экран (даже курсора нет), однако музыка играет.
3. Распаковал lzss'ный Main.exp распаковщиком Antares'а. Распаковалось без ошибок, но в картинках после строки верного заголовка и 5ти блоков неверного дальше одни нули.

Да, и новый Main.exp оказался на пару килобайт меньше старого. Вот такие пироги.

28 Отредактировано dr_dizel (25-04-2007 09:11:46)

Re: Z archive Unpacker

Скорее всего неправильно выбрана реализация lzss-запаковки.
Ищите реализацию с кольцевым буфером в роли словаря (также поиграйтесь с настройками словаря).
Если ничего не поможет, то можно не сжимать файлы, а переводить их в формат, который можно 100% правильно распаковать:
1. записываем дескриптор 8-и неупакованных байт - 0xFF (все биты флага = 1; один бит дескриптора на байт данных)
2. записываем 8-мь оригинальных байт данных
3. повторяем эту процедуру до конца файла
4. завершаем "запакованную" последовательность 9-ю нулевыми байтами.
Также это поможет проверить правильность jmp2-запаковщика.

29 Отредактировано AxXxB (24-04-2007 18:21:01)

Re: Z archive Unpacker

То есть, если блок исходных данных выглядит, допустим, как

01 02 03 04 | 05 06 07 08

, то блок "упакованных" данных будет выглядеть как

FF 01 02 03 | 04 05 06 07 | 08 00 00 00 | 00 00 00 00 
00 00

, да? А если длина файла не будет кратна 8, то недостающие в конце файла байты представить нулями?

30

Re: Z archive Unpacker

Яволь. В любом случае ненужные нули в конце запакованного файла lzss-распаковщик должен проигнорировать.

31

Re: Z archive Unpacker

У меня вообще такое предчувствие (после когда-то сделанного filemon-а), что если распаковать все ресурсы из [pac|exp]-архивов в папку Z, то он их узнает и запустится без наличия архивов.

32 Отредактировано AxXxB (27-04-2007 20:08:08)

Re: Z archive Unpacker

dr_dizel пишет:

1. записываем дескриптор 8-и неупакованных байт - 0xFF (все биты флага = 1; один бит дескриптора на байт данных)
2. записываем 8-мь оригинальных байт данных
3. повторяем эту процедуру до конца файла
4. завершаем "запакованную" последовательность 9-ю нулевыми байтами.
Также это поможет проверить правильность jmp2-запаковщика.

Ну, в общем-то, получилось! Распаковывается все верно. Последний дескриптор я все же представил как надо, чтоб архив хотя б чуть-чуть поменьше места занимал.
Думаю, можно начинать русификацию. Вот только Siberian GRemlin вернется... smile

Re: Z archive Unpacker

AxXxB
Ты написал упаковщик?

Bullfrog, Westwood и многие другие...

34

Re: Z archive Unpacker

Ну, упаковщиком это назвать нельзя... Да и написал-то не я - все сказал dr_dizel, я лишь реализовал.
Игра все прекрасно понимает, даже грузится, как мне показалось, чуточку быстрей. Вот только файлы  побольше занимают раза в полтора