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

Материал из GTAModding.ru
Перейти к: навигация, поиск
м
 
(не показаны 18 промежуточных версий 8 участников)
Строка 1: Строка 1:
 +
{{Ресурс
 +
| name = Texture Dictionary
 +
| versionw = 8 ([[GTA IV]]), 11 ([[MP 3]])
 +
| versionx = 7 ([[GTA IV]]), 13 ([[GTA V]])
 +
| versionc = 7 ([[GTA IV]]), 13 ([[GTA V]])
 +
| extensionw = .wtd
 +
| extensionx = .xtd
 +
| extensionc = .ctd
 +
| entryw = rage::pgDictionary<rage::grcTexturePC>
 +
| entryx = rage::pgDictionary<rage::grcTextureXenon>
 +
| entryc = rage::pgDictionary<rage::grcTextureGCM>
 +
| description = Хранилище текстур, содержит преобразованные в ресурсы файлы типа *.DDS
 +
}}
 
'''WTD''' - '''W'''indows '''T'''exture '''D'''ictionary
 
'''WTD''' - '''W'''indows '''T'''exture '''D'''ictionary
  
Формат текстур [[GTA 4]]. Работа с ними поддерживается в [[OpenIV]] и [[SparkIV]].
+
Формат ПК-текстур [[GTA IV]] и [[GTA V]]. Работа с [[GTA IV]]-версиями поддерживается в [[OpenIV]], [[SparkIV]] и [[G-Texture]].
  
[[Категория:GTA 4]] [[Категория: Форматы файлов]]
+
На Xbox360 текстуры имеют формат '''XTD''' - '''X'''enon '''T'''exture '''D'''ictionary. Просмотр был реализован в ранних версиях [[OpenIV]] и [[SparkIV]], но не поддерживается публичными вариантами.
 +
 
 +
На PlayStation 3 текстуры имеют формат '''CTD''' - '''C'''ell '''T'''exture '''D'''ictionary.
 +
 
 +
== Структура ==
 +
<div class="NavFrame collapsed"><div class="NavHead">'''Структура WTD 7 в 010 Editor'''</div>
 +
<div class="NavContent">
 +
 
 +
<source lang="cpp" line>
 +
//--- 010 Editor v3.0.5 Binary Template
 +
// File: wtd.bt
 +
// Version: 0.1
 +
// Author: Dageron
 +
// Site: www.GTAModding.ru
 +
//--------------------------------------   
 +
// Based on:
 +
//http://public.sannybuilder.com/GTA4/rsc_en.txt
 +
//http://gtaivtools.googlecode.com/
 +
//--------------------------------------
 +
//Simple function to get offset
 +
typedef int GetOffset <read=GetOffsetRead>;
 +
    string GetOffsetRead(GetOffset f)
 +
    {
 +
        string s; 
 +
        if (f == 0) s="0";
 +
        else     
 +
        if (f >> 28 != 5) s="0"; //wrong offset
 +
        else 
 +
        SPrintf( s, "%i", f & 0x0fffffff);
 +
        return s;
 +
    }
 +
//--------------------------------------
 +
