RPF — различия между версиями
Материал из GTAModding.ru
Dageron (обсуждение | вклад) |
Reditec (обсуждение | вклад) м |
||
(не показаны 9 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
− | '''RPF''' - новый вид архивов, | + | '''RPF''' - новый вид архивов, представленных в GTA 4 (версии 2 и 3). Rockstar Games активно используют этот формат и в других своих играх. |
− | В | + | В большинстве своем <code>[[RPF|*.rpf]]</code> версии 2 "тотально" использовались в консольных версиях [[GTA IV]] (<code>common.rpf</code>, <code>xbox360.rpf</code>, <code>playerped.rpf</code>). |
− | + | в ПК-версии <code>[[RPF|*.rpf ]]</code> версии 2 практически упразднены (за исключением <code>playerped.rpf</code> и добавленного <code>game.rpf</code>). Поскольку консольный и ПК-формат не отличаются, не раз возникал вопрос о целесообразности возможностей полного редактирования формата публичными версиями программ. В настоящее время <code>[[RPF|*.rpf]]</code>-архивы версии 2/3 могут быть отредактированы в [[OpenIV]] и [[SparkIV]] (из-за чего появлялись читерские модификациии в Xbox Live). | |
− | + | Список игр, использующих <code>[[RPF|*.rpf]]</code>: | |
+ | * Rockstar Games Presents Table Tennis: '''RPF 0''', '''RPF 1''' | ||
+ | * GTA IV/EFLC: '''RPF 2''', '''RPF 3''' | ||
+ | * Midnight Club: Los Angelos: '''RPF 3''' | ||
+ | * Max Payne 3: '''RPF 4''' | ||
+ | * Red Dead Redemption: '''RPF 6''' | ||
+ | * GTA V, Rockstar Games Launcher: '''RPF 7''' | ||
+ | * Red Dead Redemption 2: '''RPF 8''' | ||
+ | Отличия '''RPF 0''' - '''RPF 1''' и '''RPF 2''' - '''RPF 3''' в том, что четные (0, 2) содержат имена файлов, а нечетные - только хэши имен. '''RPF 6''' содержит хэши и может содержать имена. | ||
− | + | Ниже приведена структура архивов версий 2 и 3 (имеющих место в GTA IV). | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | ==Структура== |
− | + | ===Заголовок=== | |
− | + | Все <code>[[RPF|*.rpf]]</code>-архивы имеют однотипный заголовок, из которого можно узнать версию архива, количество содержимого и зашифрован ли архив. | |
+ | |||
+ | 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-заголовка). | ||
− | + | ==Ссылки== | |
+ | [http://sannybuilder.com/forums/viewtopic.php?id=1176 Класс для работы с RPF2 для Delphi] | ||
− | [[Категория:GTA 4]][[Категория:Форматы файлов]] | + | [[Категория:GTA 5]][[Категория:GTA 4]][[Категория:Max Payne 3]][[Категория:Форматы файлов]][[Категория:Моддинг консольных версий]] |
Текущая версия на 16:42, 6 ноября 2019
RPF - новый вид архивов, представленных в GTA 4 (версии 2 и 3). Rockstar Games активно используют этот формат и в других своих играх.
В большинстве своем *.rpf
версии 2 "тотально" использовались в консольных версиях GTA IV (common.rpf
, xbox360.rpf
, playerped.rpf
).
в ПК-версии *.rpf
версии 2 практически упразднены (за исключением playerped.rpf
и добавленного game.rpf
). Поскольку консольный и ПК-формат не отличаются, не раз возникал вопрос о целесообразности возможностей полного редактирования формата публичными версиями программ. В настоящее время *.rpf
-архивы версии 2/3 могут быть отредактированы в OpenIV и SparkIV (из-за чего появлялись читерские модификациии в Xbox Live).
Список игр, использующих *.rpf
:
- Rockstar Games Presents Table Tennis: RPF 0, RPF 1
- GTA IV/EFLC: RPF 2, RPF 3
- Midnight Club: Los Angelos: RPF 3
- Max Payne 3: RPF 4
- Red Dead Redemption: RPF 6
- GTA V, Rockstar Games Launcher: RPF 7
- Red Dead Redemption 2: RPF 8
Отличия RPF 0 - RPF 1 и RPF 2 - RPF 3 в том, что четные (0, 2) содержат имена файлов, а нечетные - только хэши имен. RPF 6 содержит хэши и может содержать имена.
Ниже приведена структура архивов версий 2 и 3 (имеющих место в GTA IV).
Содержание |
Структура
Заголовок
Все *.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-заголовка).