GXT (GTA 3) — различия между версиями
Материал из GTAModding.ru
AleX AciD (обсуждение | вклад) (Новая: Бинарные файлы с расширением <code>.gxt</code> используются для хранения текстовых строк на разных языках (д...) |
Версия 00:13, 5 февраля 2009
Бинарные файлы с расширением .gxt
используются для хранения текстовых строк на разных языках (для каждого языка свой файл). В упрощённом виде файл представляет из себя таблицу, которая содержит наборы пар ключ=значение.
Идентификаторы (ключи) строк хранятся в формате ASCIIZ (строка, завершаемая нулевым байтом). Текстовые строки хранятся в формате ASCIIZ, но, в отличие от идентификаторов, на один символ отводится 2 байта (старший байт всегда равен нулю).
Файл состоит из двух блоков - блока ключей и блока данных (строк), каждый блок начинается с соответствующего заголовка блока.
Блок ключей (идентификаторов)
Блок ключей начинается с заголовка:
00 dword сигнатура "TKEY" (0x59454b54) 04 dword размер списка ключей в байтах (должен быть кратен размеру элемента списка)
За заголовком следует список ключей. Количество ключей равно размеру списка, делённому на размер элемента. Каждый элемент имеет следующий формат:
00 dword смещение строки от начала блока строк (исключая заголовок блока строк) 04 byte[8] идентификатор строки (ключ)
Лишние байты в идентификаторе строки заполняются нулями.
Блок данных (строк)
После блока ключей расположен блок строк, имеющий следующий заголовок:
00 dword сигнатура "TDAT" (0x54414454) 04 dword размер списка строк в байтах (должен быть кратен 4)
За заголовком следуют строки (в неопределённом порядке), расположенные вплотную. Размер блока строк равен сумме размеров всех строк (включая завершающий байт), округлённый вверх до кратности четырём (дополнительные байты заполняются нулями). Таким образом, общий размер таблицы будет также кратен 4 байт.