DTZ — различия между версиями
Материал из GTAModding.ru
Lego (обсуждение | вклад) м (→GAME.DTZ) |
Majestic (обсуждение | вклад) (→Структура версии VCS) |
||
(не показаны 69 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
− | + | <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 алгоритмом). | ||
+ | |||
+ | == Краткое описание содержимого == | ||
+ | |||
+ | В текущий момент известно, что в <code>GAME.dtz</code> содержатся следующие данные: | ||
{|{{Таблица}} | {|{{Таблица}} | ||
! Описание | ! Описание | ||
− | ! Аналогия | + | ! Аналогия из предыдущих частей серии |
− | ! Оффсет | + | ! Оффсет на ресурс |
! Комментарии | ! Комментарии | ||
|- | |- | ||
Строка 16: | Строка 83: | ||
| текстуры меню | | текстуры меню | ||
| frontend.txd | | frontend.txd | ||
− | | | + | | LCS PS2: <code>0x4E4A30</code> |
− | | | + | LCS PSP: <code>0x4DA830</code> |
+ | |||
+ | VCS PS2: <code>0x581330</code> | ||
+ | |||
+ | VCS PSP: <code>0x51D95C</code> | ||
+ | | директория с текстурами меню, запакована deflate/zlib алгоритмом (*) | ||
|- | |- | ||
− | | текстуры шрифтов | + | | текстуры шрифтов (fonts.chk) |
| fonts.txd | | fonts.txd | ||
− | | | + | | LCS PS2: <code>0x4EF4D8</code> |
− | | | + | LCS PSP: <code>0x4E2B1C</code> |
+ | |||
+ | VCS PS2: <code>0x57BE4C</code> | ||
+ | |||
+ | VCS PSP: <code>0x530AFC</code> | ||
+ | | директория с текстурами шрифтов, запакована deflate/zlib алгоритмом (*) | ||
|- | |- | ||
| текстуры particle-эффектов | | текстуры particle-эффектов | ||
| particle.txd | | particle.txd | ||
− | | | + | | LCS PS2: <code>0x4A1C28</code> |
− | | содержит все текстуры | + | |
+ | LCS PSP: <code>0x38AB90</code> | ||
+ | |||
+ | VCS PS2: <code>0x761F0</code> | ||
+ | |||
+ | VCS PSP: <code>0x3F7FB0</code> | ||
+ | | содержит все текстуры particle-эффектов (*) | ||
|- | |- | ||
| generic-текстуры | | generic-текстуры | ||
| generic.txd, wheels.txd, vehicle.txd | | generic.txd, wheels.txd, vehicle.txd | ||
− | | | + | | LCS PS2: <code>0x4A1BFC</code> |
− | | содержит общие текстуры для автотранспорта и все текстуры | + | |
+ | LCS PSP: <code>0x392B04</code> | ||
+ | |||
+ | VCS PS2: <code>0x539E0</code> | ||
+ | |||
+ | VCS PSP: <code>0x3D60B4</code> | ||
+ | | содержит общие текстуры для автотранспорта и все текстуры колес (*) | ||
|- | |- | ||
− | | | + | | значки радара |
| hud.txd | | hud.txd | ||
− | | | + | | LCS PS2: <code>0x4A1BE4</code> |
− | | содержит текстуры для | + | |
+ | LCS PSP: <code>0x38AD30</code> | ||
+ | |||
+ | VCS PS2: <code>0x287B0</code> | ||
+ | |||
+ | VCS PSP: <code>0x3B4678</code> | ||
+ | | содержит текстуры для hud-а (*) | ||
|- | |- | ||
| текстуры радара | | текстуры радара | ||
| radarNN.txd | | radarNN.txd | ||
− | | | + | | - |
− | | только в [[GTA VCS]] | + | | только в [[GTA VCS]], запакованы deflate/zlib алгоритмом |
|- | |- | ||
| colspan="4" | <b>Анимация</b> | | colspan="4" | <b>Анимация</b> | ||
Строка 56: | Строка 151: | ||
| только в [[GTA VCS]] | | только в [[GTA VCS]] | ||
|- | |- | ||
− | | ? | + | | ? |
| fight.ifp | | fight.ifp | ||
| | | | ||
Строка 65: | Строка 160: | ||
| | | | ||
| только в [[GTA VCS]] | | только в [[GTA VCS]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| colspan="4" | <b>Коллизия</b> | | colspan="4" | <b>Коллизия</b> | ||
|- | |- | ||
− | | | + | | коллизии пешеходов (**) |
| peds.col | | peds.col | ||
| | | | ||
− | | | + | | одна за всех :) |
|- | |- | ||
− | | | + | | коллизии автотранспорта (**) |
| vehicles.col | | vehicles.col | ||
| | | | ||
− | | | + | | |
|- | |- | ||
− | | | + | | коллизии оружия (**) |
| weapons.col | | weapons.col | ||
| | | | ||
− | | | + | | |
|- | |- | ||
− | | | + | | коллизии ко всем моделям из MasterWRLD, а так же к скриптовым объектам из GTA3XXX.IMG архива (**) |
+ | | generic.col | ||
+ | | | ||
+ | | | ||
|- | |- | ||
− | | | + | | коллизии всех остальных объектов в игре (**) |
− | + | ||
| | | | ||
− | | | + | | |
+ | | содержат только ограничивающие коробку и сферу, всё остальное - в стиминг-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 |
− | | | + | 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 (***) |
− | | | + | | 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 | ||
| cullzone.dat | | cullzone.dat | ||
+ | | | ||
| | | | ||
|- | |- | ||
Строка 142: | Строка 313: | ||
| | | | ||
|- | |- | ||
− | | handling data | + | | handling data (**) |
| handling.dat | | handling.dat | ||
− | | | + | | LCS PS2: <code>0x1647A0</code> |
− | | | + | LCS PSP: <code>0x50190</code> |
+ | |||
+ | VCS PS2: <code>0x4C2A10</code> | ||
+ | |||
+ | VCS PSP: <code>0x3AF30F</code> | ||
+ | | в LCS и VCS структуры отличаются | ||
|- | |- | ||
| | | | ||
| info.zon | | info.zon | ||
| | | | ||
− | | | + | | |
|- | |- | ||
| | | | ||
| map.zon | | map.zon | ||
| | | | ||
− | | | + | | |
|- | |- | ||
| object data | | object data | ||
Строка 163: | Строка 339: | ||
|- | |- | ||
| particle data | | particle data | ||
− | | particle. | + | | particle.cfg |
− | | | + | | LCS PS2: <code>0x3917D0</code> |
− | | | + | | характеристики спецэффектов |
|- | |- | ||
| pedstats data | | pedstats data | ||
| pedstats.dat | | pedstats.dat | ||
− | | | + | | LCS PS2: |
− | | | + | часть 1 - <code>0x49E820</code> |
+ | |||
+ | часть 2 - <code>0x49EB78</code> | ||
+ | |||
+ | часть 3 - <code>0x4A1A10</code> | ||
+ | |||
+ | LCS PSP: | ||
+ | |||
+ | <code>0x391DA0</code> | ||
+ | |||
+ | VCS PS2: | ||
+ | |||
+ | часть 1 - <code>0x4C8080</code> | ||
+ | |||
+ | часть 2 - <code>0x4C8428</code> | ||
+ | |||
+ | VCS PSP: | ||
+ | |||
+ | <code>0x3B1F10</code> | ||
+ | | характеристики пешеходов | ||
+ | |||
+ | 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 data | ||
| timecyc.dat | | timecyc.dat | ||
| | | | ||
− | | | + | | характеристики погоды |
|- | |- | ||
− | | | + | | waterpro data |
| waterpro.dat | | waterpro.dat | ||
| | | | ||
− | | | + | | данные водных поверхностей |
|- | |- | ||
| weapon data | | weapon data | ||
| [[weapon.dat]] | | [[weapon.dat]] | ||
− | | <code>VCS PS2: 0x3D7530</code> | + | | LCS PS2:<br><code>0x40A980<br>0x44FAE0 </code><br> |
+ | VCS PS2:<br><code>0x3D7530</code><br> | ||
+ | VCS PSP:<br><code>0x2E8B60</code> | ||
| | | | ||
|- | |- | ||
Строка 191: | Строка 410: | ||
| [[SDT]]-файлы. | | [[SDT]]-файлы. | ||
| | | | ||
+ | | LCS:<br><code>0x377720</code> | ||
| только в PSP-версиях | | только в PSP-версиях | ||
|} | |} | ||
<b>Внимание!</b><br /> | <b>Внимание!</b><br /> | ||
− | * | + | * Оффсеты указаны для распакованного 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 ==== | ||
+ | |||
+ | ===== Заголовок ===== | ||
+ | |||
+ | <source lang="cpp">typedef struct Weapon_lcs_header | ||
+ | { | ||
+ | offset CWeaponModelInfo1; | ||
+ | offset CWeaponModelInfo2; | ||
+ | };</source> | ||
+ | |||
+ | ===== данные weapons ===== | ||
+ | |||
+ | Общее число записей: 38 | ||
− | |||
− | |||
− | |||
− | |||
<source lang="cpp"> | <source lang="cpp"> | ||
− | struct weapondata{ | + | 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>; | ||
+ | }; | ||
+ | </source> | ||
+ | |||
+ | ==== Структура версии VCS ==== | ||
+ | |||
+ | Общее число записей: 40 | ||
+ | |||
+ | <source lang="cpp"> | ||
+ | typedef struct vFireOffset{ | ||
+ | float x; | ||
+ | float y; | ||
+ | float z; | ||
+ | }; | ||
+ | |||
+ | typedef struct vTimeStrc{ | ||
+ | float a; | ||
+ | float b; | ||
+ | float c; | ||
+ | }; | ||
+ | |||
+ | typedef struct weapondata{ | ||
DWORD dwType; | DWORD dwType; | ||
int iFireType; | int iFireType; | ||
Строка 231: | Строка 612: | ||
DWORD _f40; //целочисленное значение | DWORD _f40; //целочисленное значение | ||
DWORD _f44; //DWORD ? unknown | DWORD _f44; //DWORD ? unknown | ||
− | + | vTimeStrc m_vTimeStrc; | |
− | + | vTimeStrc m_vTimeStrc; | |
− | DWORD | + | float unk; |
− | DWORD | + | DWORD dwModelID; |
− | DWORD | + | DWORD dwModel2ID; |
+ | DWORD dwWeaponSlot | ||
DWORD _f6C; //padding (0xAA) | DWORD _f6C; //padding (0xAA) | ||
}; | }; | ||
</source> | </source> | ||
− | === | + | |
− | + | === pedstats data === | |
+ | |||
+ | ==== Структура версии LCS ==== | ||
+ | |||
+ | ===== Заголовок ===== | ||
+ | |||
+ | Размер массива адресов: 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{ | ||
+ | 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]; | ||
+ | };</source> | ||
+ | |||
+ | ==== Структура версии VCS ==== | ||
+ | |||
+ | Общее число записей: 42. | ||
+ | |||
+ | На PS2 разделены на два фрагмента: 6+36=42 | ||
+ | |||
+ | <source lang="cpp"> | ||
+ | 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]; | ||
+ | }; | ||
+ | </source> | ||
+ | |||
+ | === handling data === | ||
+ | |||
+ | ==== Структура версии 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. | ||
+ | |||
+ | <source lang="cpp">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]; | ||
+ | }; | ||
+ | </source> | ||
+ | |||
+ | Текстовую версию, декомпилированную с помощью [[Stories WRLD Tool]], можно [http://gtamodding.ru/w/images/1/12/Handling.rar cкачать] из архива gtamodding.ru. | ||
+ | |||
+ | ==== Структура версии 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 === | ||
+ | |||
+ | ==== Структура версии LCS ==== | ||
+ | |||
+ | Общее число записей: 82. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib. | ||
+ | <source lang="cpp">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; | ||
+ | };</source> | ||
+ | |||
+ | ==== Структура версии VCS ==== | ||
+ | |||
+ | {{Заготовка}} | ||
+ | |||
+ | === 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: VCS PS2: VCS PSP: |
директория с текстурами меню, запакована deflate/zlib алгоритмом (*) |
текстуры шрифтов (fonts.chk) | fonts.txd | LCS PS2: 0x4EF4D8
LCS PSP: VCS PS2: VCS PSP: |
директория с текстурами шрифтов, запакована deflate/zlib алгоритмом (*) |
текстуры particle-эффектов | particle.txd | LCS PS2: 0x4A1C28
LCS PSP: VCS PS2: VCS PSP: |
содержит все текстуры particle-эффектов (*) |
generic-текстуры | generic.txd, wheels.txd, vehicle.txd | LCS PS2: 0x4A1BFC
LCS PSP: VCS PS2: VCS PSP: |
содержит общие текстуры для автотранспорта и все текстуры колес (*) |
значки радара | hud.txd | LCS PS2: 0x4A1BE4
LCS PSP: VCS PS2: VCS PSP: |
содержит текстуры для 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 |
|
ЛОДы колес (***) | wheels.dff | LCS PS2: 800643
E8C249 50C349 B8C349 ECC349 88C449 94EB49 |
|
колесо 1 (***) | wheels.dff | LCS PS2: 80С249 | |
колесо 2 (***) | wheels.dff | LCS PS2: B4C249 | |
колесо 3 (***) | wheels.dff | LCS PS2: 1CC349 | |
колесо 4 (***) | wheels.dff | LCS PS2: 84C349 | |
колесо 5 (***) | wheels.dff | LCS PS2: 20C449 | |
колесо 6 (***) | wheels.dff | LCS PS2: 54C449 | |
LOD самолета (***) | air_vlo.dff | LCS PS2: 2CEB49 | |
колесо 7 (***) | wheels.dff | LCS PS2: 60EB49 | |
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: VCS PS2: VCS PSP: |
в LCS и VCS структуры отличаются |
info.zon | |||
map.zon | |||
object data | object.dat | ||
particle data | particle.cfg | LCS PS2: 0x3917D0
|
характеристики спецэффектов |
pedstats data | pedstats.dat | LCS PS2:
часть 1 - часть 2 - часть 3 - LCS PSP:
VCS PS2: часть 1 - часть 2 - VCS PSP:
|
характеристики пешеходов
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 VCS PS2: |
|
Разное | |||
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.