struct GTA_Windows_Texture {
 +
LittleEndian();
 +
        struct pgDictionary
 +
        {
 +
            SetBackColor( cLtGreen );
 +
            int VTable;     
 +
            GetOffset BlockMapOffset;
 +
            int ParentDictionary; // always 0 in file
 +
            int UsageCount; // always 1 in file
 +
            GetOffset HashTableOffset;         
 +
            short TextureCount;
 +
            short TextureCount2;
 +
            GetOffset TextureListOffset;
 +
            short TextureCount3;
 +
            short TextureCount4;
 +
                FSeek(BlockMapOffset & 0x0fffffff);
 +
                SetBackColor( cLtGray );
 +
                struct
 +
                {               
 +
                int  zero;                             
 +
    `          byte padding[524]; 
 +
                } BlockMap;   
 +
      }Header;     
 +
      struct
 +
      {
 +
          FSeek(Header.HashTableOffset & 0x0fffffff);
 +
          SetBackColor( cLtGreen );
 +
          local int i;
 +
          local int total = 16-(Header.TextureCount*4%16); 
 +
          for(i = 0; i < Header.TextureCount; i++ )
 +
          {
 +
          uint Hash;
 +
          }
 +
          SetBackColor( cLtGray ); byte padding1[total]; SetBackColor( cLtGreen );
 +
      }HashTable;
 +
 
 +
      struct
 +
      {
 +
          FSeek(Header.TextureListOffset & 0x0fffffff);
 +
          SetBackColor( cLtGreen );
 +
          local int i;
 +
          local int total = 16-(Header.TextureCount*4%16); 
 +
          for(i = 0; i < Header.TextureCount; i++ )
 +
          {
 +
          GetOffset InfoOffsets;
 +
          }
 +
          SetBackColor( cLtGray ); byte padding1[total]; SetBackColor( cLtGreen );
 +
      }TextureListTable;     
 +
 
 +
          struct
 +
          {
 +
          local int i;
 +
          for(i = 0; i < Header.TextureCount; i++ )
 +
          {
 +
          FSeek(TextureListTable.InfoOffsets[i]& 0x0fffffff);
 +
          SetBackColor(cLtYellow);
 +
                  struct
 +
                  {
 +
                    uint VTable;
 +
                    GetOffset BlockMapOffset;
 +
                    uint Unknown1;
 +
                    uint Unknown2;
 +
                    uint Unknown3;
 +
                    GetOffset m_pszTextureName; //pointer to texture filename
 +
                    uint Unknown4;
 +
                    ushort m_wWidth;         //texture width (edge length for cube texture)
 +
                    ushort m_wHeight; SetBackColor(cLtGreen);         //texture height                               
 +
                    byte m_pixelFormat[4];  SetBackColor(cLtYellow);    //texture pixel format
 +
                    short m_BytesPerLine;        //number of bytes per pixel line
 +
                    byte m_TextureType;          //texture type: 1 - cube texture, 2 - volume texture, other - regular texture                             
 +
                    byte m_nbLevels;         //number of levels in the texture
 +
                    float UnknownFloat1;
 +
                    float UnknownFloat2;
 +
                    float UnknownFloat3;
 +
                    float UnknownFloat4;
 +
                    float UnknownFloat5;
 +
                    float UnknownFloat6;
 +
                    GetOffset m_pPrev;          //PrevTextureInfoOffset
 +
                    GetOffset m_pNext;          //NextTextureInfoOffset
 +
                    int RawDataOffset;
 +
                    uint Unknown6;             
 +
                  }TextureInfo;     
 +
          }       
 +
          for(i = 0; i < Header.TextureCount; i++ )
 +
          {
 +
                FSeek(TextureInfo[i].m_pszTextureName& 0x0fffffff);   
 +
                SetBackColor( cLtGreen );
 +
                struct {
 +
                        string Name;
 +
                        SetBackColor(cLtYellow);
 +
                }TextureName; 
 +
          }       
 +
          }grcTexturePC;
 +
    }dictionary;
 +
 
 +
</source>
 +
 
 +
</div></div>
 +
 
 +
=== Заголовок WTD (полностью аналогичен WDD) ===
 +
 
 +
ид секции (224103129)
 +
оффсет 1 (секция 1)
 +
0
 +
1
 +
оффсет 2 (секция 2)
 +
количество контейнеров текстур для секции 2
 +
оффсет 3 (секция 3)
 +
количество контейнеров текстур для секции 3
 +
 
 +
секция 1
 +
 
 +
0
 +
неизвестно
 +
 
 +
секция 2
 +
 
 +
массив, длинна строки: 4 байт. Количество элементов массива = количество контейнеров текстур внутри WTD.
 +
 
 +
секция 3
 +
 
 +
массив оффсетов на заголовки контейнеров текстур, длинна строки: 4 байт. Количество элементов массива = количество контейнеров текстур внутри WTD.
 +
 
 +
=== Заголовок контейнера текстуры ===
 +
 
 +
ид секции (25288138)
 +
0
 +
8 байт: неизвестно
 +
х у
 +
мипмап
 +
0
 +
неизвестно
 +
оффсет АА (секция АА)
 +
16 байт: неизвестно
 +
оффсет AБ (секция АБ)
 +
 
 +
секция АА
 +
 
 +
имя текстуры
 +
 
 +
=== Текстуры ===
 +
 
 +
Массивы растров текстур, выровнены относительно блока заголовков.
 +
 
 +
==Ссылки==
 +
[http://sannybuilder.com/forums/viewtopic.php?id=1176 Компонент для чтения WTD для Delphi]
 +
[[Категория:GTA 4]] [[Категория: Форматы файлов]][[Категория: Ресурсы]]
 +
 
 +
{{GTA5-navi}}{{GTA4-navi}}
 +
[[Категория:GTA 4]][[Категория:GTA 5]][[Категория: Форматы файлов]][[Категория: Ресурсы]]

Текущая версия на 22:10, 27 марта 2014

Texture Dictionary
Версия объекта:
Windows – 8 (GTA IV), 11 (MP 3)
Xenon – 7 (GTA IV), 13 (GTA V)
PS3 – 7 (GTA IV), 13 (GTA V)
Расширение файла:
Windows – .wtd
Xenon – .xtd
PS3 – .ctd
Содержащийся объект:
Windows – rage::pgDictionary<rage::grcTexturePC>
Xenon – rage::pgDictionary<rage::grcTextureXenon>
PS3 – rage::pgDictionary<rage::grcTextureGCM>

WTD - Windows Texture Dictionary

Формат ПК-текстур GTA IV и GTA V. Работа с GTA IV-версиями поддерживается в OpenIV, SparkIV и G-Texture.

На Xbox360 текстуры имеют формат XTD - Xenon Texture Dictionary. Просмотр был реализован в ранних версиях OpenIV и SparkIV, но не поддерживается публичными вариантами.

На PlayStation 3 текстуры имеют формат CTD - Cell Texture Dictionary.

Содержание

Структура

Заголовок WTD (полностью аналогичен WDD)

ид секции (224103129)
оффсет 1 (секция 1)
0
1
оффсет 2 (секция 2)
количество контейнеров текстур для секции 2
оффсет 3 (секция 3)
количество контейнеров текстур для секции 3

секция 1

0
неизвестно

секция 2

массив, длинна строки: 4 байт. Количество элементов массива = количество контейнеров текстур внутри WTD.

секция 3

массив оффсетов на заголовки контейнеров текстур, длинна строки: 4 байт. Количество элементов массива = количество контейнеров текстур внутри WTD.

Заголовок контейнера текстуры

ид секции (25288138)
0
8 байт: неизвестно
х у
мипмап
0
неизвестно
оффсет АА (секция АА)
16 байт: неизвестно
оффсет AБ (секция АБ)

секция АА

имя текстуры

Текстуры

Массивы растров текстур, выровнены относительно блока заголовков.

Ссылки

Компонент для чтения WTD для Delphi

п · о · р
V.png Grand Theft Auto 5
Форматы файлов.dat.gfx.ide.meta.patch.rpf.ytd
ФайлыCarcols.xmtHandling.meta‎Levels.xmlPedbounds.xmlPedhealth.meta‎Pickups.meta‎Relationships.datStartup.xmlStreaming.meta‎
Vehiclemodelsets.metaWater.xmlWatertune.xml‎Weaponarchetypes.meta‎
ИнструментыOpenIV
п · о · р
GTA 4 Grand Theft Auto IV
Форматы файлов.dat.gxt.ide.img.ipl.nod.sco.rpf.rrr.wdd.wdr.wft.wbd/wbn.whm.wad.wnv.wpl.wtd
Документация Handling.datgta.datОружиеКатсценыПутиСкриптовые функцииШифрованиеФормат CFG файла настроек
Скриптинг в GTA 4
ИнструментыAPE IVASI LoaderIV NeedleGIMSOpenIVPathViewerSparkIVXLiveLessRaCon
Скриптовые программыAliceC++ Script HookScocl.NET Script HookDelphi Hook
ТуториалыИмпортирование текстур с помощью OpenIVИмпортирование текстур с помощью SparkIV
МодификацииGTA Vice City RageIV:SAGostown Paradise IV