CHK — различия между версиями
Материал из GTAModding.ru
DenielX (обсуждение | вклад) м (→Заголовок коллекции ресурсов) |
|||
(не показаны 16 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
== Основные данные == | == Основные данные == | ||
− | .CHK/.XTX/.TEX - форматы, использующиеся для хранения игровой графики в [[GTA LCS]], [[GTA VCS]] и [[Manhunt 2]]. | + | .CHK/.XTX/.TEX - форматы, использующиеся для хранения игровой графики в [[GTA LCS]], [[GTA VCS]] и [[Manhunt 2]]. Представляют собой коллекцию контейнеров (платформо-независимые), содержащие внутри растровую графику (формат текстур соответствует игровой платформе, т.е. свой для PSP, PS2, Wii и PC (Windows)). Для чтения текстур из LCS/VCS широко распространена программа [[GTA Stories Texture Viewer]] от Aru, для текстур из Manhunt 2 - [[Manhunt 2 TEX Workshop]] от Majestic. |
== Структура == | == Структура == | ||
=== Заголовок коллекции ресурсов === | === Заголовок коллекции ресурсов === | ||
− | 0x00 4b: сигнатура "xet" (для | + | 0x00 4b: сигнатура "xet" (для LCS/VCS) или "TCDT" (для Manhunt 2) |
− | 0x04 4b: 0 (для | + | 0x04 4b: 0 (для LCS/VCS) или 1 (для Manhunt 2) |
0x08 4b: размер коллекции | 0x08 4b: размер коллекции | ||
0x0C 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в CHK) | 0x0C 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в CHK) | ||
Строка 13: | Строка 13: | ||
0x14 4b: количество оффсетов в глобалсекции | 0x14 4b: количество оффсетов в глобалсекции | ||
− | 0x20 1b: всегда 6 ( | + | 0x20 1b: всегда 6 (для LCS/VCS) или количество контейнеров в коллекции (Manhunt 2) |
− | 0x21 | + | 0x21 1b: флаг связанный с приоритетом загрузки и отрисовки на GPU |
− | 0x24 4b: 0 (для | + | -0xCC для катсцен/миссий/внешних скриптов |
− | 0x28 4b: оффсет на оффсет первого контейнера ( | + | -0x01/0x86(PSP/PS2) для всех остальных объектов |
− | 0x2C 4b: оффсет на оффсет последнего контейнера ( | + | 0x22 2b: 0 (для LCS/VCS) |
+ | 0x24 4b: 0 (для LCS/VCS) или оффсет на оффсет первого контейнера (Manhunt 2) | ||
+ | 0x28 4b: оффсет на оффсет первого контейнера (LCS/VCS) или оффсет на оффсет последнего контейнера (Manhunt 2) | ||
+ | 0x2C 4b: оффсет на оффсет последнего контейнера (LCS/VCS) | ||
+ | 0x30 8b: связан с синхронизацией загрузки текстур и адресом 0x21 | ||
+ | -все 0xCC:TexSync включен(остановка конвеера до полного копирования в память,0x21=0xCC) | ||
+ | -все 0x00(PSP,PS2 первый байт-0x01):TexSync выключен(0x21=0x86/0x01) | ||
=== Заголовок контейнера ресурса === | === Заголовок контейнера ресурса === | ||
− | (только для | + | |
+ | (только для LCS/VCS) | ||
4b: оффсет на заголовок текстуры | 4b: оффсет на заголовок текстуры | ||
− | 4b: | + | 4b: оффсет на заголовок коллекции ресурсов |
(общая часть заголовка) | (общая часть заголовка) | ||
4b: оффсет на оффсет предыдущего контейнера | 4b: оффсет на оффсет предыдущего контейнера | ||
4b: оффсет на оффсет следующего контейнер | 4b: оффсет на оффсет следующего контейнер | ||
− | 64b: имя текстуры (до нулевого бита, после | + | 64b: имя текстуры (до нулевого бита) |
+ | 4b: флаг 0x01,необходим для движка(после загрузки в RAM - 0x02) | ||
(только для Manhunt 2) | (только для Manhunt 2) | ||
4b: длинна текстуры | 4b: длинна текстуры | ||
Строка 33: | Строка 41: | ||
4b: неизвестно | 4b: неизвестно | ||
4b: 8 | 4b: 8 | ||
− | + | 2b: количество мип-мап уровней | |
+ | 2b: неизвестно | ||
4b: оффсет на заголовок текстуры (PC версия Manhunt 2) или растр текстуры (PS2 версия Manhunt 2) | 4b: оффсет на заголовок текстуры (PC версия Manhunt 2) или растр текстуры (PS2 версия Manhunt 2) | ||
4b: неизвестно (PC версия Manhunt 2) или оффсет на палитру текстуры (PS2 версия Manhunt 2) | 4b: неизвестно (PC версия Manhunt 2) или оффсет на палитру текстуры (PS2 версия Manhunt 2) | ||
Строка 39: | Строка 48: | ||
=== Заголовок текстуры (PSP LCS) === | === Заголовок текстуры (PSP LCS) === | ||
− | + | ====CHK==== | |
+ | |||
+ | Размер заголока: 16 байт | ||
+ | 4b: unknown 0 | ||
+ | 4b: оффсет на растр | ||
+ | 2b: ширина растра для свиззлинга (у 4х-битной текстуры равно половине ширины растра) | ||
+ | 1b: ширина растра (степень двойки) | ||
+ | 1b: высота растра (степень двойки) | ||
+ | 1b: BPP | ||
+ | 1b: кол-во мип-мапов (включая основную текстуру) | ||
+ | 2b: unknown 0x4504 | ||
+ | |||
+ | ====WRLD==== | ||
− | + | Размер заголовка: 8 байт | |
+ | 16bit: padding 0xAAAA | ||
+ | 4bit: ширина растра (степень двойки) | ||
+ | 4bit: высота растра (степень двойки) | ||
+ | 4bit: кол-во мип-мапов (исключая основную текстуру) | ||
+ | 4bit: BPP | ||
+ | 4b: оффсет на растр | ||
− | + | === Заголовок текстуры (PS2 LCS/VCS) === | |
+ | |||
+ | (только для VCS) | ||
+ | 4b: unknown 0 | ||
+ | 4b: unknown | ||
+ | (общая часть заголовка) | ||
+ | 4b: оффсет на растр | ||
+ | 4b: Параметры растра, где: | ||
+ | <source lang="html4strict"> 8bit: Маска использования свизлинга по мип-уровням | ||
+ | 4bit: Кол-во мип-уровней | ||
+ | 8bit: Глубина | ||
+ | 6bit: Ширина (степень двойки) | ||
+ | 6bit: Высота (степень двойки)</source> | ||
=== Заголовок текстуры (PSP VCS) === | === Заголовок текстуры (PSP VCS) === | ||
+ | ====CHK==== | ||
− | ' | + | Размер заголока: 16 байт |
+ | 4b: unknown 0 | ||
+ | 4b: оффсет на растр | ||
+ | 2b: ширина растра для свиззлинга (у 4х-битной текстуры равно половине ширины растра) | ||
+ | 1b: ширина растра (степень двойки) | ||
+ | 1b: высота растра (степень двойки) | ||
+ | 1b: BPP | ||
+ | 1b: кол-во мип-мапов (включая основную текстуру) | ||
+ | 1b: unknown 0 | ||
+ | 1b: флаг метода unswizzling'а: | ||
+ | 0x45-для 4bit | ||
+ | 0x25-для 8bit | ||
=== Заголовок текстуры (PS2 VCS) === | === Заголовок текстуры (PS2 VCS) === |
Текущая версия на 05:41, 9 декабря 2020
Содержание |
Основные данные
.CHK/.XTX/.TEX - форматы, использующиеся для хранения игровой графики в GTA LCS, GTA VCS и Manhunt 2. Представляют собой коллекцию контейнеров (платформо-независимые), содержащие внутри растровую графику (формат текстур соответствует игровой платформе, т.е. свой для PSP, PS2, Wii и PC (Windows)). Для чтения текстур из LCS/VCS широко распространена программа GTA Stories Texture Viewer от Aru, для текстур из Manhunt 2 - Manhunt 2 TEX Workshop от Majestic.
Структура
Заголовок коллекции ресурсов
0x00 4b: сигнатура "xet" (для LCS/VCS) или "TCDT" (для Manhunt 2) 0x04 4b: 0 (для LCS/VCS) или 1 (для Manhunt 2) 0x08 4b: размер коллекции 0x0C 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в CHK) 0x10 4b: адрес на начало глобалсекции (повторяется) 0x14 4b: количество оффсетов в глобалсекции
0x20 1b: всегда 6 (для LCS/VCS) или количество контейнеров в коллекции (Manhunt 2) 0x21 1b: флаг связанный с приоритетом загрузки и отрисовки на GPU -0xCC для катсцен/миссий/внешних скриптов -0x01/0x86(PSP/PS2) для всех остальных объектов 0x22 2b: 0 (для LCS/VCS) 0x24 4b: 0 (для LCS/VCS) или оффсет на оффсет первого контейнера (Manhunt 2) 0x28 4b: оффсет на оффсет первого контейнера (LCS/VCS) или оффсет на оффсет последнего контейнера (Manhunt 2) 0x2C 4b: оффсет на оффсет последнего контейнера (LCS/VCS) 0x30 8b: связан с синхронизацией загрузки текстур и адресом 0x21 -все 0xCC:TexSync включен(остановка конвеера до полного копирования в память,0x21=0xCC) -все 0x00(PSP,PS2 первый байт-0x01):TexSync выключен(0x21=0x86/0x01)
Заголовок контейнера ресурса
(только для LCS/VCS) 4b: оффсет на заголовок текстуры 4b: оффсет на заголовок коллекции ресурсов (общая часть заголовка) 4b: оффсет на оффсет предыдущего контейнера 4b: оффсет на оффсет следующего контейнер 64b: имя текстуры (до нулевого бита) 4b: флаг 0x01,необходим для движка(после загрузки в RAM - 0x02) (только для Manhunt 2) 4b: длинна текстуры 4b: ширина текстуры 4b: битность тестуры 4b: неизвестно 4b: 8 2b: количество мип-мап уровней 2b: неизвестно 4b: оффсет на заголовок текстуры (PC версия Manhunt 2) или растр текстуры (PS2 версия Manhunt 2) 4b: неизвестно (PC версия Manhunt 2) или оффсет на палитру текстуры (PS2 версия Manhunt 2)
Заголовок текстуры (PSP LCS)
CHK
Размер заголока: 16 байт 4b: unknown 0 4b: оффсет на растр 2b: ширина растра для свиззлинга (у 4х-битной текстуры равно половине ширины растра) 1b: ширина растра (степень двойки) 1b: высота растра (степень двойки) 1b: BPP 1b: кол-во мип-мапов (включая основную текстуру) 2b: unknown 0x4504
WRLD
Размер заголовка: 8 байт 16bit: padding 0xAAAA 4bit: ширина растра (степень двойки) 4bit: высота растра (степень двойки) 4bit: кол-во мип-мапов (исключая основную текстуру) 4bit: BPP 4b: оффсет на растр
Заголовок текстуры (PS2 LCS/VCS)
(только для VCS) 4b: unknown 0 4b: unknown (общая часть заголовка) 4b: оффсет на растр 4b: Параметры растра, где:
8bit: Маска использования свизлинга по мип-уровням 4bit: Кол-во мип-уровней 8bit: Глубина 6bit: Ширина (степень двойки) 6bit: Высота (степень двойки)
Заголовок текстуры (PSP VCS)
CHK
Размер заголока: 16 байт 4b: unknown 0 4b: оффсет на растр 2b: ширина растра для свиззлинга (у 4х-битной текстуры равно половине ширины растра) 1b: ширина растра (степень двойки) 1b: высота растра (степень двойки) 1b: BPP 1b: кол-во мип-мапов (включая основную текстуру) 1b: unknown 0 1b: флаг метода unswizzling'а: 0x45-для 4bit 0x25-для 8bit
Заголовок текстуры (PS2 VCS)
Информация будет добавлена позже...