Изучаем форматы
| |
aliast | Дата: Среда, 05.06.2013, 12:55 | Сообщение # 16 |
Сержант
Группа: 3DO Team
Сообщений: 33
Награды: 15
Репутация: 36
Статус: Offline
| Есть ли смысл писать тут о не до конца изученных форматах? Ресурсы игры Killing Time. Файлы ARY Массив из нескольких CEL-картинок с текстурами с порезанными заголовками CCB, PDAT, PLUT. typedef struct ARY { string CARY; //сигнатура файла CelARraY int32 start_offset; //смещение к началу первого файла int32 file_size; //размер файла ARY минус 4 байта int32 zero1; //нули int32 offset1; //смещение к началу первой текстуры int32 offset2; //смещение к началу второй текстуры ... int32 offsetN; //смещение к началу N-ой (последней) текстуры int32 zero2; //нули - обозначают конец таблицы оффсетов };
Далее идёт секция CCB первой картинки, но заголовок CCB обрезан, нужно восстановить его самим написав вначале: 43 43 42 20 00 00 00 50 00 00 00 00 Здесь 43 43 42 20 = "CCB " 00 00 00 50 = неизменный размер секции в 80 байт (0x50) 00 00 00 00 = нули Далее идут 68 байт (0x44) из файла ARY, начиная со смещения offset1 до offset2 (должно быть offset2 - offset1 = 0x44) Секция CCB имеет следующий вид (для дальнейшей распаковки нам понадобятся offset_PDAT и offset_PLUT): typedef struct CCB { string CCB ; //сигнатура секции "CCB " (с пробелом в конце) int32 CCB_size; //размер секции, всегда равен 0x50 int32 zero1; //нули int32 flags; //спец. флаги (за подробностями читаем 3DO SDK, а пока просто копируем данные из ARY) int32 zero2; //нули int32 offset_PDAT //смещение к секции PDAT применительно к файлу ARY int32 offset_PLUT //смещение к секции PLUT применительно к файлу ARY ... //дальше лень расписывать, просто копируем данные }; Сразу после секции CCB идёт секция PDAT, заголовок тоже обычно обрезан. Восстанавливается дописыванием байт: 50 44 41 54 размер_секции_PDAT Здесь 50 44 41 54 = "PDAT" размер_секции_PDAT = размер секции PDAT = смещение_к_следующей_секции_PDAT - смещение_к_предыдущей_секции_PDAT Далее копируем данные из ARY, начиная со смещения offset_PDAT и до смещения offset_PDAT из заголовка CCB следующего файла. Ну и по аналогии восстанавливаем секцию PLUT, дописав вначале секции: 50 4C 55 54 00 00 00 4C 00 00 00 20 Здесь 50 4C 55 54 = "PLUT" 00 00 00 4C = размер секции PLUT, всегда 0x4C 00 00 00 20 = неизвестный байт 0x20. Скорее всего он всегда равен 0x20 во всех картинках Копируем данные из ARY, начиная со смещения offset_PLUT и до смещения offset_PLUT из заголовка CCB следующего файла.
Файлы MAP typedef struct MAP { int32 Xmin; //минимальная координата X ? (возможно стартовая точка рисования карты) int32 Ymin; //минимальная координата Y ? int32 width; //предположительно int32 height; //предположительно int16 width*height; ... //todo };
1) Число байт от смещения 0x10 до байт FFFF всегда равно width*height*2 2) Число байт начиная с FFFF до последнего FFFF (последний FFFF в это число не входит) равно (последние_два_байта_перед_первым_FFFF - (width*height))*2ъ 3) Наличие чанка BG после последнего FFFF скорее всего отвечает за задний фон (BackGround), если он есть Грубые опыты показали, что файл MAP отвечает за физику стен (уверенности пока нет), т.е. при его изменении стена есть, а мы сквозь неё ходим)) на отображении самих стен и рисовании карты это не отражается.
Файлы VRT typedef struct VRT { int32 chunk_id; //0x7FFFFFFD int32 Xmin + 0x10; //Xmin берётся из MAP-файла int32 Ymin + 0x10; //Ymin берётся из MAP-файла int32 length; //предположительно int32 width; //предположительно int32 start_index; // начальный индекс вершин ... };
1) Число байт от смещения 0x18 до (не знаю как объяснить, но это место бросается в глаза резким увеличением значения) совпадает с числом байт из пункта 1 замечаний в MAP-файле 2) XMin, YMin - Нижний левый угол карты, ниже которого ничего нет 3) Начиная со смещения 0x18 начинаются двухбайтовые (int16) индексы вершин. Для чего они нужны не очень понятно. Индексы постепенно увеличиваются до числа, равного количеству вершин на данном участке карты. После этого начинаются описания координат XYZ всех вершин. Как программно определить смещение на координату X первой вершины пока не разобрался. 4) Вершины имеют следующий формат: typedef struct Vertex { int32 XCoord; int32 YCoord; int32 ZCoord; int16 VisibleFlag; //флаг видимости вершины, если 1. Если !=1 вершина в игре не отобразится int16 zero; //два байта нулей }; Структура Vertex повторяется до самого конца файла VRT.
Файлы FAC typedef struct FAC { int32 vertex1; //порядковый номер вершины верхнего левого угла грани int32 vertex2; //порядковый номер вершины верхнего правого угла грани int32 vertex3; //порядковый номер вершины нижнего правого угла грани int32 vertex4; //порядковый номер вершины нижнего левого угла грани int16 unk; //неизвестно int16 texture_index; //индекс накладываемой текстуры };
1) vertex1, vertex2, vertex3, vertex4 - порядковые номера вершин, согласно порядку их расположения в файле VRT (начиная с нуля). texture_index - индекс текстуры из файла ARY, нумерация с нуля.
Файлы VNT Скорее всего файл событий (event). Формат неизучен. Грубые эксперименты с файлом позволили убрать с карты шары-аптечки и заблокировали открытие одной из дверей (та что без ключа). Предположительно файл отвечает и за призраков, и расставляет врагов по карте. И отвечает за все прочие скрипты-события.
Сообщение отредактировал aliast - Воскресенье, 25.05.2014, 12:39 |
|
| |
3do | Дата: Среда, 05.06.2013, 13:09 | Сообщение # 17 |
WebMoney WMZ - Z217808981915 WMR- R373273358346
Группа: Администраторы
Сообщений: 196
Награды: 66
Репутация: 60
Статус: Offline
| aliast, конечно есть смысл, на то она и тема про изучение форматов.
Получается, что файлы VRT, MAP взаимосвязаны, тогда и FAC тоже должен с чем-то взаимодействовать
|
|
| |
aliast | Дата: Среда, 05.06.2013, 13:12 | Сообщение # 18 |
Сержант
Группа: 3DO Team
Сообщений: 33
Награды: 15
Репутация: 36
Статус: Offline
| Да, очень похоже. FAC пока не получилось связать) И VNT мне совершенно непонятен, и сокращение не поддаётся расшифровке...
Сообщение отредактировал aliast - Среда, 05.06.2013, 13:13 |
|
| |
Phoenix | Дата: Среда, 05.06.2013, 13:46 | Сообщение # 19 |
Сержант
Группа: Разработчики 3DO TEAM
Сообщений: 30
Награды: 22
Репутация: 43
Статус: Offline
| Цитата (Holks) Заглянул в каталог, много полезной инфы, но того что искал не нашёл. Как распаковать файлы .bun ? Да, когда-то я тоже хотел вытянуть всё что можно из WC3, у меня даже получилось. Но ждало разочарование. В общем для начала можете взять не релизнутую версию ZStream Reader 0.5.5 (Origin).
http://exfile.ru/422313
Эта версия клепалась для поддержки файлов из WC3, но, окзалось, что звуковые данные там в неизвестном формате сжатия, поэтому звук хоть и тянется, но сплошной шип. При том, что я сделал поддержку WC3 версии для ПК. Работа с файлами аналогичная, но из ПК версии звук услышать можно в чистоте, а с 3DO только шум. Ещё вы сможете тащить реплики из диалогов, они в TXT файлы будут заноситься. В общем попробуйте, будут вопросы задавайте.
P.s. вы молодцы, что решили скооперировать усилия, много дельной информации.
Сообщение отредактировал Phoenix - Среда, 05.06.2013, 13:48 |
|
| |
Atla | Дата: Среда, 05.06.2013, 17:51 | Сообщение # 20 |
Лейтенант
Группа: Разработчики 3DO TEAM
Сообщений: 53
Награды: 78
Репутация: 46
Статус: Offline
| Да, получается очень много файлов mov, тоесть я так понял файл BUN разбивается на много mov но они нигде не читаются, надо дальше кумекать но уже хорошо!
Вот еще небольшая коллекция исходников для конструктора собери сам:))))) может кто попробует при желании! Смотрите в каталоге файлов.
Доступно только для пользователей
|
|
| |
Phoenix | Дата: Среда, 05.06.2013, 17:58 | Сообщение # 21 |
Сержант
Группа: Разработчики 3DO TEAM
Сообщений: 30
Награды: 22
Репутация: 43
Статус: Offline
| Цитата (Atla) тоесть я так понял файл BUN разбивается на много mov но они нигде не читаются
На сколько я помню, всё в том же ZStream Reader'e нужно потом открыть mov/mve файл и он разберётся на видео и звук. Но ни то, ни другое в 3DO версии далее не читаемо. Ну во всяком случае пока. А для ПК файлов всё ок, кроме видео. Из bun ещё текст должен извлекаться.
|
|
| |
Hulk | Дата: Среда, 05.06.2013, 22:13 | Сообщение # 22 |
Лейтенант
Группа: Пользователи
Сообщений: 53
Награды: 5
Репутация: 14
Статус: Offline
| Ого как глубоко вы капнули Так скоро Horde,Doom,Novostorm,Gex откроете
Игр нераскрытых еще множество, как и секретов, вы молодцы ребята
|
|
| |
Dron | Дата: Среда, 05.06.2013, 23:00 | Сообщение # 23 |
Лейтенант
Группа: Пользователи
Сообщений: 51
Награды: 8
Репутация: 17
Статус: Offline
| Спасибо . Мне тоже интересно посмотреть некоторые ресурсы из игр Shock Wave, Space hulk, Novs-storm, Road Rash др.
|
|
| |
aliast | Дата: Среда, 05.06.2013, 23:19 | Сообщение # 24 |
Сержант
Группа: 3DO Team
Сообщений: 33
Награды: 15
Репутация: 36
Статус: Offline
| А вот кстати патент на стримы с JARY, JMAP, JFAC, JVRT и JVNT - всё что есть в Киллинг тайме! Надо читать, вникать... http://www.google.com/patents/US5577180
|
|
| |
3do | Дата: Четверг, 06.06.2013, 07:59 | Сообщение # 25 |
WebMoney WMZ - Z217808981915 WMR- R373273358346
Группа: Администраторы
Сообщений: 196
Награды: 66
Репутация: 60
Статус: Offline
| aliast спасибо, очень интересный и ценный материал, мне всегда было интересно узнать на сколько точно по параметрам нужно подгонять звуковые aiff файлы, чтобы они корректно проигрывались потом после замены на приставке, а то бывает поменяешь файлик на другой, а он не играет, да и не всегда в звуковых редакторах под винду можно точно подогнать нужный параметр, используются в основном переменный звук и битрейт скачет. А вот по твоей ссылке нашел нужную информацию
The following table lists the data rate for various qualities of audio. These are 16-bit samples, compressed 2:1. HIGH (44 kHz - 88 Kb/sec Best Quality AudioStereo 22 kHz -44 Kb/sec Okay Quality StereoMONO (22 kHz 22 Kb/sec Okay QualityLO (11 kHz 11 Kb/sec Minimal Quality Streaming Not SupportedNONE 0 Kb/sec Used When RAM Based Sounds Are Available Assuming 200 Kb/sec transfer rate, Best Quality Stereo allows for approximately 110 Kb/sec to allocate to video data. Okay Quality Stereo allows for 150 Kb/sec. This should be enough for most applications, although there can be up to 170 Kb/sec when stereo is not needed. Тут взаимосвязь из стрим потока данных из 200kb/с, чем ниже качество звука, тем больше выделяется на видео данные, при использовании среднего качества звука, можно до максимума увеличить качество видео, или наоборот. информации к размышлению очень много
|
|
| |
Holks | Дата: Четверг, 06.06.2013, 22:07 | Сообщение # 26 |
WebMoney WMZ: Z388130560516 WMR: R393137916307
Группа: Модератор 3DO TEAM
Сообщений: 110
Награды: 32
Репутация: 55
Статус: Offline
| Цитата (Phoenix) Да, когда-то я тоже хотел вытянуть всё что можно из WC3, у меня даже получилось. Но ждало разочарование. В общем для начала можете взять не релизнутую версию ZStream Reader 0.5.5 (Origin). http://exfile.ru/422313 Эта версия клепалась для поддержки файлов из WC3, но, окзалось, что звуковые данные там в неизвестном формате сжатия, поэтому звук хоть и тянется, но сплошной шип. При том, что я сделал поддержку WC3 версии для ПК. Работа с файлами аналогичная, но из ПК версии звук услышать можно в чистоте, а с 3DO только шум. Ещё вы сможете тащить реплики из диалогов, они в TXT файлы будут заноситься. В общем попробуйте, будут вопросы задавайте. P.s. вы молодцы, что решили скооперировать усилия, много дельной информации. Спасибо, всё распаковывается, похоже что формат .bun- архив для хранения видео, кстати в демо версии этой игры тоже формат .mov и тоже нигде не открывается, я так думаю .mov - сжатый в 3do SDK видео-файл, можно поэксперементировать, создать свой файл в формате .mov и сжать через SDK, а потом сравнивать изменения в файлах, возможно что-то получится и удастся понять алгоритм сжатия.
Сообщение отредактировал Holks - Четверг, 06.06.2013, 22:12 |
|
| |
Phoenix | Дата: Понедельник, 10.06.2013, 14:50 | Сообщение # 27 |
Сержант
Группа: Разработчики 3DO TEAM
Сообщений: 30
Награды: 22
Репутация: 43
Статус: Offline
| Holks, при том, что видео из WC3 для 3DO качеством получше ПК версии, которая страдает пикселями. Так что заполучить эти видяшки было бы здорово. А пока только через чит-код смотреть :)) Добавлено (10.06.2013, 14:50) --------------------------------------------- Порылся тут у себя и нашёл описание формата MVEи утилиты по работе с ним (с исходниками). Возможно это поможет разобраться с файлами MOV из WC3.
http://exfile.ru/423326
|
|
| |
Orion | Дата: Понедельник, 10.06.2013, 15:37 | Сообщение # 28 |
Группа: Удаленные
| -)))))) глянем что там
|
|
| |
Phoenix | Дата: Вторник, 11.06.2013, 12:23 | Сообщение # 29 |
Сержант
Группа: Разработчики 3DO TEAM
Сообщений: 30
Награды: 22
Репутация: 43
Статус: Offline
| Нужен алгоритм сжатия/расжатия формата ADP4. На сколько я понял это разновидность ADPCM. Но так ли это?
|
|
| |
3do | Дата: Вторник, 11.06.2013, 12:54 | Сообщение # 30 |
WebMoney WMZ - Z217808981915 WMR- R373273358346
Группа: Администраторы
Сообщений: 196
Награды: 66
Репутация: 60
Статус: Offline
| звуковые файлы в 3do при конвертации используют режимы 4bit ADPCM это AIFC и в режиме создания headerless data(bin)
|
|
| |
|