DTZ — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Структура версии VCS)
 
(не показаны 27 промежуточных версий 5 участников)
Строка 1: Строка 1:
 
{{stub}}
 
{{stub}}
  
<code>[[DTZ|*.dtz]]</code> - один из форматов архивов, представленных в [[GTA LCS]] и [[GTA VCS]]. <code>GAME.dtz</code> упакован при помощи алгоритма сжатия  deflate/[http://zlib.net/ zlib], фактически файл представляет собой дамп фрагмента памяти консоли.
+
<code>[[DTZ|*.dtz]]</code> - дамп памяти консоли, содержащий основные игровые ресурсы [[GTA LCS]] и [[GTA VCS]]. Файл <code>GAME.dtz</code> упакован при помощи алгоритма сжатия  deflate/[http://zlib.net/ zlib].
 +
 
 +
Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов (в основном это бинарные аналоги текстовых файлов в папке data и моделей с текстурными архивами в папке models из [[GTA VC]]).
 +
 
 +
== Заголовок ==
 +
 
 +
=== Версия GTA LCS ===
 +
 
 +
В приведенной ниже таблице дана расшифровка заголовка DTZ:
 +
 
 +
  0x0 [4b FourCC] - Сигнатура DTZ, читается как GTAG.
 +
  0x4 [4b int] - неизвестно, обычно = 1.
 +
  0x8 [4b int] - размер DTZ.
 +
  0xC [4b int] - размер данных без учёта таблиц для перераспределения файла в памяти.
 +
  0x10 [4b int] - таблица смещений для перераспределения указателей в памяти (Reallocation Table).
 +
  0x14 [4b int] - количество смещений в Reallocation Table.
 +
  0x18 [4b int] - ссылается на таблицу смещений на хеши jenkins, которые заменяются на указатели на таблицы виртуальных методов (vmt).
 +
  0x1C [2b short] - количество хешей jenkins в 1 секции таблицы.
 +
  0x1E [2b short] - количество хешей jenkins во 2 секции таблицы (методы рендера в Atomic моделей).
 +
  0x20 [4b int] - '''gpThePaths''' (пути).
 +
  0x24 [4b int] - '''CPools::ms_pBuildingPool''' (смещение на данные, относящиеся к размещению статичных обьектов (Buildings IPL)).
 +
  0x28 [4b int] - смещение на данные, относящиеся к размещению дорог (Treadable IPL).
 +
  0x2C [4b int] - смещение на данные, относящиеся к размещению динамических объектов (Dummy IPL).
 +
  0x30 [4b int] - EntryInfoNodes (связана со стримингом динамических объектов карты).
 +
  0x34 [4b int] - PtrNodes (связвна со стримингом карты, ссылается на IPL из секций Buildings, Treadables, Dummys).
 +
  0x38 [4b int] - количество IDE.
 +
  0x3C [4b int] - таблица смещений на бинарные IDE (ID присваивается по счетчику смещений от 0 до количества IDE).
 +
  0x40 [4b int] - таблица классов авто (normal, poorfamily...), 11 классов с возможностью указания 25 IDE ID авто для класса.
 +
  0x44 [4b int] - количество ID авто в каждом классе вышеуказанной таблицы.
 +
  0x48 [4b int] - смещение на данные игровых зон ('''info.zon''', '''navig.zon''').
 +
  0x4C [4b int] - '''CWorld::ms_aSectors''' Данные игровых секторов, ссылается на PtrNode
 +
  0x50 [4b int] - '''CWorld::ms_bigBuildingsList''' 4 указателя на PtrNode
 +
  0x54 [4b int] - количество строк в таблице 2dfx.
 +
  0x58 [4b int] - смещение на таблицу 2dfx эффектов для объектов из default.ide (строка 64 байт).
 +
  0x5С [4b int] - смещение на массив hardcoded индексов моделей.
 +
  0x60 [4b int] - смещение на блок загрузки текстурных архивов CHK (TexList).
 +
  0x64 [4b int] - неизвестно, равно 0.
 +
  0x68 [4b int] - смещение на блок загрузки COL2 файлов.
 +
  0x6C [4b int] - неизвестно, равно 0.
 +
  0x70 [4b int] - смещение на коллизию-пустышку.
 +
  0x74 [4b int] - смещение на аналог '''object.dat''' (строка 32 байта, 117 шт.).
 +
  0x78 [4b int] - смещение на палитру RGBA цветов, используемых в '''carcols.dat''', 256 цветов.
 +
  0x7C [4b int] - '''CStreamingInfo CStreaming::ms_aInfoForModel[]''' (аналог GTA3PS*HR.DIR).
 +
  0x80 [4b int] - смещение на блок загрузки ANIM файлов и анимаций ('''ped.ifp''').
 +
  0x84 [4b int] - '''fistfite.dat'''
 +
  0x88 [4b int] - '''PedAnimInfo[]'''
 +
  0x8C [4b int] - аналог '''ped.dat'''.
 +
  0x90 [4b int] - аналог '''pedstats.dat'''.
 +
  0x94 [4b int] - количество строк в '''cull.ipl'''.
 +
  0x98 [4b int] - смещение на аналог '''cull.ipl''' (строка 16 байт).
 +
  0x9C [4b int] - относится к окклюзиям (не используется, равно 0).
 +
  0xA0 [4b int] - относится к окклюзиям (не используется, равно 0).
 +
  0xA4 [4b int] - смещение на аналог '''waterpro.dat'''.
 +
  0xA8 [4b int] - смещение на аналог '''HANDLING.CFG'''.
 +
  0xAC [4b int] - смещение на аналог '''surface.dat'''.
 +
  0xB0 [4b int] - смещение на аналог '''timecyc.dat'''.
 +
  0xB4 [4b int] - смещение на аналог '''pedgrp.dat'''.
 +
  0xB8 [4b int] - смещение на аналог '''particle.cfg'''.
 +
  0xBC [4b int] - смещение на аналог '''weapon.dat'''.   
 +
  0xC0 [4b int] - таблица смещений на клампы встроенных в DTZ MDL файлов.
 +
  0xC4 [4b int] - смещение на аналог '''CUTS.DIR'''.
 +
  0xC8 [4b int] - смещение на аналог '''ferry.dat''' (пути для парома).
 +
  0xCС [4b int] - смещение на аналоги '''tracks.dat''' и '''tracks2.dat'''.
 +
  0xD0 [4b int] - смещение на аналог '''flight.dat'''.
 +
  0xD4 [4b int] - смещение на '''menu.chk''' (сжат Deflate/ZLib алгоритмом).
 +
  0xD8 [4b int] - размер '''fonts.chk''' (реальный).
 +
  0xDС [4b int] - смещение на '''fonts.chk''' (сжат Deflate/ZLib алгоритмом).
  
 
== Краткое описание содержимого ==
 
== Краткое описание содержимого ==
  
Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов. На <i>данный момент</i> известно, что в <code>GAME.dtz</code> содержатся следующие данные:
+
В текущий момент известно, что в <code>GAME.dtz</code> содержатся следующие данные:
  
 
{|{{Таблица}}
 
{|{{Таблица}}
 
! Описание
 
! Описание
 
! Аналогия из предыдущих частей серии
 
! Аналогия из предыдущих частей серии
! Оффсет
+
! Оффсет на ресурс
 
! Комментарии
 
! Комментарии
 
|-
 
|-
 
| colspan="4" | <b>Текстуры</b>
 
| colspan="4" | <b>Текстуры</b>
 
|-
 
|-
| текстуры меню (menu.chk)
+
| текстуры меню
 
| frontend.txd
 
| frontend.txd
 
| LCS PS2: <code>0x4E4A30</code>
 
| LCS PS2: <code>0x4E4A30</code>
Строка 71: Строка 137:
 
| radarNN.txd
 
| radarNN.txd
 
| -
 
| -
| множество файлов, текстуры радара
+
| только в [[GTA VCS]], запакованы deflate/zlib алгоритмом
 
|-
 
|-
 
| colspan="4" | <b>Анимация</b>
 
| colspan="4" | <b>Анимация</b>
Строка 97: Строка 163:
 
| colspan="4" | <b>Коллизия</b>
 
| colspan="4" | <b>Коллизия</b>
 
|-
 
|-
| коллизии пешеходов
+
| коллизии пешеходов (**)
 
| peds.col
 
| peds.col
 
|
 
|
| peds.col2
+
| одна за всех :)
 
|-
 
|-
| коллизии автотранспорта
+
| коллизии автотранспорта (**)
 
| vehicles.col
 
| vehicles.col
 
|
 
|
| vehicles.col2
+
|
 
|-
 
|-
| коллизии оружия
+
| коллизии оружия (**)
 
| weapons.col
 
| weapons.col
 
|
 
|
| weapons.col2
+
|
 
|-
 
|-
| colspan="4" | <b>Модели</b>
+
| коллизии ко всем моделям из MasterWRLD, а так же к скриптовым объектам из GTA3XXX.IMG архива (**)
 +
| generic.col
 +
|
 +
|
 
|-
 
|-
| модель самолета
+
| коллизии всех остальных объектов в игре (**)
| air_vlo.dff
+
 
|
 
|
| air_vlo.mdl
+
|
 +
| содержат только ограничивающие коробку и сферу, всё остальное - в стиминг-COL2 из GTA3XXX.IMG
 
|-
 
|-
| модель стрелки
+
| colspan="4" | <b>Модели</b>
 +
|-
 +
| обруч (***)
 +
| race_ring.dff
 +
| VCS PS2: E02E3F
 +
|[[Изображение:Race ring.PNG|150px|обруч]]
 +
|-
 +
| стрелка (***)
 +
| Shape .dff
 +
| LCS PS2: 30643F
 +
VCS PS2: 28233F
 +
|[[Изображение:Dtz1.PNG|150px|стрелка]]
 +
|-
 +
| длинный цилиндр (***)
 +
| zonecyla.dff
 +
| VCS PS2: С4223F
 +
|[[Изображение:Zonecyla.PNG|150px|длинный цилиндр]]
 +
|-
 +
| шарик (***)
 +
| zoneaphr.dff
 +
| VCS PS2: E8B03E
 +
|[[Изображение:Zoneaphr.PNG|150px|шарик]]
 +
|-
 +
| конус входа (***)
 +
| entercone.dff
 +
| VCS PS2: A0B03E
 +
|[[Изображение:Entercone.PNG|150px|конус входа]]
 +
|-
 +
| цилиндр (***)
 +
| zonecylb.dff
 +
| LCS PS2: 64EA3F
 +
VCS PS2: 70AD3E
 +
|[[Изображение:Dtz2.PNG|150px|цилиндр]]
 +
|-
 +
| стрелка 2 (***)
 
| arrow.dff
 
| arrow.dff
|
+
| LCS PS2: 800643
| arrow.mdl
+
VCS PS2: 882938
 +
9C7D3E
 +
|[[Изображение:Dtz3.PNG|150px|стрелка LCS]]
 +
[[Изображение:Arrow.PNG|150px|стрелка VCS]]
 
|-
 
|-
| модель колес
+
| ЛОДы колес (***)
 
| wheels.dff
 
| wheels.dff
|
+
| LCS PS2: 800643
|
+
E8C249
 +
50C349
 +
B8C349
 +
ECC349
 +
88C449
 +
94EB49
 +
|[[Изображение:Dtz4.PNG|150px|ЛОДы колес]]
 
|-
 
|-
| модель маркера (зоны)
+
| колесо 1 (***)
| zonecylb.dff
+
| wheels.dff
|
+
| LCS PS2: 80С249
|
+
|[[Изображение:Dtz5.PNG|150px|колесо 1]]
 +
|-
 +
| колесо 2 (***)
 +
| wheels.dff
 +
| LCS PS2: B4C249
 +
|[[Изображение:Dtz6.PNG|150px|колесо 2]]
 +
|-
 +
| колесо 3 (***)
 +
| wheels.dff
 +
| LCS PS2: 1CC349
 +
|[[Изображение:Dtz7.PNG|150px|колесо 3]]
 +
|-
 +
| колесо 4 (***)
 +
| wheels.dff
 +
| LCS PS2: 84C349
 +
|[[Изображение:Dtz8.PNG|150px|колесо 4]]
 +
|-
 +
| колесо 5 (***)
 +
| wheels.dff
 +
| LCS PS2: 20C449
 +
|[[Изображение:Dtz9.PNG|150px|колесо 5]]
 +
|-
 +
| колесо 6 (***)
 +
| wheels.dff
 +
| LCS PS2: 54C449
 +
|[[Изображение:Dtz10.PNG|150px|колесо 6]]
 +
|-
 +
| LOD самолета (***)
 +
| air_vlo.dff
 +
| LCS PS2: 2CEB49
 +
|[[Изображение:Dtz11.PNG|150px|крылатый карандаш]]
 +
|-
 +
| колесо 7 (***)
 +
| wheels.dff
 +
| LCS PS2: 60EB49
 +
|[[Изображение:Dtz6.PNG|150px|колесо 7]]
 
|-  
 
|-  
 
| colspan="4" | <b>IDE / IPL / DAT</b>
 
| colspan="4" | <b>IDE / IPL / DAT</b>
 
|-
 
|-
| [[IDE]]
+
| аналог [[IDE]] (**)
 
| *.ide
 
| *.ide
 
|
 
|
| содержит все имена моделей и текстур
+
| содержит все данные инициализации моделей, текстур и коллизий
 
|-
 
|-
| [[IPL]]
+
| аналог [[IPL]] (**)
 
| *.ipl
 
| *.ipl
 
|
 
|
| содержит все координаты для расстановки коллизий в игре
+
| содержит все координаты для расстановки коллизий и генерика в игре
 
|-
 
|-
| цвета автомобилей
+
| цвета автомобилей (**)
 
| carcols.dat
 
| carcols.dat
 
|
 
|
 
|
 
|
 +
|-
 +
| цвета пешеходов (**)
 +
| pedcols.dat
 +
|
 +
| только в [[GTA VCS]]
 
|-
 
|-
 
| cullzone data
 
| cullzone data
Строка 161: Строка 313:
 
|
 
|
 
|-
 
|-
| handling data
+
| handling data (**)
 
| handling.dat
 
| handling.dat
 
| LCS PS2: <code>0x1647A0</code>
 
| LCS PS2: <code>0x1647A0</code>
Строка 213: Строка 365:
  
 
<code>0x3B1F10</code>
 
<code>0x3B1F10</code>
| характеристики пешеходов, в PS2-версиях разделены на части
+
| характеристики пешеходов
  
 
LCS PS2:
 
LCS PS2:
Строка 262: Строка 414:
 
|}
 
|}
 
<b>Внимание!</b><br />
 
<b>Внимание!</b><br />
* Оффсет указан для распакованного game.dtz.  
+
* Оффсеты указаны для распакованного game.dtz.
* * - Данные, помеченные (*) открываются при помощи [[GTA Stories Texture Explorer]].
+
* Данные, помеченные (*) открываются при помощи [[GTA Stories Texture Explorer]].
 +
* Данные, помеченные (**) просматриваются при помощи [[Stories WRLD Tool]].
 +
* Данные, помеченные (***) импортируются в 3D MAX при помощи [[MDL importer]].
  
 
== Структуры ==
 
== Структуры ==
Строка 269: Строка 423:
 
Ниже представлены некоторые структуры описанных выше данных.
 
Ниже представлены некоторые структуры описанных выше данных.
  
 +
=== IDE ===
 +
 +
IDE в DTZ представлена в виде глобальной бинарной таблицы, имеющей данные для всех моделей в игре, будь то автомобили, пешеходы или простые объекты.
 +
 +
Количество IDE и смещение на таблицу IDE можно узнать в DTZ по смещениям 0x38 и 0x3C для всех консольных игр.
 +
Таблица IDE представляет собой указатели на бинарные строки IDE, ID модели присваивается по счетчику указателей от 0 до кол-ва IDE. Если указатель равен 0 - значит данный ID свободен.
 +
 +
==== Структура бинарной строки IDE ====
 +
 +
Каждая бинарная строка IDE имеет глобальные данные и побочные, зависящие от типа загружаемой IDE.
 +
 +
Глобальные данные занимают 44 байт и имеют структуру:
 +
 +
  4b - Свободное место для размещения указателя в памяти.
 +
  4b - Свободное место для размещения указателя в памяти.
 +
  4b - имя IDE/модели, хешированное по CRC32 алгоритму.
 +
  4b - Свободное место для размещения указателя в памяти.
 +
  1b - тип IDE, определяет какие побочные данные нужно загружать после глобальных данных.
 +
  1b - кол-во 2dfx.
 +
  2b - unknown.
 +
  4b - смещение на коллизию модели.
 +
  2b - 2dfx ID
 +
  2b - unknown (0xFFFF)
 +
  2b - unknown (обычно нули).
 +
  2b - номер наименования текстурного файла в таблице TexList.
 +
  4b - хеш типа секции.
 +
  4b - unknown (обычно нули).
 +
  4b - Дистанция прорисовки (у автомобилей и пешеходов = 0xFFFFFFFF).
 +
 +
Побочные данные:
 +
 +
Секция типа 1 (objs)
 +
 +
Секция типа 3 (tobj)
 +
 +
Секция типа 6 (cars)
 +
 +
 +
  1b - текущий ID primary цвета машины (в памяти) в файле всегда = 0
 +
  1b - текущий ID secondary цвета машины (в памяти) в файле всегда = 0
 +
  14b - имя авто в GXT
 +
  4b - размер колеса
 +
  2b - ID модели колеса
 +
  2b - номер строки в бинарной HANDLING.CFG
 +
  1b - Количество дверей
 +
  1b - Class (-1 - ignore, 0 - normal, 1 - poorfamily, 2 - richfamily, 3 - executive, 4 - worker, 5 - big, 6 - taxi, 7 - moped, 8 - motorbike, 9 - leisureboat, 10 - workerboat)
 +
  1b - Level
 +
  1b - unknown
 +
  4b - Frequency
 +
  4b - unknown (обычно нули).
 +
  16b - (3x float single + 4b выравнивание) - позиция headlights
 +
  16b - (3x float single + 4b выравнивание) - позиция taillights
 +
  16b - (3x float single + 4b выравнивание) - позиция ped_frontseat
 +
  16b - (3x float single + 4b выравнивание) - позиция ped_backseat       
 +
  16b - (3x float single + 4b выравнивание) - позиция exhaust
 +
  4b - CompRules
 +
  4b - unknown (0x4479FF5C) возможно идентификатор секции указателей перекраски авто.
 +
  100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных primary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет).
 +
  100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных secondary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет).
 +
  8b - массив ID primary цветов из палитры carcols.dat
 +
  8b - массив ID secondary цветов из палитры carcols.dat
 +
  1b - общее кол-во используемых цветов.
 +
  1b - индекс цветовой схемы машины из массивов цветов (в памяти постоянно рандомизируется от 0 до кол-ва цветов) в файле всегда = 0
 +
  1b - текущий ID primary цвета машины (в памяти) в файле всегда = -1
 +
  1b - текущий ID secondary цвета машины (в памяти) в файле всегда = -1
 +
  4b - amount the normals are splayed by to improve the environment mapping on PSP
 +
  4b - unknown
 +
  4b - Anims ID (van, bikeh ,bikev и т.д.; -1 = null)
 +
 +
