WRLD — различия между версиями
Материал из GTAModding.ru
Majestic (обсуждение | вклад) (Новая: {{stub}} '''WRLD''' - формат, используемый в LCS и VCS для хранения геометрии и текстур игрового мира. == Структур...) |
Leonid (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
− | '''WRLD''' - формат, используемый в LCS | + | '''WRLD''' - формат, используемый в LCS, VCS и Manhunt2. Хранит все данные для рендеринга игровых локаций - геометрию, текстуры, а так же информацию о размещении объектов. Аналог на [[Renderware]] - формат BSP (корневая секция которого так же называется "world"). |
− | + | ||
− | + | ||
== Структура == | == Структура == | ||
− | |||
− | + | '''Структура заголовка WRLD (на основе данных Херомата):''' | |
− | + | глобальный заголовок WRLD [32 байта] | |
+ | |||
+ | 0х00 4b: сигнатура "DLRW" | ||
+ | 0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD) | ||
+ | 0х08 4b: размер WRLD | ||
+ | 0х0С 4b: переход на начало глобалсекции (таблицы адресов для всех подсекций в WRLD) | ||
+ | 0х10 4b: переход на начало глобалсекции (повторяется) | ||
+ | 0х14 4b: количество оффсетов в глобалсекции | ||
+ | 0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю) | ||
+ | 0х1С 4b: не используется (всегда 0) | ||
− | + | заголовок Master WRLD [800 байт] | |
− | + | 0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. | |
+ | цикл, читающий каждую группу Slave WRLD из [[IMG]]-архива { | ||
+ | 4b: адрес на массив начал Slave WRLD | ||
+ | 4b: флаг, назначение неизвестно | ||
+ | } конец цикла | ||
+ | 4b: количество всех ресурсов в уровне (один master WRLD + все подчинённые ему slave WRLD) | ||
+ | Xb: выравнивание (0хАААА...) | ||
+ | 4b: неизв. | ||
+ | 4b: оффсет на массив с неизвестными данными | ||
+ | 4b: неизв. | ||
+ | 4b: оффсет на таблицу с неизвестными данными | ||
+ | 4b: неизв. | ||
+ | 4b: оффсет на массив с неизвестными данными | ||
+ | 4b: количество радар-прикреплённых текстур (только для ЛСС) | ||
+ | 4b: адрес на массив начал радар-прикреплённых текстур (только для ЛСС) | ||
+ | |||
+ | заголовок Slave WRLD [48 байт] | ||
− | + | 0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. | |
− | + | 0х24 2b: количество ресурсов в WRLD | |
− | + | 0x26 2b: флаг, назначение неизвестно | |
− | + | 0x28 32b: переходы на таблицу скайлинга и координат моделей, последний оффсет указывает на конец последней таблицы. | |
− | + | 0х48 2b: флаг, назначение неизвестно | |
− | + | 0х4A 2b: флаг, назначение неизвестно | |
− | + | 0х4C 4b: переход на 8-байтовый неизвестный массив | |
− | + | ||
− | + | ||
− | 4b: | + | |
− | + | ||
− | + | ||
'''Структура таблицы оффсетов на внутренний IPL''' | '''Структура таблицы оффсетов на внутренний IPL''' |
Версия 20:52, 9 марта 2013
WRLD - формат, используемый в LCS, VCS и Manhunt2. Хранит все данные для рендеринга игровых локаций - геометрию, текстуры, а так же информацию о размещении объектов. Аналог на Renderware - формат BSP (корневая секция которого так же называется "world").
Структура
Структура заголовка WRLD (на основе данных Херомата):
глобальный заголовок WRLD [32 байта]
0х00 4b: сигнатура "DLRW" 0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD) 0х08 4b: размер WRLD 0х0С 4b: переход на начало глобалсекции (таблицы адресов для всех подсекций в WRLD) 0х10 4b: переход на начало глобалсекции (повторяется) 0х14 4b: количество оффсетов в глобалсекции 0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю) 0х1С 4b: не используется (всегда 0)
заголовок Master WRLD [800 байт]
0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. цикл, читающий каждую группу Slave WRLD из IMG-архива { 4b: адрес на массив начал Slave WRLD 4b: флаг, назначение неизвестно } конец цикла 4b: количество всех ресурсов в уровне (один master WRLD + все подчинённые ему slave WRLD) Xb: выравнивание (0хАААА...) 4b: неизв. 4b: оффсет на массив с неизвестными данными 4b: неизв. 4b: оффсет на таблицу с неизвестными данными 4b: неизв. 4b: оффсет на массив с неизвестными данными 4b: количество радар-прикреплённых текстур (только для ЛСС) 4b: адрес на массив начал радар-прикреплённых текстур (только для ЛСС)
заголовок Slave WRLD [48 байт]
0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. 0х24 2b: количество ресурсов в WRLD 0x26 2b: флаг, назначение неизвестно 0x28 32b: переходы на таблицу скайлинга и координат моделей, последний оффсет указывает на конец последней таблицы. 0х48 2b: флаг, назначение неизвестно 0х4A 2b: флаг, назначение неизвестно 0х4C 4b: переход на 8-байтовый неизвестный массив
Структура таблицы оффсетов на внутренний IPL
Данная таблица располагается сразу после заголовка и имеет фиксированное число оффсетов.
Каждый оффсет имеет тип Longint и ссылается на определенное место во внутренней бинарной таблице IPL
Последний оффсет таблицы ссылается на технический сектор AAAAAAAA, необходимый движку, и сигнализирует об окончании загрузки IPL.
Структура таблицы идентификации моделей и текстур
По данной таблице моделям и текстурам присваивается определенный ID.
Один структурный блок таблицы занимает 8 байт
4b: ID модели или текстуры 4b: Оффсет на модель или текстуру
Структура общего FAT
Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL.
Используется скорее всего для проверки