-
Notifications
You must be signed in to change notification settings - Fork 9
PAK File Format Rus
Глоссарий
integer - тип данных, целое, положительное число, размер в файле 2 (указывается) или 4 байта (по умолчанию).
byte - тип данных, целое, положительное число, размер в файле 1 байт.
string - тип данных, строка с завершающим нулем на конце (по умолчанию), иногда строка имеет фиксированную длины без нуля на конце (указывается).
-TODO-
Ссылки
- Шаблон формата PAK для программы 010 Editor. Открыть
1. Введение
3. Секции
3.1 Заголовок файла
3.2 Таблица файлов
3.3 Файлы
Этот документ описывает структуру формата файла PAK, используемого в игре Век Парусников 2 (2001) и Рыцари морей (2002). Формат PAK содержит файлы игры: файлы моделей(.cff и .clf), файлы текстур (*.tf), файл карт (.map), а также исполняемые файлы (.exe) и некоторые другие.
Все переменные, перечисленные в таблицах, показаны в порядке их следования в файле.
Формат PAK разделен на 3 основные секции (см Табл. 1).
№ | Секция | Ссылки |
---|---|---|
1 | Заголовок файла | См. 3.1 Заголовок файла |
2 | Таблица/дерево файлов | См. 3.2 Таблица файлов |
3 | Файлы | См. 3.3. Файлы |
Файл PAK начинается с секции "Заголовок файла".
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Сигнатура файла | "ENPAK" |
2 | byte | Неизвестная переменная | |
3 | byte | Неизвестная переменная | |
4 | byte | Неизвестная переменная | |
5 | - | Пустые данные (19 байт) | 0 |
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Сигнатура файла | "ENPAK" |
2 | byte | Неизвестная переменная | |
3 | integer | Неизвестная переменная (2 байта) | |
4 | integer | Смещение (адрес) Таблицы файлов (2 байта) | |
5 | - | Пустые данные (19 байт) | 0 |
Таблица файлов хранит данные о папках и файлах, а именно о названии файлов и папок, расположение файлов в секции файлов см. 3.3 Файлы и т.п. Таблица состоит из записей 3х типов: файл, начало папки, конец папки.
Таблица файлов по своей структуре является деревом, однако, в игре, помимо корневой папки, используется всего два уровня вложенности.
Таблицы данных в играх Век парусников 2 и Рыцари морей слегка различаются. Таким образом, для игры Век Парусников 2 см. Таблица 4 сначала считывается записи таблицы (Тип 0), отвечающие за открытие/переход в корневую папку, затем то же самое для рабочих папок и далее считываются записи таблицы, которые отвечают за файлы. В конце таблицы всегда будут записи закрывающие папки (Тип 2).
В игре Рыцари морей разработчики пошли по пути упрощения см. Таблица 5 и см. Таблица 6. Сначала считываются записи, отвечающие за папки, затем за файлы. Уровень вложенности папок также определяется именем файла, а принадлежность файлов той ли иной папке считывается в порядке их расположении в таблице, т.е., например, 5 первых файлов будут принадлежать первой папке, 10 вторых - второй и т.д.
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | byte | Тип | 1 - файл, 0 - начало папки, 2 - конец папки |
2 | integer | Количество файлов/Размер данных | |
3 | integer | Смещение (адрес) файла | |
4 | integer | Неизвестная переменная | |
5 | integer | Неизвестная переменная | 0 |
6 | string | Название файла |
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Количество файлов | |
2 | string | Название файла |
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Размер файла | |
2 | string | Смещение (адрес) файла | |
3 | integer | Неизвестное значение | |
4 | string | Название файла |
Файлы хранятся последовательно в порядке в соответствии с таблицей файлов [см. 3.2 Таблица файлов](#3-2-Таблица -Файлов).