TIM2
Материал из GTAModding.ru
Версия от 16:29, 11 июля 2011; Lego (обсуждение | вклад)
TIM2 - растровый графичесий формат приставки Sony Playstation 2. C небольшими изменениями1 используется в PS2 TXD-файлах трилогии GTA, Bully, Manhunt и в других играх.
Содержание |
Структура файла
В начале файла содержится заголовок размером 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 байт - неизвестно, обычно равно 0 (нулю). -
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 байта - высота изображения в пикселях
Далее идут данные растра, за ними - данные палитры.
Swizzling
В TXD-архивах GTA используется технология swizzling'а, которая, в общих чертах, позволяет выиграть в производительности игры за счёт нестандартного расположения пикселей. В зависимости от количества битов на пиксель (bpp) алгоритм подвергается некоторым вариациям. Следует также отметить, что в GTA3 некоторые текстуры хранятся без swizzling'а т.е. в обычном TIM2-формате.
Примечания
^В TXD-файлах текстуры хранятся в с использованием swizzling'а. Исключение составляют только некоторые 4-битные текстуры.
^Для справки: в структурах использованы типы данных: long размером 4 байтам (DWORD), short размером 2 байта (WORD) и char размером 1 байт (BYTE).