Секция типа 7 (peds)
 +
 +
=== cull.ipl ===
 +
 +
Строка занимает 16 байт и выглядит следующим образом:
 +
(Координаты содержат реальные округленные значения)
 +
 +
  2b: Box Lower X Coord
 +
  2b: Box Upper X Coord
 +
  2b: Box Lower Y Coord
 +
  2b: Box Upper Y Coord
 +
  2b: Box Lower Z Coord
 +
  2b: Box Upper Z Coord
 +
  2b: Flag 1
 +
  2b: Flag 2
 +
 +
=== ped.dat ===
 +
 +
  4b dword: MaskID
 +
  4b float: Walkspeed*
 +
  4b float: Runspeed*
 +
  4b float: Fastrunspeed*
 +
  4b float: Flee Distance
 +
  4b float: Heading Change
 +
  4b dword: Threats Mask
 +
  4b dword: Avoid Mask
 +
   
 +
  * умножить на 50
 +
 
=== weapons data ===
 
=== weapons data ===
  
Ананалог weapons.dat, знакомого по предыдущим частям серии видеоигр.
+
Состоит из двух CWeaponModelInfo. Чтение происходит напрямую из заголовка DaTa Zlib.
  
 
==== Структура версии LCS ====
 
==== Структура версии LCS ====
  
