.WAD


.WAD (по утверждению id Software, происходит от англ. Where’s All the Data;[2]) — архивный формат файлов, который использовался в компьютерных играх, основанных на движке Doom: Doom, Doom 2, Final Doom: The Plutonia Experiment, Final Doom: Evilution, Heretic, Hexen и некоторых других, для хранения игровых ресурсов (текстур, музыки, звуков и других). Формат ресурсов, помещаемых в такой файл, может подразумевать сжатие. Сам формат не предоставляет возможности сжатия, хотя по своей структуре допускает возможность создания нескольких ссылок в заголовке на один фактический ресурс, что позволяет избежать дублирования ресурса, целиком сводящегося к полному или частичному повторению другого ресурса. В силу экзотичности такой ситуации случаи практического использования этой возможности неизвестны.

Ресурсы хранятся в именованных блоках (англ. lump), имена, размеры и местоположение в файле которых хранится в каталоге — таблице размещения ресурсов, располагающемся, как правило, в конце файла, хотя каталог может располагаться где угодно.

Каталог состоит из 16-байтовых записей, либо описывающих блоки данных, либо являющихся маркерами. Каждая запись состоит из трёх полей: 4-байтовое смещение начала блока относительно начала файла, 4-байтовая длина блока (для маркера поле равно нулю) и восьмисимвольное имя (см. Стандарт 8.3) блока, дополняемое нулями до 8 байт.

.WAD-файл имеет 12-байтовый заголовок, состоящий из трёх 4-байтовых частей: сигнатура, число записей каталога и смещение начала каталога относительно начала файла.

Существуют также другие сигнатуры, в частности WAD2, используемый в игре Quake. Такие файлы, как правило, имеют другой (расширенный) формат каталога.

Маркеры используются для отметки группы блоков, которые игровой движок считает идущими в строго определённой последовательности. К примеру, данные уровня начинаются маркером ExMy для DOOM и Heretic, x — номер эпизода, y — номер уровня, либо MAPxx для DOOM 2 и Hexen, xx — номер уровня. Теоретически, имя блока может быть любым, допустимым в имени файла файловой системы FAT. Затем идут блоки данных уровня в строго определённой последовательности: THINGS, LINEDEFS, SIDEDEFS, VERTEXES, SEGS, SSECTORS, NODES, SECTORS, REJECT, BLOCKMAP. В Hexen также присутствует блок BEHAVIOR, содержащий скрипты.