Перейти к содержимому
Zone of Games Forum
z0z1ch

Помогите распаковать .dek

Рекомендованные сообщения

Добрый день.

Необходимо вытащить графику из .dek файлов (присутствуют в играх для iso от компании Playdek Games).

Один добрый человек пытался мне помочь и добился определенных успехов (получилось извлечь звуки и текст), результат его трудов и .dek файлы здесь.

Если у кого-нибудь получится достать графику буду благодарен.

Спасибо!

Поделиться сообщением


Ссылка на сообщение

z0z1ch, тебе нужна просто графика карточек для CnC?

типа такой? http://rgho.st/8HzQ6bhk9.view

Изменено пользователем LinXP

Поделиться сообщением


Ссылка на сообщение

 

LinXP, да нужна именно графика карточек, игрового поля и т.д., если подскажете способ как её достать (т.к. интересует не только данная игра) буду признателен, спасибо.

Изменено пользователем z0z1ch

Поделиться сообщением


Ссылка на сообщение

Есть какой-нибудь прогресс по извлечению графических ресурсов из dek-файлов?

Я пробовал ковырять файлы из Summoner Wars как для ios, так и для android ( https://yadi.sk/d/1Vt9sPZgv3CMQ )

В целом текстуры извлекаются относительно просто, их можно найти в сырых извлеченных данных из раздела с данными, по ссылке выше есть пример такой текстуры. Но основная проблема в том, что не могу понять, почему текстуры в файлах получаются битыми. Я вручную сидел биты перебирал, там полностью правильный и корректный формат DEFLATE с динамическими кодами Хаффмана. Если кто чем поможет, буду безумно признателен.

Изменено пользователем Akuma_Izra

Поделиться сообщением


Ссылка на сообщение
В целом текстуры извлекаются относительно просто...

Если есть возможность, напишите инструкцию как это сделать, спасибо.

Изменено пользователем z0z1ch

Поделиться сообщением


Ссылка на сообщение
Если есть возможность, напишите инструкцию как это сделать, спасибо.

Я просто распаковываю raw deflate данные по смещению 0x2000 или 0x3000 (нужно просто смотреть докуда идет заголовок файла, а потом выравнять по 0x1000). Для большинства файлов это 0x2000

Распаковку делаю с помощью питона 3.4+:

import struct, zlib, sysfile = open(sys.argv[1], "rb")file.seek(0x24) # тут указывается размер упакованных данныхsize = struct.unpack("I", file.read(4))[0]file.seek(0x2000)open("dump.data", "wb").write(file.read(size))

 

Полученный файл в целом можно открыть GIMP'ом как raw-изображение RGBA. Там только нужно подобрать размеры текстуры и смещение в файле. Размеры текстуры равняются обычно степеням двойки (128х128, 256х256 и т.д).

Но у меня часть текстуры получается битой. Причину понять не могу. Я даже декомпилировал андроид версию Summoner Wars, там в коде при загрузке из файлов вызывается обычная inflate функция zlib'а версии 1.2.3.

Пример текстуры, что получается извлечь из non_scene.dek можно найти по моей ссылке выше, там кстати она почему-то ещё и со смещением расположена относительно начала данных.

Поделиться сообщением


Ссылка на сообщение

В общем DEK формат - это довольно простой контейнер.

В зависимости от игры, там меняются немного заголовки, но смысл в целом неизменен.

В начале идет количество папок внутри файла.

Затем идет описание этих папок, в каждом из которых указано количество файлов в папке, смещение в файле, где данные папки лежат и размер этой папки.

По смещению папки идет описание файлов, обычно идет хеш файла, тип файла, смещение и размер в хидер секции папки, смещение и размер в дата секции папки.

После описания файлов идет индексация файлов, там просто напротив хеша ставится номер данного файла(бесполезная штука).

После этого указатель внутри файла выравнивается на следующее значение кратное 0x1000.

Само содержимое папки представляет собой raw deflate, который можно распаковать zlib'ом. Оно поделено на две секции: хидер и дата. В первой содержится описание текстур и обычные файлы. Когда первая секция заканчивается, идет также выравнивание на значение кратное 0x1000, после этого идет секция дата, здесь обычно лежат сами текстуры.

В хидер части обычно указывается размер текстуры. Сама текстура может быть пожата(DXT, PVRTC и прочие), а может быть и нет.

Но иногда вылазят неожиданности, например у Summoner Wars хидер секция битая и половина первой текстуры смешивается с данной секцией. Иногда смещения немного странно смещаются, так что приходится искать правильное.

В Lord of Waterdeep например у заголовков другие смещения, хоть и с тем же смыслом, а в файле cards_hd.dek лежат карты несжатых текстур в RGBA8888, но со странными размерами данных, хоть и превосходно открываются GIMP'ом.

В целом, могу помочь распаковать, но окончательную обработку тебе придется делать самому, у меня на это времени просто не хватает.

Изменено пользователем Akuma_Izra

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас



Zone of Games © 2003–2024 | Реклама на сайте.

×