WRLD — различия между версиями
Материал из GTAModding.ru
Leonid (обсуждение | вклад) |
Leonid (обсуждение | вклад) |
||
Строка 12: | Строка 12: | ||
0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD) | 0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD) | ||
0х08 4b: размер WRLD | 0х08 4b: размер WRLD | ||
− | 0х0С 4b: | + | 0х0С 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в WRLD) |
− | 0х10 4b: | + | 0х10 4b: адрес на начало глобалсекции (повторяется) |
0х14 4b: количество оффсетов в глобалсекции | 0х14 4b: количество оффсетов в глобалсекции | ||
0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю) | 0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю) | ||
Строка 28: | Строка 28: | ||
Xb: выравнивание (0хАААА...) | Xb: выравнивание (0хАААА...) | ||
0x320 4b: неизв. | 0x320 4b: неизв. | ||
− | 0x324 4b: | + | 0x324 4b: адрес таблицы, задающую определённым объектам на карте свойства timeobjects от времени суток или состояния игрового процесса. |
0х328 4b: неизв. | 0х328 4b: неизв. | ||
− | 0х32С 4b: | + | 0х32С 4b: адрес большой таблицы с неизвестными данными (при её обнулении игрок не грузится на карте) |
0х330 4b: неизв. | 0х330 4b: неизв. | ||
0х334 4b: оффсет на таблицу с неизвестными данными, связанную с рендерингом карты, каждая строка которой отвечает за определённый интерьер. | 0х334 4b: оффсет на таблицу с неизвестными данными, связанную с рендерингом карты, каждая строка которой отвечает за определённый интерьер. | ||
Строка 40: | Строка 40: | ||
0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. | 0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. | ||
0х24 2b: количество ресурсов в WRLD | 0х24 2b: количество ресурсов в WRLD | ||
− | 0x26 2b: флаг, назначение неизвестно | + | 0x26 2b: флаг, назначение неизвестно (обычно = 0х12) |
− | 0x28 32b: | + | 0x28 32b: адрес таблицы скайлинга и координат моделей, последний оффсет указывает на конец последней таблицы. |
− | 0х48 2b: флаг, | + | 0х48 2b: флаг, сигнализирующий наличие особого 4х байтного массива (0 - отсутствует, 1,2,.. - присутствует) |
− | 0х4A 2b: флаг, назначение неизвестно | + | 0х4A 2b: флаг, назначение неизвестно (обычно = 0х12) |
− | 0х4C 4b: | + | 0х4C 4b: адрес особого 4х байтного массива |
'''Структура таблицы переходов на скайлинг и координаты моделей''' | '''Структура таблицы переходов на скайлинг и координаты моделей''' | ||
Строка 54: | Строка 54: | ||
Последний оффсет таблицы ссылается на технический сектор '''AAAAAAAA''', необходимый для движка, сигнализирующий об окончании загрузки [[IPL]]. | Последний оффсет таблицы ссылается на технический сектор '''AAAAAAAA''', необходимый для движка, сигнализирующий об окончании загрузки [[IPL]]. | ||
− | '''Структура таблицы скайлинга''' | + | '''Структура таблицы скайлинга и координат моделей (на основе данных Хероманта):''' |
− | + | Длинна строки = 80b, количество строк определено в заголовке (см. выше) | |
− | + | ||
+ | 0х00 2b - ID модели (1 модель может состоять из нескольких ресурсов) | ||
+ | 0x02 2b - ID ресурса | ||
+ | 0х04 8b - неизвестный набор байтов | ||
+ | 0х0С 4b - не используется (всегда = 0) | ||
+ | 0х10 4b - множитель масштаба Х | ||
+ | 0х14 4b - угол поворота А | ||
+ | 0х18 8b - не используется (всегда = 0) | ||
+ | 0х20 4b - угол поворота B | ||
+ | 0х24 4b - множитель масштаба Y | ||
+ | 0х28 16b - не используется (всегда = 0) | ||
+ | 0х38 4b - множитель масштаба Z | ||
+ | 0x3C 4b - не используется (всегда = 0) | ||
+ | 0х40 4b - X координата относительно центра WRLD | ||
+ | 0х44 4b - Y координата относительно центра WRLD | ||
+ | 0х48 4b - Z координата относительно центра WRLD | ||
+ | 0x4C 4b - 1 (конец строки) | ||
− | '''Структура таблицы идентификации | + | '''Структура таблицы идентификации ресурсов''' |
− | По данной таблице | + | По данной таблице движок игры, исходя из ID ресурса, находит нужный ресурс в WRLD. |
+ | |||
+ | Одна строка таблицы занимает 4 байта для мастера, 8 байт для подчинённого, количество ресурсов в WRLD записано в заголовке. | ||
− | + | 4b: ID ресурса (только для подчинённого WRLD, для мастера определён счётчиком номера строки) | |
− | 4b: ID | + | 4b: Оффсет на ресурс |
− | 4b: Оффсет на | + | |
'''Структура общего FAT (глобалсекции)''' | '''Структура общего FAT (глобалсекции)''' | ||
Строка 72: | Строка 88: | ||
Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL. | Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL. | ||
− | Используется для | + | Используется для проверки при загрузке ресурсов игры (есть во всех типизированных движку файлах). |
{{GTA_Stories-navi}} | {{GTA_Stories-navi}} | ||
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]] | [[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]] |
Версия 14:32, 15 марта 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хАААА...) 0x320 4b: неизв. 0x324 4b: адрес таблицы, задающую определённым объектам на карте свойства timeobjects от времени суток или состояния игрового процесса. 0х328 4b: неизв. 0х32С 4b: адрес большой таблицы с неизвестными данными (при её обнулении игрок не грузится на карте) 0х330 4b: неизв. 0х334 4b: оффсет на таблицу с неизвестными данными, связанную с рендерингом карты, каждая строка которой отвечает за определённый интерьер. 0х338 4b: количество радар-прикреплённых текстур (только для ЛСС) 0х33С 4b: адрес на массив начал радар-прикреплённых текстур (только для ЛСС)
заголовок Slave WRLD [48 байт]
0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD. 0х24 2b: количество ресурсов в WRLD 0x26 2b: флаг, назначение неизвестно (обычно = 0х12) 0x28 32b: адрес таблицы скайлинга и координат моделей, последний оффсет указывает на конец последней таблицы. 0х48 2b: флаг, сигнализирующий наличие особого 4х байтного массива (0 - отсутствует, 1,2,.. - присутствует) 0х4A 2b: флаг, назначение неизвестно (обычно = 0х12) 0х4C 4b: адрес особого 4х байтного массива
Структура таблицы переходов на скайлинг и координаты моделей
Данная таблица располагается сразу после заголовка Slave WRLD и имеет фиксированное число оффсетов.
Каждый оффсет имеет тип Longint и ссылается на определенное место во внутренней бинарной таблице скайлинга и IPL
Последний оффсет таблицы ссылается на технический сектор AAAAAAAA, необходимый для движка, сигнализирующий об окончании загрузки IPL.
Структура таблицы скайлинга и координат моделей (на основе данных Хероманта):
Длинна строки = 80b, количество строк определено в заголовке (см. выше)
0х00 2b - ID модели (1 модель может состоять из нескольких ресурсов) 0x02 2b - ID ресурса 0х04 8b - неизвестный набор байтов 0х0С 4b - не используется (всегда = 0) 0х10 4b - множитель масштаба Х 0х14 4b - угол поворота А 0х18 8b - не используется (всегда = 0) 0х20 4b - угол поворота B 0х24 4b - множитель масштаба Y 0х28 16b - не используется (всегда = 0) 0х38 4b - множитель масштаба Z 0x3C 4b - не используется (всегда = 0) 0х40 4b - X координата относительно центра WRLD 0х44 4b - Y координата относительно центра WRLD 0х48 4b - Z координата относительно центра WRLD 0x4C 4b - 1 (конец строки)
Структура таблицы идентификации ресурсов
По данной таблице движок игры, исходя из ID ресурса, находит нужный ресурс в WRLD.
Одна строка таблицы занимает 4 байта для мастера, 8 байт для подчинённого, количество ресурсов в WRLD записано в заголовке.
4b: ID ресурса (только для подчинённого WRLD, для мастера определён счётчиком номера строки) 4b: Оффсет на ресурс
Структура общего FAT (глобалсекции)
Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL.
Используется для проверки при загрузке ресурсов игры (есть во всех типизированных движку файлах).