Jagged Alliance/DAT

Материал из Old-Games.RU Wiki
Перейти к: навигация, поиск

DAT-файл является контейнером для различных файлов, например, для PCX. Важно отметить, что не все файлы с расширением .DAT являются DAT-файлом, и любой файл может оказаться DAT-файлом.

Структура контейнера

Файл делится на две части — заголовок и данные. В заголовке описываются названия, смещения и длины ресурсов.

Структура заголовка

Смещение Длина, байт Описание
0x0000 0x10 Заголовок контейнера (название)
0x0010 0x04 Максимально возможное количество ресурсов, включая заголовок файла
0x0014 0x04 Настоящее количество ресурсов, включая заголовок файла
0x0018 0x08 Неизвестно, забито нулями
0x0020 0x20 Описание ресурса 1
0x0040 0x40 Описание ресурса 2
0x20 * (максимально возможное количество ресурсов) остаток файла Ресурсы

Поля «Максимально возможное количество ресурсов» и «Настоящее количество ресурсов» требуют некоторого пояснения. В этих полях учитывается и само поле заголовка. Допустим, если максимальное количество равно 32, то самих файлов в контейнере может быть не больше 32 — 1 = 31. Аналогично с настоящим числом ресурсов: при указанных 7 файлах в контейнере будет содержатся только 6. Место под неиспользованные ресурсы забивается нулями (32 байта на каждый пустой ресурс).

Структура описания ресурса

Каждое описание представляет собой блок объемом в 32 (0x20) байта.

Смещение Длина, байт Описание
0x00 0x10 Название ресурса
0x10 0x04 Смещение
0x14 0x04 Длина ресурса
0x18 0x08 Неизвестно, забито нулями

Ограничения контейнера

Название ресурса не может превышать 16 символов, в которые запросто укладывается DOS-формат именования файлов 8.3. Теоретически, объем ресурса не может превышать 4 294 967 295 байт (так, на всякий случай, вдруг вам вздумается запихать 4-гигабайтный файл в ресурс). Однако ограничения на смещение делают эту цифру еще меньше, но не настолько, чтобы задумываться об этих ограничениях всерьез.