DTZ

Материал из GTAModding.ru
Перейти к: навигация, поиск

*.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] - смещение на массив hardcoded индексов моделей.
 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] - CStreamingInfo CStreaming::ms_aInfoForModel[] (аналог 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: 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.

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

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

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

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

  4b - unknown (0xFFFFFFFF).
  1b - текущий ID primary цвета машины (в памяти) в файле всегда = 0
  1b - текущий ID secondary цвета машины (в памяти) в файле всегда = 0
  14b - имя авто в GXT
  4b - размер колеса
  2b - ID модели колеса
  2b - номер строки в бинарной HANDLING.CFG
  1b - unknown
  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)
  2b - Level
  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)   


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.

п · о · р
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