/* Игра: Dungeon Keeper Формат: DAT Сжатие: Отсутствует Защита: нет Автор: Кубышев Владимир Адрес: http://andrey.wom.ru/mrripper Почта: crom@echo.ru */ Формат не имеет никакого ярко выраженного начала. Для получения FAT я делаю следующее: 1) получаю смещение конца таблицы файлов long FATEnd; это значение находится в самом конце DAT файла. 2) получаю смещение начала таблицы файлов long FATBegin; для этого: - перемещаюсь в место, указанное в FATEnd. - считываю байт за байтом пока не найду байт отличный от 0, 1 или 0xFF. В этом месте считываю FATBegin; 3) корректирую значение FATBegin путем прибавления к нему числа 32. FATBegin += 32; 4) определяю количество элементов FAT по формуле nFiles = (FATEnd-FATBegin)/32 Описание элемента FAT: По полученному смещению FATBegin начинается FAT: struct { char Name[18]; //Имя файла long Offset; //Смещение к началу файла long Junk; //Не знаю, что это long Size; //Размер файла short Junk2; //Выравнивание до размера структуры 32 байта } FATItem; Такая структура повторяется nFiles раз и описывает один файл из DAT архива. Сами файлы находятся в начале DAT файла.