DTZ
Материал из GTAModding.ru
Версия от 11:23, 22 июня 2015; Sergeanur (обсуждение | вклад)
*.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] - таблица смещений для перераспределения файла в памяти (глобалсекция). 0x14 [4b int] - количество смещений в глобалсекции. 0x18 [4b int] - ссылается на таблицу смещений на хеши jenkins, которые заменяются на указатели на таблицы виртуальных методов (vmt). 0x1C [2b short] - количество хешей jenkins. 0x1E [2b short] - количество атомиков встроенных в DTZ моделей (смещения на атомики находятся после смещений на секции IDE). 0x20 [4b int] - пути. 0x24 [4b int] - смещение на данные, относящиеся к размещению коллизий для статичных обьектов (Buildings IPL). 0x28 [4b int] - смещение на данные, относящиеся к размещению коллизий для дорог (Treadable IPL). 0x2C [4b int] - смещение на данные, относящиеся к размещению коллизий для динамических объектов (Dummy IPL). 0x30 [4b int] - EntryInfoNodes (назначение неизвестно, ссылается на участки вышеуказанных IPL). 0x34 [4b int] - PtrNodes (назначение неизвестно, ссылается на участки вышеуказанных IPL). 0x38 [4b int] - количество коллизий в общей таблице игровых коллизий. 0x3C [4b int] - таблица смещений на игровые коллизии (каждой коллизии присваивается ID по счетчику смещений от 0). 0x40 [4b int] - неизвестно. 0x44 [4b int] - неизвестно. 0x48 [4b int] - смещение на данные игровых зон (info.zon, navig.zon). 0x4C [4b int] - неизвестно. 0x50 [4b int] - неизвестно. 0x54 [4b int] - количество строк в таблице 2dfx. 0x58 [4b int] - смещение на таблицу 2dfx эффектов для объектов из default.ide (строка 64 байт). 0x5С [4b int] - неизвестно. 0x60 [4b int] - смещение на блок загрузки текстурных архивов CHK. 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. 0x7C [4b int] - аналог GTA3PS*HR.DIR. 0x80 [4b int] - смещение на блок загрузки ANIM файлов и анимаций (ped.ifp). 0x84 [4b int] - fistfite.dat 0x88 [4b int] - неизвестно. 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.
Структуры
Ниже представлены некоторые структуры описанных выше данных.
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 _fC; DWORD CarId; float _f14; //null, кроме игрушечных авто float fDragMult; //D float _f1C; //null float CentreOfMassX; //F float CentreOfMassY; //G float CentreOfMassZ; //H float _f2C; //null int nPercentSubmerged //I float _f34; float _f38; float _f3C; float _f40; float _f44; float _f48; float _f4C; float _f50; float _f54; float _f58; float _f5C; float _f60; float _f64; float _f68; float _f6C; float _f70; float _f74; float _f78; float _f7C; char cDriveType_TransmissionData; //R char cEngineType_TransmissionData; //R byte nNumberOfGears_TransmissionData;//M byte _f83; //null float _f84; //null float fEngineInertia; //P float _f8C; float _f90; float _f94; float _f98; float _f9C; 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>; float fSeatOffsetDistance; //aa DWORD dwMonetaryValue; //ac byte bFrontLights; //ah byte bRearLights; //ai byte padding[18]; };
Текстовую версию, декомпилированную с помощью Stories WRLD Tool, можно cкачать из архива gtamodding.ru.
Структура версии VCS
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.