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

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Версия GTA LCS)
(Версия GTA LCS)
Строка 18: Строка 18:
 
   0x14 [4b int] - количество смещений в глобалсекции.
 
   0x14 [4b int] - количество смещений в глобалсекции.
 
   0x18 [4b int] - неизвестно, ссылается на таблицу смещений на определенные секции IDE (повторно).
 
   0x18 [4b int] - неизвестно, ссылается на таблицу смещений на определенные секции IDE (повторно).
   0x1C [2b int] - количество смещений в таблице секций IDE.
+
   0x1C [2b short] - количество смещений в таблице секций IDE.
   0x1E [2b int] - количество атомиков встроенных в DTZ моделей (смещения на атомики находятся после смещений на секции IDE).
+
   0x1E [2b short] - количество атомиков встроенных в DTZ моделей (смещения на атомики находятся после смещений на секции IDE).
 
   0x20 [4b int] - пути.
 
   0x20 [4b int] - пути.
 
   0x24 [4b int] - смещение на данные, относящиеся к размещению коллизий для статичных обьектов (Buildings IPL).
 
   0x24 [4b int] - смещение на данные, относящиеся к размещению коллизий для статичных обьектов (Buildings IPL).

Версия 13:12, 3 июня 2015

*.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] - неизвестно, ссылается на таблицу смещений на определенные секции IDE.
 0x10 [4b int] - таблица смещений для перераспределения файла в памяти (глобалсекция).
 0x14 [4b int] - количество смещений в глобалсекции.
 0x18 [4b int] - неизвестно, ссылается на таблицу смещений на определенные секции IDE (повторно).
 0x1C [2b short] - количество смещений в таблице секций IDE.
 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: 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.

Структуры

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

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