я, кажется, когда-то просил помощи в распаковке ресурсов от игры Future Classics Collection (а может и не просил, потому что с ходу псто не нарыл). таки распаковал. ну блядь, ну ёбаный же нахуй же! да, это совершенно обычный lzss.c, содраный один-в-один. но я же самый умный, я его и так помню, зачем в исходник смотреть? хуяк-пиздык — распаковывает какую-то хуйню.
забыл я, блядь, об одном: начальная позиция в словаре в lzss.c — DICT_SIZE-MAX_MATCH_LENGTH. блядь. не ноль. блядь. я пытался какие-то «дельты» угадать, ещё всякую хуйню — от больших мозгов, да. потом таки перечитал пример, сдвинул начальную позицию — всё распаковалось. пересобрал пакованые файлы без сжатия (тупо хуячил литералами), запустил игрушку — работает.
внутри там забавные файлы, очень похожие на RIFF: четырёхбайтовое имя чанка, размер в dword, данные. и этой срани большая кучка. и ещё вдобавок кучка срани вообще без заголовков. но тут уже проще: поскольку я могу пересобирать паки, то методом научного тыка в байты можно выяснить, какой за что отвечает. по крайней мере в степени, достаточной для выковыривания уровней из любимого diskman (и, надеюсь, графики; ну да графику я и пошотить могу, если что).
римейк я, конечно, не сделаю в виду ленивости, но ещё одну расковыряную игру в копилку добавлю.
кстати, надо бы выложить куда-то инфу по Threat. на шикади попробовать, что ли?
да, игра ничего особого из себя не представляет. но diskman'ом оттуда я в школе упарывался по полной программе. там ещё и хотсит есть, пробегать вдвоём на скорость уровни было весьма прикольно. да, 286-е, ничего более навороченого не работало.
сейчас вот опять diskman'а погонял — до сих пор штырит. может, и сделаю таки римейк, там кода-то…
формат картинок и тайлов совершенно дурацкий. и уровней тоже. не хочу в дизассемблер.
формат картинок почти выковырял — кроме одной: в tank battle после середины какая-то лютая ебанина идёт, совершенно ни на что не похожая. поскольку в BATT и BINF я не врубился, то подозреваю, что интересное именно там. точно такая же ебанина в тайлах от танков, кстати.
сами же тайлы очень похожи на картинки, только там TSAT и OTAB, тоже нихуя не ясно. OTAB — это какая-то таблица смещений, видимо — если её занулить, графику подпиздошивает сдвигом.
формат уровней тоже немного понятен: там четыре слоя информации. один, похоже — фон/action, второй — номер тайла (кажется, проходимость тайлов как-то связана с OTAB), третий и четвёртый — тип объекта и какие-то его флажки. в принципе, нарисовать уровень без объектов и тайлов-действий я уже могу.
забавно, что палитра хранится вместе с уровнем, а не отдельно. а время на прохождение хранится в начале названия, прямо в строковом виде.
графика, кстати, вся шестнадцатицветная, но с VGA-палитрой. для EGA и CGA есть таблицы EPRM и CPRM, они как-то влияют на преобразование картинки. как именно — мне лень разбираться.
почему не хочу в дизасм? ну, во-первых, это скучно. а во-вторых, итересней попробовать догадаться, какими извилистыми путями шла авторская мысль. опять же: игрушка состоит из основного экзешника и набора оверлеев, мне лень ковырять механизмы подгрузки. отладчик досбокса же ужасно неудобный. бросать всё и делать досбоксу нормальный отладчик мне тоже как-то…
надо было бы быстро накидать sdl-ный визуализатор/редактор уровней, чтобы наглядней связи втычить. но лень же, как обычно.
кстати, подумалось, что alien breed с динамическим освещением выглядела бы весьма неплохо: там как раз резкие границы должны атмосферненько вписаться. формат файлов римэйка добрый человек уже расколол, как-нибудь стоит попробовать сделать рендерер. ну, или взять threat'овские уровни — там как раз проходимость стен по цвету пикселей определяется, можно и свет трассировать поточней.