RPF
Материал из GTAModding.ru
Версия от 08:54, 20 июня 2010; Dageron (обсуждение | вклад)
RPF - новый вид архивов, предстатвленных в GTAIV. Rockstar активно используют этот формат и в других своих играх.
В большинстве своем *.rpf
"тотально" использовались в консольных версиях GTA IV, в ПК-версии практически упразднены (однако, консольный и ПК-формат не отличаются).
Список игр, использующих *.rpf
:
Rockstar Games Presents Table Tennis: RPF 0, RPF 1
GTA IV/EFLC: RPF 2, RPF 3
Midnight Club: Los Angelos: RPF 3
Red Dead Redemption: RPF 6
Отличия RPF 0 - RPF 1 и RPF 2 - RPF 3 в том, что четные (0, 2) содержат имена файлов, а нечетные - только хэши имен. RPF 6 содержит хэши и может содержать имена
В настоящее время *.rpf
-архивы версии 2/3 могут быть отредактированы в OpenIV и SparkIV. Ниже приведена структура архивов.
Содержание |
Структура
Заголовок
Все *.rpf
-архивы имеют однотипный заголовок, из которого можно узнать версию архива, количество содержимого и зашифрован ли архив.
4 байта - INT32 - Версия RPF (2: 0x32465052; 3: 0x33465052). 4 байта - INT32 - Размер таблицы содержимого. 4 байта - INT32 - Количество содержимых объектов. 4 байта - INT32 - Неизвестно. 4 байта - INT32 - Параметр зашифровки (если архив не зашифрован, то флаг равен нулю).
Таблица содержимого
Размер таблицы содержимого определяется значением в заголовке архива. Сама таблица начинается после 2048 байт от начала файла, ее шифрование так же зависит от соответствующего значения в заголовке (См. Шифрование (GTA 4)).
Таблица содержит разделы директорий и файлов. Оба раздела отличаются своими структурами.
Раздел директорий
4 байта - INT32 - Оффсет имени (определяет оффсет в таблице названий где находится имя директории). 4 байта - INT32 - Флаги (дает информацию о директории). 4 байта - UINT32 - Индекс (дает информацию о номере в таблице первого файла директории). 4 байта - UINT32 - Количество файлов в директории.
Раздел файлов
4 байта - INT32 - Оффсет имени (определяет оффсет в таблице названий). 4 байта - INT32 - Размер (определяет размер файла). 3 байта - UINT24 - Оффсет (определяет оффсет файла в архиве). 1 байт - UCHAR8 - Тип ресурса (определяет версию ресурса - только для RSC). 4 байта - UINT32 - Определяет сжат файл или нет.
В качестве алгоритма сжатия используется Zlib (без deflate-заголовка).