Общее число записей: 38
+
===== Заголовок =====
  
 +
<source lang="cpp">typedef struct Weapon_lcs_header
 +
{
 +
    offset        CWeaponModelInfo1;
 +
    offset        CWeaponModelInfo2;
 +
};</source>
 +
 +
===== данные weapons =====
 +
 +
Общее число записей: 38
  
 
<source lang="cpp">
 
<source lang="cpp">
Строка 366: Строка 627:
 
==== Структура версии LCS ====
 
==== Структура версии LCS ====
  
Общее число записей: 42.
+
===== Заголовок =====
  
На PS2 разделены на три фрагмента: 15+18+9
+
Размер массива адресов: 42. Чтение происходит напрямую из заголовка DaTa Zlib.
 +
<source lang="cpp">typedef struct pedstat_lcs_header
 +
{
 +
    offset        Pedstat_offset; 
 +
};</source>
 +
 
 +
===== данные pedstats =====
 +
 
 +
На PS2 разделены на три фрагмента: 15+18+9=42.
 +
Общее число записей: 42.
  
 
<source lang="cpp">typedef struct pedstat_lcs{
 
<source lang="cpp">typedef struct pedstat_lcs{
Строка 411: Строка 681:
  
 
==== Структура версии LCS ====
 
==== Структура версии LCS ====
 +
 +
===== Заголовок =====
 +
 +
Чтение происходит напрямую из заголовка DaTa Zlib.
 +
<source lang="cpp">typedef struct lcs_handling_header
 +
  {
 +
    float      unknow;
 +
    float      unknow;
 +
    float      unknow;
 +
    float      unknow;
 +
    float      unknow;
 +
    float      null;
 +
    float      null;
 +
    float      null;
 +
  };
 +
</source>
 +
 +
===== данные handling =====
  
 
Общее число записей: 81.
 
Общее число записей: 81.
Строка 416: Строка 704:
 
<source lang="cpp">typedef struct lcs_handling_item
 
<source lang="cpp">typedef struct lcs_handling_item
 
   {
 
   {
     float      fMass;
+
     float      fMass;             //B
     float      fTurnMass;
+
     float      fTurnMass;         //C
     float      fTractionMultiplier;
+
     float      fTractionMultiplier;//J
     float      _fC;
+
     float      fCollisionDamageMultiplier; (fCollisionDamageMultiplier = (fMass/2000.0)*fCollisionDamageMultiplier) //ab
     DWORD      dwId;
+
     DWORD      CarId;
     float      _f14;
+
     float      1/fMass;
     float      fDragMult;
+
     float      fDragMult;         //D
     float      _f1C;
+
     float      _f1C;               //null
     float      CentreOfMassX;
+
     float      CentreOfMassX;     //F
     float      CentreOfMassY;
+
     float      CentreOfMassY;     //G
     float      CentreOfMassZ;
+
     float      CentreOfMassZ;     //H
     float      _f2C;
+
     float      _f2C;               //null
     int        nPercentSubmerged
+
     int        nPercentSubmerged   //I
     float      _f34;
+
     float      (fMass*0.8)/nPercentSubmerged;
     float      _f38;
+
     float      _f38; //дублирует значение _f94 //выставляет движок
     float      _f3C;
+
     float      _f3C; //0xBC23D70A //выставляет движок
     float      _f40;
+
     float      _f40; //дублирует значение _f94 //выставляет движок
     float      _f44;
+
     float      _f44; //Unknown, transmission gear 1 related
     float      _f48;
+
     float      _f48; //Unknown, transmission gear 1 related
     float      _f4C;
+
     float      _f4C; //0xBC23D70A //выставляет движок
     float      _f50;
+
     float      _f50; //Unknown, transmission gear 2 related
     float      _f54;
+
     float      _f54; //Unknown, transmission gear 2 related
     float      _f58;
+
     float      _f58; //Unknown, transmission gear 2 related
     float      _f5C;
+
     float      _f5C; //Unknown, transmission gear 3 related
     float      _f60;
+
     float      _f60; //Unknown, transmission gear 3 related
     float      _f64;
+
     float      _f64; //Unknown, transmission gear 3 related
     float      _f68;
+
     float      _f68; //Unknown, transmission gear 4 related
     float      _f6C;
+
     float      _f6C; //Unknown, transmission gear 4 related
     float      _f70;
+
     float      _f70; //Unknown, transmission gear 4 related
     float      _f74;
+
     float      _f74; //Unknown, transmission gear 5 related
     float      _f78;
+
     float      _f78; //Unknown, transmission gear 5 related
     float      _f7C;
+
     float      _f7C; //Unknown, transmission gear 5 related
     char        cDriveType_TransmissionData;
+
     char        cDriveType_TransmissionData;   //Q
     char        cEngineType_TransmissionData;
+
     char        cEngineType_TransmissionData;   //R
     byte        nNumberOfGears_TransmissionData;
+
     byte        nNumberOfGears_TransmissionData;//M
     byte        _f83; //bABS?
+
     byte        padding;                           //null
     float      _f84;
+
     float      fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*2500*5(*2 for 4wd)  //O                         
     float      fEngineInertia;
+
     float      fEngineInertia;                 //P
     float      _f8C;
+
     float      fMaxVelocity; fMaxVelocity=fMaxVelocity*180.0
     float      _f90;
+
     float      fMaxVelocity/1.2;
     float      _f94;
+
     float      _f94 //=-0.2 для всего транспорта, -0.05 для байков; //выставляет движок
 
     float      _f98;
 
     float      _f98;
     float      _f9C;
+
     float      fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500; //S
     float      fBrakeBias;
+
     float      fBrakeBias;                     //T
     float      _fA4;
+
     float      bABS;                           //U
     float      fSteeringLock;
+
     float      fSteeringLock;                 //V
     float      fTractionLoss;
+
     float      fTractionLoss;                 //K
     float      fTractionBias;
+
     float      fTractionBias;                 //L
     float      _fB4; //fSuspensionHighSpdComDamp? (всегда ноль)
+
     float      _fB4;                           //null
     float      fSuspensionForceLevel;
+
     float      fSuspensionForceLevel;         //a
     float      fSuspensionDampingLevel;
+
     float      fSuspensionDampingLevel;       //b
     float      fSuspensionUpperLimit;
+
     float      fSuspensionUpperLimit;         //d
     float      fSuspensionLowerLimit;
+
     float      fSuspensionLowerLimit;         //e
     float      fSuspensionBias;
+
     float      fSuspensionBias;               //f
     float      fSuspensionAntiDive;
+
     float      fSuspensionAntiDive;           //g
     DWORD      dwflags <format=hex>;
+
     DWORD      dwflags <format=hex>;           //ag
     float      fSeatOffsetDistance;
+
     float      fSeatOffsetDistance;           //aa
     DWORD      dwMonetaryValue;
+
     DWORD      dwMonetaryValue;               //ac
     byte        bFrontLights;   //(0 = long, 1 = small, 2 = big, 3 = tall)
+
     byte        bFrontLights;                   //ah
     byte        bRearLights;   //(0 = long, 1 = small, 2 = big, 3 = tall)
+
     byte        bRearLights;                   //ai
 
     byte        padding[18];
 
     byte        padding[18];
 
   };
 
   };
 
</source>
 
</source>
 +
 +
Текстовую версию, декомпилированную с помощью [[Stories WRLD Tool]], можно [http://gtamodding.ru/w/images/1/12/Handling.rar cкачать] из архива gtamodding.ru.
  
 
==== Структура версии VCS ====
 
==== Структура версии VCS ====
  
{{Заготовка}}
+
<source lang="html4strict">
 +
 
 +
0x0  4b float ?      =-0.2 for cars and -0.05 for bikes (set by engine)
 +
0x4  4b float ?      = 0xBC23D70A (set by engine)
 +
0x8  4b float ?      =-0.2 for cars and -0.05 for bikes (set by engine)
 +
0xC  4b float ?      Unknown, Gear 1 ratio
 +
0x10 4b float ?      Unknown, Gear 1 ratio
 +
0x14 4b float ?      = 0xBC23D70A (set by engine)
 +
0x18 4b float ?      Unknown, Gear 2 ratio
 +
0x1C 4b float ?      Unknown, Gear 2 ratio
 +
0x20 4b float ?      Unknown, Gear 2 ratio
 +
0x24 4b float ?      Unknown, Gear 3 ratio
 +
0x28 4b float ?      Unknown, Gear 3 ratio
 +
0x2C 4b float ?      Unknown, Gear 3 ratio
 +
0x30 4b float ?      Unknown, Gear 4 ratio
 +
0x34 4b float ?      Unknown, Gear 4 ratio
 +
0x38 4b float ?      Unknown, Gear 4 ratio
 +
0x3C 4b float ?      Unknown, Gear 5 ratio
 +
0x40 4b float ?      Unknown, Gear 5 ratio
 +
0x44 4b float ?      Unknown, Gear 5 ratio
 +
0x48 4b float N      fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*12500(*2 for 4wd vehicles)
 +
0x4C 4b float P TransmissionData.fEngineInertia
 +
0x50 4b float ?      Unknown, seems to be max gear ratio (all gear ratios are calculated using this value and number of gears)
 +
0x54 4b float ?      value above /1.2
 +
0x58 4b float ?      =-0.2 for cars and -0.05 for bikes (set by engine)
 +
0x5C 1b char Q TransmissionData.nDriveType
 +
0x5D 1b char R TransmissionData.nEngineType
 +
0x5E 1b int M TransmissionData.nNumberOfGears
 +
0x5F 1b - - Padding
 +
0x60 4b float R      fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500
 +
0x64 4b float T fBrakeBias
 +
0x68 4b float V fSteeringLock
 +
0x6C 4b float K fTractionLoss
 +
0x70 4b float L fTractionBias
 +
0x74 4b float a fSuspensionForceLevel
 +
0x78 4b float b fSuspensionDampingLevel
 +
0x7C 4b float d suspension upper limit
 +
0x80 4b float e suspension lower limit
 +
0x84 4b float f suspension bias between front and rear
 +
0x88 4b float g suspension anti-dive multiplier
 +
0x8C 4b float aa fSeatOffsetDistance
 +
0x90 4b int ac nMonetaryValue
 +
0x94 1b int ah front lights
 +
0x95 1b int ai rear lights
 +
0x96 2b - Padding
 +
0x98 4b float D fDragMult
 +
0x9C 4b  - Padding (maybe...)
 +
0xA0 4b float F CentreOfMass.x
 +
0xA4 4b float G CentreOfMass.y
 +
0xA8 4b float H CentreOfMass.z
 +
0xAC 4b -              padding
 +
0xB0 4b int I nPercentSubmerged
 +
0xB4 4b float ?      = fMass*0.8/nPercentSubmerged
 +
0xB8 4b float N TransmissionData.fMaxVelocity
 +
0xBC 4b float B fMass
 +
0xC0 4b float C fTurnMass
 +
0xC4 4b float J fTractionMultiplier
 +
0xC8 4b float Y      fCollisionDamageMultiplier; fCollisionDamageMultiplier=fMass/2000*fCollisionDamageMultiplier
 +
0xCC 4b int ag handlingFlags
 +
0xD0 4b int af modelFlags
 +
0xD4 12b - Padding
 +
 
 +
 
 +
</source>
  
 
=== particle data ===
 
=== particle data ===
Строка 488: Строка 841:
 
==== Структура версии LCS ====
 
==== Структура версии LCS ====
  
Общее число записей: 82.
+
Общее число записей: 82. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.
 
<source lang="cpp">typedef struct particle
 
<source lang="cpp">typedef struct particle
 
   {
 
   {
Строка 540: Строка 893:
  
 
{{Заготовка}}
 
{{Заготовка}}
 +
 +
=== carcols data ===
 +
 +
==== Структура версии LCS ====
 +
 +
===== Секция col =====
 +
 +
Общее число записей: 1. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.
 +
 +
Размер массива данных: 102. Лимит: 256 (кушает в памяти 1024 байт)
 +
<source lang="cpp">typedef struct colors
 +
  {
 +
  byte Red; //Kрасный цвет;
 +
  byte Grey; //Зелёный цвет;
 +
  byte Blue; //Синий цвет;
 +
  byte Alpha; //Альфа канал цвета;
 +
};</source>
 +
 +
===== Секция car =====
 +
 +
Общее число записей: равно количеству автотранспорта в игре. Является частью структуры [[IDE]] секции cars.
 +
 +
Размер массивов данных: 8. Если количество расцветок авто меньше 8, то пустые значения заполнены нулями.
 +
<source lang="cpp">typedef struct carcolors1
 +
  {
 +
  byte ColorID1; //Номер первого цвета;
 +
};</source>
 +
 +
<source lang="cpp">typedef struct carcolors2
 +
  {
 +
  byte ColorID2; //Номер второго цвета;
 +
};</source>
 +
 +
==== Структура версии VCS ====
 +
 +
{{Заготовка}}
 +
 +
Текстовую версию, декомпилированную с помощью [[Stories WRLD Tool]], можно [http://gtamodding.ru/w/images/8/88/Vcscols.rar cкачать] из архива gtamodding.ru.
  
 
{{GTA_Stories-navi}}
 
{{GTA_Stories-navi}}
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]

Текущая версия на 21:31, 22 марта 2018

*.dtz - дамп памяти консоли, содержащий основные игровые ресурсы GTA LCS и GTA VCS. Файл GAME.dtz упакован при помощи алгоритма сжатия deflate/zlib.

Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов (в основном это бинарные аналоги текстовых файлов в папке data и моделей с текстурными архивами в папке models из GTA VC).

Содержание

Заголовок

Версия GTA LCS

В приведенной ниже таблице дана расшифровка заголовка DTZ:

 0x0 [4b FourCC] - Сигнатура DTZ, читается как GTAG.
 0x4 [4b int] - неизвестно, обычно = 1.
 0x8 [4b int] - размер DTZ.
 0xC [4b int] - размер данных без учёта таблиц для перераспределения файла в памяти.
 0x10 [4b int] - таблица смещений для перераспределения указателей в памяти (Reallocation Table).
 0x14 [4b int] - количество смещений в Reallocation Table.
 0x18 [4b int] - ссылается на таблицу смещений на хеши jenkins, которые заменяются на указатели на таблицы виртуальных методов (vmt).
 0x1C [2b short] - количество хешей jenkins в 1 секции таблицы.
 0x1E [2b short] - количество хешей jenkins во 2 секции таблицы (методы рендера в Atomic моделей).
 0x20 [4b int] - gpThePaths (пути).
 0x24 [4b int] - CPools::ms_pBuildingPool (смещение на данные, относящиеся к размещению статичных обьектов (Buildings IPL)).
 0x28 [4b int] - смещение на данные, относящиеся к размещению дорог (Treadable IPL).
 0x2C [4b int] - смещение на данные, относящиеся к размещению динамических объектов (Dummy IPL).
 0x30 [4b int] - EntryInfoNodes (связана со стримингом динамических объектов карты).
 0x34 [4b int] - PtrNodes (связвна со стримингом карты, ссылается на IPL из секций Buildings, Treadables, Dummys).
 0x38 [4b int] - количество IDE.
 0x3C [4b int] - таблица смещений на бинарные IDE (ID присваивается по счетчику смещений от 0 до количества IDE).
 0x40 [4b int] - таблица классов авто (normal, poorfamily...), 11 классов с возможностью указания 25 IDE ID авто для класса.
 0x44 [4b int] - количество ID авто в каждом классе вышеуказанной таблицы.
 0x48 [4b int] - смещение на данные игровых зон (info.zon, navig.zon).
 0x4C [4b int] - CWorld::ms_aSectors Данные игровых секторов, ссылается на PtrNode
 0x50 [4b int] - CWorld::ms_bigBuildingsList 4 указателя на PtrNode
 0x54 [4b int] - количество строк в таблице 2dfx.
 0x58 [4b int] - смещение на таблицу 2dfx эффектов для объектов из default.ide (строка 64 байт).
 0x5С [4b int] - смещение на массив hardcoded индексов моделей.
 0x60 [4b int] - смещение на блок загрузки текстурных архивов CHK (TexList).
 0x64 [4b int] - неизвестно, равно 0.
 0x68 [4b int] - смещение на блок загрузки COL2 файлов.
 0x6C [4b int] - неизвестно, равно 0.
 0x70 [4b int] - смещение на коллизию-пустышку.
 0x74 [4b int] - смещение на аналог object.dat (строка 32 байта, 117 шт.).
 0x78 [4b int] - смещение на палитру RGBA цветов, используемых в carcols.dat, 256 цветов.
 0x7C [4b int] - CStreamingInfo CStreaming::ms_aInfoForModel[] (аналог GTA3PS*HR.DIR).
 0x80 [4b int] - смещение на блок загрузки ANIM файлов и анимаций (ped.ifp).
 0x84 [4b int] - fistfite.dat
 0x88 [4b int] - PedAnimInfo[]
 0x8C [4b int] - аналог ped.dat.
 0x90 [4b int] - аналог pedstats.dat.
 0x94 [4b int] - количество строк в cull.ipl.
 0x98 [4b int] - смещение на аналог cull.ipl (строка 16 байт).
 0x9C [4b int] - относится к окклюзиям (не используется, равно 0).
 0xA0 [4b int] - относится к окклюзиям (не используется, равно 0).
 0xA4 [4b int] - смещение на аналог waterpro.dat.
 0xA8 [4b int] - смещение на аналог HANDLING.CFG.
 0xAC [4b int] - смещение на аналог surface.dat.
 0xB0 [4b int] - смещение на аналог timecyc.dat.
 0xB4 [4b int] - смещение на аналог pedgrp.dat.
 0xB8 [4b int] - смещение на аналог particle.cfg.
 0xBC [4b int] - смещение на аналог weapon.dat.    
 0xC0 [4b int] - таблица смещений на клампы встроенных в DTZ MDL файлов.
 0xC4 [4b int] - смещение на аналог CUTS.DIR.
 0xC8 [4b int] - смещение на аналог ferry.dat (пути для парома).
 0xCС [4b int] - смещение на аналоги tracks.dat и tracks2.dat.
 0xD0 [4b int] - смещение на аналог flight.dat.
 0xD4 [4b int] - смещение на menu.chk (сжат Deflate/ZLib алгоритмом).
 0xD8 [4b int] - размер fonts.chk (реальный).
 0xDС [4b int] - смещение на fonts.chk (сжат Deflate/ZLib алгоритмом).

Краткое описание содержимого

В текущий момент известно, что в GAME.dtz содержатся следующие данные:

Описание Аналогия из предыдущих частей серии Оффсет на ресурс Комментарии
Текстуры
текстуры меню frontend.txd LCS PS2: 0x4E4A30

LCS PSP: 0x4DA830

VCS PS2: 0x581330

VCS PSP: 0x51D95C

директория с текстурами меню, запакована deflate/zlib алгоритмом (*)
текстуры шрифтов (fonts.chk) fonts.txd LCS PS2: 0x4EF4D8

LCS PSP: 0x4E2B1C

VCS PS2: 0x57BE4C

VCS PSP: 0x530AFC

директория с текстурами шрифтов, запакована deflate/zlib алгоритмом (*)
текстуры particle-эффектов particle.txd LCS PS2: 0x4A1C28

LCS PSP: 0x38AB90

VCS PS2: 0x761F0

VCS PSP: 0x3F7FB0

содержит все текстуры particle-эффектов (*)
generic-текстуры generic.txd, wheels.txd, vehicle.txd LCS PS2: 0x4A1BFC

LCS PSP: 0x392B04

VCS PS2: 0x539E0

VCS PSP: 0x3D60B4

содержит общие текстуры для автотранспорта и все текстуры колес (*)
значки радара hud.txd LCS PS2: 0x4A1BE4

LCS PSP: 0x38AD30

VCS PS2: 0x287B0

VCS PSP: 0x3B4678

содержит текстуры для hud-а (*)
текстуры радара radarNN.txd - только в GTA VCS, запакованы deflate/zlib алгоритмом
Анимация
 ? ped.ifp
 ? swim.ifp только в GTA VCS
 ? fight.ifp только в GTA VCS
 ? driveby.ifp только в GTA VCS
Коллизия
коллизии пешеходов (**) peds.col одна за всех :)
коллизии автотранспорта (**) vehicles.col
коллизии оружия (**) weapons.col
коллизии ко всем моделям из MasterWRLD, а так же к скриптовым объектам из GTA3XXX.IMG архива (**) generic.col
коллизии всех остальных объектов в игре (**) содержат только ограничивающие коробку и сферу, всё остальное - в стиминг-COL2 из GTA3XXX.IMG
Модели
обруч (***) race_ring.dff VCS PS2: E02E3F обруч
стрелка (***) Shape .dff LCS PS2: 30643F

VCS PS2: 28233F

стрелка
длинный цилиндр (***) zonecyla.dff VCS PS2: С4223F длинный цилиндр
шарик (***) zoneaphr.dff VCS PS2: E8B03E шарик
конус входа (***) entercone.dff VCS PS2: A0B03E конус входа
цилиндр (***) zonecylb.dff LCS PS2: 64EA3F

VCS PS2: 70AD3E

цилиндр
стрелка 2 (***) arrow.dff LCS PS2: 800643

VCS PS2: 882938 9C7D3E

стрелка LCS

стрелка VCS

ЛОДы колес (***) wheels.dff LCS PS2: 800643

E8C249 50C349 B8C349 ECC349 88C449 94EB49

ЛОДы колес
колесо 1 (***) wheels.dff LCS PS2: 80С249 колесо 1
колесо 2 (***) wheels.dff LCS PS2: B4C249 колесо 2
колесо 3 (***) wheels.dff LCS PS2: 1CC349 колесо 3
колесо 4 (***) wheels.dff LCS PS2: 84C349 колесо 4
колесо 5 (***) wheels.dff LCS PS2: 20C449 колесо 5
колесо 6 (***) wheels.dff LCS PS2: 54C449 колесо 6
LOD самолета (***) air_vlo.dff LCS PS2: 2CEB49 крылатый карандаш
колесо 7 (***) wheels.dff LCS PS2: 60EB49 колесо 7
IDE / IPL / DAT
аналог IDE (**) *.ide содержит все данные инициализации моделей, текстур и коллизий
аналог IPL (**) *.ipl содержит все координаты для расстановки коллизий и генерика в игре
цвета автомобилей (**) carcols.dat
цвета пешеходов (**) pedcols.dat только в GTA VCS
cullzone data cullzone.dat
fistfite data fistfite.dat
handling data (**) handling.dat LCS PS2: 0x1647A0

LCS PSP: 0x50190

VCS PS2: 0x4C2A10

VCS PSP: 0x3AF30F

в LCS и VCS структуры отличаются
info.zon
map.zon
object data object.dat
particle data particle.cfg LCS PS2: 0x3917D0 характеристики спецэффектов
pedstats data pedstats.dat LCS PS2:

часть 1 - 0x49E820

часть 2 - 0x49EB78

часть 3 - 0x4A1A10

LCS PSP:

0x391DA0

VCS PS2:

часть 1 - 0x4C8080

часть 2 - 0x4C8428

VCS PSP:

0x3B1F10

характеристики пешеходов

LCS PS2:

часть 1 - 15 items

часть 2 - 18 items

часть 3 - 9 items

LCS PSP:

42 items

VCS PS2:

часть 1 - 6 items

часть 2 - 36 items

VCS PSP:

42 items

timecyc data timecyc.dat характеристики погоды
waterpro data waterpro.dat данные водных поверхностей
weapon data weapon.dat LCS PS2:
0x40A980
0x44FAE0

VCS PS2:
0x3D7530
VCS PSP:
0x2E8B60

Разное
SDT-файлы. LCS:
0x377720
только в PSP-версиях

Внимание!

  • Оффсеты указаны для распакованного game.dtz.
  • Данные, помеченные (*) открываются при помощи GTA Stories Texture Explorer.
  • Данные, помеченные (**) просматриваются при помощи Stories WRLD Tool.
  • Данные, помеченные (***) импортируются в 3D MAX при помощи MDL importer.

Структуры

Ниже представлены некоторые структуры описанных выше данных.

IDE

IDE в DTZ представлена в виде глобальной бинарной таблицы, имеющей данные для всех моделей в игре, будь то автомобили, пешеходы или простые объекты.

Количество IDE и смещение на таблицу IDE можно узнать в DTZ по смещениям 0x38 и 0x3C для всех консольных игр. Таблица IDE представляет собой указатели на бинарные строки IDE, ID модели присваивается по счетчику указателей от 0 до кол-ва IDE. Если указатель равен 0 - значит данный ID свободен.

Структура бинарной строки IDE

Каждая бинарная строка IDE имеет глобальные данные и побочные, зависящие от типа загружаемой IDE.

Глобальные данные занимают 44 байт и имеют структуру:

  4b - Свободное место для размещения указателя в памяти.
  4b - Свободное место для размещения указателя в памяти.
  4b - имя IDE/модели, хешированное по CRC32 алгоритму.
  4b - Свободное место для размещения указателя в памяти.
  1b - тип IDE, определяет какие побочные данные нужно загружать после глобальных данных.
  1b - кол-во 2dfx.
  2b - unknown.
  4b - смещение на коллизию модели.
  2b - 2dfx ID
  2b - unknown (0xFFFF)
  2b - unknown (обычно нули).
  2b - номер наименования текстурного файла в таблице TexList.
  4b - хеш типа секции.
  4b - unknown (обычно нули).
  4b - Дистанция прорисовки (у автомобилей и пешеходов = 0xFFFFFFFF).

Побочные данные:

Секция типа 1 (objs)

Секция типа 3 (tobj)

Секция типа 6 (cars)


  1b - текущий ID primary цвета машины (в памяти) в файле всегда = 0
  1b - текущий ID secondary цвета машины (в памяти) в файле всегда = 0
  14b - имя авто в GXT
  4b - размер колеса
  2b - ID модели колеса
  2b - номер строки в бинарной HANDLING.CFG
  1b - Количество дверей
  1b - Class (-1 - ignore, 0 - normal, 1 - poorfamily, 2 - richfamily, 3 - executive, 4 - worker, 5 - big, 6 - taxi, 7 - moped, 8 - motorbike, 9 - leisureboat, 10 - workerboat)
  1b - Level
  1b - unknown
  4b - Frequency
  4b - unknown (обычно нули).
  16b - (3x float single + 4b выравнивание) - позиция headlights
  16b - (3x float single + 4b выравнивание) - позиция taillights
  16b - (3x float single + 4b выравнивание) - позиция ped_frontseat
  16b - (3x float single + 4b выравнивание) - позиция ped_backseat        
  16b - (3x float single + 4b выравнивание) - позиция exhaust
  4b - CompRules
  4b - unknown (0x4479FF5C) возможно идентификатор секции указателей перекраски авто.
  100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных primary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет).
  100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных secondary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет).
  8b - массив ID primary цветов из палитры carcols.dat
  8b - массив ID secondary цветов из палитры carcols.dat
  1b - общее кол-во используемых цветов.
  1b - индекс цветовой схемы машины из массивов цветов (в памяти постоянно рандомизируется от 0 до кол-ва цветов) в файле всегда = 0
  1b - текущий ID primary цвета машины (в памяти) в файле всегда = -1
  1b - текущий ID secondary цвета машины (в памяти) в файле всегда = -1
  4b - amount the normals are splayed by to improve the environment mapping on PSP
  4b - unknown
  4b - Anims ID (van, bikeh ,bikev и т.д.; -1 = null)

Секция типа 7 (peds)

cull.ipl

Строка занимает 16 байт и выглядит следующим образом: (Координаты содержат реальные округленные значения)

  2b: Box Lower X Coord
  2b: Box Upper X Coord
  2b: Box Lower Y Coord
  2b: Box Upper Y Coord
  2b: Box Lower Z Coord
  2b: Box Upper Z Coord
  2b: Flag 1
  2b: Flag 2

ped.dat

  4b dword: MaskID
  4b float: Walkspeed*
  4b float: Runspeed*
  4b float: Fastrunspeed*
  4b float: Flee Distance
  4b float: Heading Change
  4b dword: Threats Mask
  4b dword: Avoid Mask 
    
  * умножить на 50

weapons data

Состоит из двух CWeaponModelInfo. Чтение происходит напрямую из заголовка DaTa Zlib.

Структура версии LCS

Заголовок
typedef struct Weapon_lcs_header
{
    offset         CWeaponModelInfo1;
    offset         CWeaponModelInfo2;
};
данные weapons

Общее число записей: 38

typedef struct vFireOffset{
    float       x;
    float       y;  
    float       z;        
};
 
typedef struct vTimeStrc{
    float       a;
    float       b;  
    float       c;        
};
 
typedef struct weapondata{
    int		iFireType;
    float	fRange;
    int		iFiringRate;
    int		iReload;
    int		iAmountOfAmmunition;
    int		iDamage;
    float	fSpeed;
    float	fRadius;
    float	fLifeSpan;
    float	fSpread;
    DWORD	dwPadding1;
    DWORD	dwPadding2;
    vFireOffset	FireOffset;
    DWORD	dwZero;
    DWORD	dwAnim_id;
    vTimeStrc	time1;
    vTimeStrc	time2;
    float	unk;
    DWORD	dwModelID;
    DWORD	dwModelID2;
    DWORD	dwweapon_slot;
    DWORD	dwFlags <format=hex>;
};

Структура версии VCS

Общее число записей: 40

typedef struct vFireOffset{
    float       x;
    float       y;  
    float       z;        
};
 
typedef struct vTimeStrc{
    float       a;
    float       b;  
    float       c;        
};
 
typedef struct weapondata{
    DWORD       dwType; 
    int         iFireType;
    float       fRange;
    int         iFiringRate;
    int         iReload;
    int         iAmountOfAmmunition;
    int         iDamage;
    float       fSpeed;
    float       fRadius;
    float       fLifeSpan;
    float       fSpread;
    DWORD       dwPadding;   //padding (0xAA)
    vFireOffset m_vFireOffset;  //вектор   
    DWORD       _f3C;   //всегда нуль
    DWORD       _f40;   //целочисленное значение
    DWORD       _f44;   //DWORD ? unknown
    vTimeStrc	m_vTimeStrc;
    vTimeStrc	m_vTimeStrc;
    float	unk;
    DWORD       dwModelID; 
    DWORD       dwModel2ID;
    DWORD       dwWeaponSlot
    DWORD       _f6C;   //padding (0xAA)      
};


pedstats data

Структура версии LCS

Заголовок

Размер массива адресов: 42. Чтение происходит напрямую из заголовка DaTa Zlib.

typedef struct pedstat_lcs_header
{
    offset         Pedstat_offset;   
};
данные pedstats

На PS2 разделены на три фрагмента: 15+18+9=42. Общее число записей: 42.

typedef struct pedstat_lcs{
    int         iNumber;
    char        name[24];
    float       fFleeDistance;
    float       fHeadingChangeRate;
    byte        btFear;
    byte        btTemper;
    byte        btLawfullness;
    byte        btView;
    float       fAttackStrength;
    float       fDefendWeakness;
    WORD        btStatFlags;
    byte        padding[2];    
};

Структура версии VCS

Общее число записей: 42.

На PS2 разделены на два фрагмента: 6+36=42

typedef struct pedstat_vcs{
    int         iNumber;
    float       fFleeDistance;
    float       fHeadingChangeRate;
    float       fAttackStrength;
    float       fDefendWeakness;
    byte        btStatFlags;
    byte        btZero;
    byte        btFear;
    byte        btTemper;
    byte        btLawfullness;
    byte        btView;
    char        name[26];
};

handling data

Структура версии LCS

Заголовок

Чтение происходит напрямую из заголовка DaTa Zlib.

typedef struct lcs_handling_header
  {
    float       unknow;
    float       unknow;
    float       unknow;
    float       unknow;
    float       unknow;
    float       null;
    float       null;
    float       null;
  };
данные handling

Общее число записей: 81.

typedef struct lcs_handling_item
  {
    float       fMass;              //B
    float       fTurnMass;          //C
    float       fTractionMultiplier;//J
    float       fCollisionDamageMultiplier; (fCollisionDamageMultiplier = (fMass/2000.0)*fCollisionDamageMultiplier) //ab
    DWORD       CarId;
    float       1/fMass;
    float       fDragMult;          //D
    float       _f1C;               //null
    float       CentreOfMassX;      //F
    float       CentreOfMassY;      //G
    float       CentreOfMassZ;      //H
    float       _f2C;               //null
    int         nPercentSubmerged   //I
    float       (fMass*0.8)/nPercentSubmerged;
    float       _f38; //дублирует значение _f94 //выставляет движок
    float       _f3C; //0xBC23D70A //выставляет движок
    float       _f40; //дублирует значение _f94 //выставляет движок
    float       _f44; //Unknown, transmission gear 1 related
    float       _f48; //Unknown, transmission gear 1 related
    float       _f4C; //0xBC23D70A //выставляет движок
    float       _f50; //Unknown, transmission gear 2 related
    float       _f54; //Unknown, transmission gear 2 related
    float       _f58; //Unknown, transmission gear 2 related
    float       _f5C; //Unknown, transmission gear 3 related
    float       _f60; //Unknown, transmission gear 3 related
    float       _f64; //Unknown, transmission gear 3 related
    float       _f68; //Unknown, transmission gear 4 related
    float       _f6C; //Unknown, transmission gear 4 related
    float       _f70; //Unknown, transmission gear 4 related
    float       _f74; //Unknown, transmission gear 5 related
    float       _f78; //Unknown, transmission gear 5 related
    float       _f7C; //Unknown, transmission gear 5 related
    char        cDriveType_TransmissionData;    //Q
    char        cEngineType_TransmissionData;   //R
    byte        nNumberOfGears_TransmissionData;//M
    byte        padding;                           //null
    float       fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*2500*5(*2 for 4wd)  //O                           
    float       fEngineInertia;                 //P
    float       fMaxVelocity; fMaxVelocity=fMaxVelocity*180.0 
    float       fMaxVelocity/1.2;
    float       _f94 //=-0.2 для всего транспорта, -0.05 для байков; //выставляет движок
    float       _f98;
    float       fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500; //S
    float       fBrakeBias;                     //T
    float       bABS;                           //U
    float       fSteeringLock;                  //V
    float       fTractionLoss;                  //K
    float       fTractionBias;                  //L
    float       _fB4;                           //null
    float       fSuspensionForceLevel;          //a
    float       fSuspensionDampingLevel;        //b
    float       fSuspensionUpperLimit;          //d
    float       fSuspensionLowerLimit;          //e
    float       fSuspensionBias;                //f
    float       fSuspensionAntiDive;            //g
    DWORD       dwflags <format=hex>;           //ag
    float       fSeatOffsetDistance;            //aa
    DWORD       dwMonetaryValue;                //ac
    byte        bFrontLights;                   //ah
    byte        bRearLights;                    //ai
    byte        padding[18];
  };

Текстовую версию, декомпилированную с помощью Stories WRLD Tool, можно cкачать из архива gtamodding.ru.

Структура версии VCS

 
 
0x0  4b	float	?       =-0.2 for cars and -0.05 for bikes (set by engine)
0x4  4b	float	?       = 0xBC23D70A (set by engine)
0x8  4b	float	?       =-0.2 for cars and -0.05 for bikes (set by engine)
0xC  4b	float	?       Unknown, Gear 1 ratio
0x10 4b	float	?       Unknown, Gear 1 ratio
0x14 4b	float	?       = 0xBC23D70A (set by engine)
0x18 4b	float	?       Unknown, Gear 2 ratio
0x1C 4b	float	?       Unknown, Gear 2 ratio
0x20 4b	float	?       Unknown, Gear 2 ratio
0x24 4b	float	?       Unknown, Gear 3 ratio
0x28 4b	float	?       Unknown, Gear 3 ratio
0x2C 4b	float	?       Unknown, Gear 3 ratio
0x30 4b	float	?       Unknown, Gear 4 ratio
0x34 4b	float	?       Unknown, Gear 4 ratio
0x38 4b	float	?       Unknown, Gear 4 ratio
0x3C 4b	float	?       Unknown, Gear 5 ratio
0x40 4b	float	?       Unknown, Gear 5 ratio
0x44 4b	float	?       Unknown, Gear 5 ratio
0x48 4b	float	N       fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*12500(*2 for 4wd vehicles)
0x4C 4b	float	P	TransmissionData.fEngineInertia
0x50 4b	float	?       Unknown, seems to be max gear ratio (all gear ratios are calculated using this value and number of gears)
0x54 4b	float	?       value above /1.2
0x58 4b	float	?       =-0.2 for cars and -0.05 for bikes (set by engine)
0x5C 1b	char	Q	TransmissionData.nDriveType
0x5D 1b	char	R	TransmissionData.nEngineType
0x5E 1b	int	M	TransmissionData.nNumberOfGears
0x5F 1b	-	-	Padding
0x60 4b	float	R       fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500
0x64 4b	float	T	fBrakeBias
0x68 4b	float	V	fSteeringLock
0x6C 4b	float	K	fTractionLoss
0x70 4b	float	L	fTractionBias
0x74 4b	float	a	fSuspensionForceLevel
0x78 4b	float	b	fSuspensionDampingLevel
0x7C 4b	float	d	suspension upper limit
0x80 4b	float	e	suspension lower limit
0x84 4b	float	f	suspension bias between front and rear
0x88 4b	float	g	suspension anti-dive multiplier
0x8C 4b	float	aa	fSeatOffsetDistance
0x90 4b	int	ac	nMonetaryValue
0x94 1b	int	ah	front lights
0x95 1b	int	ai	rear lights
0x96 2b	-		Padding
0x98 4b	float	D	fDragMult	
0x9C 4b  -		Padding (maybe...)
0xA0 4b	float	F	CentreOfMass.x
0xA4 4b	float	G	CentreOfMass.y
0xA8 4b	float	H	CentreOfMass.z
0xAC 4b	-               padding
0xB0 4b	int	I	nPercentSubmerged
0xB4 4b	float	?       = fMass*0.8/nPercentSubmerged
0xB8 4b	float	N	TransmissionData.fMaxVelocity
0xBC 4b	float	B	fMass
0xC0 4b	float	C	fTurnMass
0xC4 4b	float	J	fTractionMultiplier
0xC8 4b	float	Y       fCollisionDamageMultiplier; fCollisionDamageMultiplier=fMass/2000*fCollisionDamageMultiplier
0xCC 4b	int	ag	handlingFlags
0xD0 4b	int	af	modelFlags
0xD4 12b	-	Padding

particle data

Структура версии LCS

Общее число записей: 82. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.

typedef struct particle
  {
  DWORD		dwID;
  char		Name[20];		//A;
  float		CreateRange;		//CR;
  float		DefInitRadius;		//E;
  float		ExpRate;		//F;
  word		InitAngle;		//GZA;
  word		ChangeTimeA;		//IZA;
  word		AngleChangeAmount;	//HZA;
  word		InitZRadius;		//HZR;
  float		ChangeTimeZ;		//GZR;
  float		ZRadiusChangeAmount;	//IZR;
  word		FadeTime;		//H;
  word		InitInten;		//G;
  word		FadeAmount;		//I;
  word		InitIntenA;		//GA;
  word		FadeTimeA;		//HA;
  word		FadeAmountA;		//IA;
  byte		StartAnimFr;		//K;
  byte		FinalAnimFr;		//L;
  word		AnimSpeed;		//J;
  int		RotSpeed;		//M;
  float		GravitAccel;		//N;
  int		DragFrictDeccel;	//O;
  int		DefLifeSpan;		//P;
  float		PosRandomError;		//Q;
  float		VelRandomError;		//R;
  float		ExpRateError;		//S;
  int		RotRateError;		//T;
  int		LSErrorShape;		//U;
  float		TrailLengthMult;	//V;
  int		Flags <format=hex>;	//Z;
  byte		ColourR;		//B;
  byte		ColourG;		//C;
  word		ColourB;		//D;
  byte		InitColourVar;		//CV;
  byte		FadeColourR;		//B2;
  byte		FadeColourG;		//C2;
  byte		FadeColourB;		//D2;
  DWORD		unk1;
  int		ColourFadeTime;		//FT;
  float		StretchTexX;		//WX;
  float		StretchTexY;		//WY;
  float		WindFactor;		//WI;
  DWORD		unk2;
};

Структура версии VCS

carcols data

Структура версии LCS

Секция col

Общее число записей: 1. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.

Размер массива данных: 102. Лимит: 256 (кушает в памяти 1024 байт)

typedef struct colors
  {
  byte		Red;		//Kрасный цвет;
  byte		Grey;		//Зелёный цвет;
  byte		Blue;		//Синий цвет;
  byte		Alpha;		//Альфа канал цвета;
};
Секция car

Общее число записей: равно количеству автотранспорта в игре. Является частью структуры IDE секции cars.

Размер массивов данных: 8. Если количество расцветок авто меньше 8, то пустые значения заполнены нулями.

typedef struct carcolors1
  {
  byte		ColorID1;		//Номер первого цвета;
};
typedef struct carcolors2
  {
  byte		ColorID2;		//Номер второго цвета;
};

Структура версии VCS

Текстовую версию, декомпилированную с помощью Stories WRLD Tool, можно cкачать из архива gtamodding.ru.

п · о · р
Lcs.png GTA Liberty City Stories Vcs.png GTA Vice City Stories
Форматы файлов.anim.at3.cam.chk/.xtx.col2.cut.dtz.ifp.img/.dir.irx.gxt.lvz.mdl.pss.raw/.sdt.scm.vb.wrld
ИнструментыApacheConsole Texture Explorer (PSP/PS2)GTA Stories IMG ToolGTA Stories Texture ViewerGTA Stories Texture Explorer
GTA Stories RAW EditorGXT EditorJPCSPMDL importerMF AudioPCSX2PPSSPPStories WRLD ToolGTA Stories Map Converter v1.0UMD GenYAIE
ТуториалыМоддинг VCS и LCS (PSP/PS2)Аудио на PSPАудио на PS2Спецификация версий PS2Конфигурирование PCSX2
ПК-версииVice City StoriesLiberty City Stories