Это старая версия документа!
Содержание
TIM
TIM - это стандартный формат графических файлов для PlayStation. Структура TIM в значительной степени отражает принцип организации текстур в видеопамяти.
Файл состоит из трех логических блоков: заголовка, палитры (CLUT) и данных изображения. Блоки CLUT и данных изображения имеют схожее внутреннее устройство; при загрузке файла TIM в кадровый буфер PlayStation они обрабатываются одинако. Блок CLUT является необязательным: во-первых, он не требуется, если текстура закодирована в 16-битном или 24-битном режиме, во-вторых, даже если текстура индексированная, CLUT может быть загружен из другого файла.
Заголовок
Заголовок начинается с байта-идентификатора. Его значение является постоянным для всех файлов формата TIM и должно быть равно 0x10. За ним идут три нулевых байта.
Следующее 32-битное слово содержит битовые флаги, определяющие основные свойства изображения:
- Биты 0-1 - глубина цвета (BPP):
- 00 (0) - 4 бита на пиксель (16 цветов, используется CLUT)
- 01 (1) - 8 бит на пиксель (256 цветов, используется CLUT)
- 10 (2) - 16 бит на пиксель (без CLUT)
- 11 (3) - 24 бит на пиксель (без CLUT)
- Бит 3 - наличие в файле CLUT (как правило, этот флаг установлен, если значение BPP равно 00 или 01)
- 0 - CLUT отсутствует
- 1 - CLUT присутствует.
Блок CLUT
CLUT состоит из 12-байтного заголовка и собственно байтов палитры.
Заголовок состоит из:
- 32-битного слова, в котором хранится размер всего блока CLUT в байтах (включая и заголовк, и данные)
- 16-битных координат X, Y, которые указывают на позицию CLUT в видеопамяти. Координаты выражены в логических 16-битных пикселях VRAM. Они используются для загрузки данных в видеопамять командой GP0(A0h)
- 16-битных значений width, height, которые обозначают ширину и высоту CLUT. Ширина CLUT зависит от глубины цвета: 16 пикселей для 4-битных изображений и 256 пикселей для 16-битных. Высота CLUT (количество строк) обычно равна 1, но может быть и больше, если текстура поддерживает вариативные палитры.
Блок изображения
Изображение хранится по тому же принципу, что и CLUT - такой же заголовок и данные.
