Файл каталога не найден gta img tool

Обновлено: 21.11.2024

Наиболее часто используемыми архивными файлами GTA являются образы компакт-дисков, известные под расширением .img . Они имеют очень простой формат и в настоящее время существуют в нескольких версиях.

Структура

Формат отражает сектора компакт-дисков, повышая скорость ввода-вывода на носителе. Каждый файл, содержащийся в архиве img, должен быть выровнен по секторам, где размер каждого сектора составляет 2048 байт. Таким образом, значения смещения и размера должны быть умножены на 2048. Это означает, что даже файл размером всего 123 байта займет в архиве 2 КиБ.

Формат разделен на записи каталога, которые содержат информацию о фактических файлах в архиве img, и фактические файлы, которые хранятся (обычно) несортированными, несжатыми и линейными (без дерева каталогов).

Записи каталога должны располагаться в том же порядке, в котором хранятся файлы, и между файлами не должно быть пустых блоков. Это связано с тем, что игра может прочитать более одного файла с помощью одного системного вызова. Если не следовать этому правилу, игра может стать нестабильной.

Версия 1 — GTA III и VC

В этой версии каталог и необработанные файлы хранятся в отдельных файлах, записи каталога хранятся в .dir, а содержимое, указанное каталогом, в самом .img.

Архив каталога ( .dir ) должен иметь то же имя, что и архив .img, за исключением расширения. Архив каталога довольно прост, он не содержит заголовка, просто повторяется следующая структура до конца файла.

Запись в каталоге

Размер 32 байта

Общее количество записей можно найти, разделив размер файла .dir на 32.

Сам файл .img не имеет специальной структуры или заголовка, только все файлы, на которые указывает каталог.

Этот формат также использовался в версии Bully: Scholarship Edition для ПК.

Сжатие

Версии GTA III и GTA Vice City для XBOX используют сжатие lzo1x-999 для файлов TXD и DFF.

Сжатие архива TXD

Поток сжатия lzo использует тот же формат, что и в примерах библиотеки lzo. Он состоит из основного заголовка, за которым следует ряд блоков сжатия. Каждый блок сжатия может иметь произвольный размер, но все они вместе должны соответствовать размеру данных сжатия, указанному в главном заголовке.

Основной заголовок:

Чтобы определить, является ли поток сжатым по схеме "изо", рекомендуется проверить, имеют ли значение магическое число, а также его структура. Простой проверки магического числа может быть достаточно для потоков RenderWare и других форматов, связанных с Rockstar, но на практике это не рекомендуется.

После обнаружения вам необходимо прочитать сжатый поток данных. Это делается путем предварительного чтения заголовка блока.

Заголовок блока + данные сжатия:

Этот заголовок представляет единицу сжатия. Это означает, что данные, которые следуют за этим блоком, должны быть (раз) сжаты с использованием подпрограммы lzo1x_decompress_safe библиотеки lzo. Результирующие распакованные данные произвольно больше, чем их сжатые аналоги, поэтому не используйте выходной буфер фиксированного размера.

Для сжатия данных необходимо разделить входной поток данных на фрагменты и сжать каждый из них по отдельности. Компрессор игр Rockstar разделил данные на непрерывный ряд фрагментов размером 0x00020000 (131072) байт. Делать это рекомендуется, поскольку работа с меньшими временными буферами памяти удобна для памяти. Это также означает, что практически каждая единица сжатия может распаковывать только до 131072 байт в памяти, что позволяет оптимизировать архитектуру.

Вычисление контрольной суммы в настоящее время недокументировано (не требуется для распаковки).

Версия 2 — GTA SA

Появившийся в GTA San Andreas, объединяет записи каталога ( .dir ) и необработанные файлы ( .img ) в один файл .img. Каталог имеет тот же формат, что и в версии 1, но находится в начале архива. Смещения файлов относятся к началу всего архива, а не к концу списка файлов.

Заголовок

Размер 8 байт

За заголовком следуют записи каталога, содержащие информацию о файлах в архиве.

Запись в каталоге

Размер 32 байта

Размер потоковой передачи – это количество фактических секторов, которые файл занимает в памяти. Если размер потоковой передачи равен 0, в качестве размера потоковой передачи будет использоваться размер. Стандартные файлы img никогда не использовали размер потоковой передачи (поэтому всегда 0), считается, что этот механизм будет использоваться для сжатия файлов, но он так и не был запущен в производство.

Основным недостатком этого формата является сложная расширяемость. Если вам нужно добавить много файлов, может случиться так, что вам не хватит места для каталога, и вам придется переместить первый файл(ы) в конец.

Версия 3 — GTA IV

В GTA IV появился еще один формат файла .img.Новый не только формат, но и зашифрованные заголовки архивов (см. ниже). Внутренний синтаксический анализатор IMG игры работает с 2-килобайтными буферами, что означает, что 2-килобайтные границы из более ранних версий (секторов) все еще присутствуют, но необязательны.

Заголовок IMG

Заголовок незашифрованного файла всегда имеет размер 20 байт.

Таблица IMG

Таблица содержит информацию об элементах. Заголовок каждого элемента имеет размер 16 байт.

Длина имени элемента будет рассчитываться следующим образом:

Далее эта строка будет разделена на '\x0'

Тип ресурса определяется значением 4b DWORD:

  • 0x01: общий
  • 0x08: архив текстур
  • 0x20: Границы
  • 0x6E: файл модели
  • 0x24: XPFL

Шифрование

Заголовок и директория (таблица) архивов IMG могут быть зашифрованы. Обычно это происходит, если 4-байтовый идентификатор в начале файла кажется недействительным. Расшифровка выполняется с помощью 16 повторений AES-128 в режиме ECB.

Читайте также: