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

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Надо уже создать статью, блин)
 
(Структура файла TIM2)
Строка 12: Строка 12:
 
  }
 
  }
 
</source>
 
</source>
<code>sign</code> - 4 байта - всегда равно "TIM2"
+
* <code>sign</code> - 4 байта - всегда равно "TIM2"
<code>format_id</code> - 2 байта - равно 4 (??)
+
* <code>format_id</code> - 2 байта - равно 4 (??)
<code>pictures</code> - 2 байта - количество изображений в файле.
+
* <code>pictures</code> - 2 байта - количество изображений в файле.
<code>padding</code> - 8 байт - зарезервированное место (байты могут быть нулями)
+
* <code>padding</code> - 8 байт - зарезервированное место (байты могут быть нулями)
  
 
Далее идёт заголовок изображения, повторяющийся N раз (N=<code>picures</code>) вместе с палитрой и самим растром.
 
Далее идёт заголовок изображения, повторяющийся N раз (N=<code>picures</code>) вместе с палитрой и самим растром.
Строка 35: Строка 35:
 
  };
 
  };
 
</source>
 
</source>
<code>total_size</code> - 4 байта - общий размер (размер изображения, палитры и заголовка)
+
* <code>total_size</code> - 4 байта - общий размер (размер изображения, палитры и заголовка)
<code>clut_size</code> - 4 байта - размер палитры (равен количеству цветов, умноженному на 4)
+
* <code>clut_size</code> - 4 байта - размер палитры (равен количеству цветов, умноженному на 4)
<code>image_size</code> - 4 байта - размер изображения (размер растра, равен произведению длины, ширины и размеру пикселя в байтах)
+
* <code>image_size</code> - 4 байта - размер изображения (размер растра, равен произведению длины, ширины и размеру пикселя в байтах)
<code>header_size</code> - 2 байта - размер заголовка (этой структуры)
+
* <code>header_size</code> - 2 байта - размер заголовка (этой структуры)
<code>clut_colors</code> - 2 байта - количество цветов в палитре
+
* <code>clut_colors</code> - 2 байта - количество цветов в палитре
<code>pict_format</code> - 1 байт -  
+
* <code>pict_format</code> - 1 байт -  
<code>mipmaps</code> - 1 байт - количество мипмапов.
+
* <code>mipmaps</code> - 1 байт - количество мипмапов.
<code>clut_type</code> - 1 байт - неизвестно, обычно равно 3
+
* <code>clut_type</code> - 1 байт - неизвестно, обычно равно 3
<code>image_type</code> - 1 байт - тип изображения:
+
* <code>image_type</code> - 1 байт - тип изображения:
 
  0 - NONE
 
  0 - NONE
 
  1 - RGB16
 
  1 - RGB16
Строка 50: Строка 50:
 
  4 - IDTEX4 - для 4-битных текстур
 
  4 - IDTEX4 - для 4-битных текстур
 
  5 - IDTEX8 - для 8-битных текстур
 
  5 - IDTEX8 - для 8-битных текстур
<code>image_width</code> - 2 байта - ширина изображения в пикселях
+
* <code>image_width</code> - 2 байта - ширина изображения в пикселях
<code>image_height</code> - 2 байта - высота изображения в пикселях
+
* <code>image_height</code> - 2 байта - высота изображения в пикселях
  
 
Далее идут данные растра, за ними - данные палитры.
 
Далее идут данные растра, за ними - данные палитры.

Версия 16:13, 11 июля 2011

TIM2 - растровый графичесий формат приставки Sony Playstation 2. C небольшими изменениями1 используется в PS2 TXD-файлах трилогии GTA, Bully, Manhunt и в других аналогичных играх.

Структура файла TIM2

В начале файла содержится заголовок размером 16 байт, имеющий следующую структуру:

 struct tim2_header {
   char			sign[4];
   unsigned short	format_id;
   unsigned short	pictures;
   unsigned char	padding[8];
 }
  • sign - 4 байта - всегда равно "TIM2"
  • format_id - 2 байта - равно 4 (??)
  • pictures - 2 байта - количество изображений в файле.
  • padding - 8 байт - зарезервированное место (байты могут быть нулями)

Далее идёт заголовок изображения, повторяющийся N раз (N=picures) вместе с палитрой и самим растром.

 struct tim2_imge_header {
   unsigned long	total_size;
   unsigned long	clut_size;
   unsigned long	image_size;
   unsigned short	header_size;
   unsigned short	clut_colors;
   unsigned char	pict_format;
   unsigned char	mipmaps;
   unsigned char	clut_type;
   unsigned char	image_type;
   unsigned short	image_width;
   unsigned short	image_height;
 
   unsigned char	unknown[24];
 };
  • total_size - 4 байта - общий размер (размер изображения, палитры и заголовка)
  • clut_size - 4 байта - размер палитры (равен количеству цветов, умноженному на 4)
  • image_size - 4 байта - размер изображения (размер растра, равен произведению длины, ширины и размеру пикселя в байтах)
  • header_size - 2 байта - размер заголовка (этой структуры)
  • clut_colors - 2 байта - количество цветов в палитре
  • pict_format - 1 байт -
  • mipmaps - 1 байт - количество мипмапов.
  • clut_type - 1 байт - неизвестно, обычно равно 3
  • image_type - 1 байт - тип изображения:
0 - NONE
1 - RGB16
2 - RGB24
3 - RGB32
4 - IDTEX4 - для 4-битных текстур
5 - IDTEX8 - для 8-битных текстур
  • image_width - 2 байта - ширина изображения в пикселях
  • image_height - 2 байта - высота изображения в пикселях

Далее идут данные растра, за ними - данные палитры.

Примечания

^В TXD-файлах текстуры хранятся в с использованием swizzling'а. Исключение составляют только некоторые 4-битные текстуры.