RSC
Материал из GTAModding.ru
Версия от 19:26, 16 апреля 2010; Chipsman (обсуждение | вклад)
Формат
Ресурсные файлы GTA IV имеют следующий формат:
Заголовок
4 байта - Сигнатура RSC (52 53 43 05) 4 байта - Версия ресурса 4 байта - Флаги
Далее следует сами данные ресурса в запакованном формате.
ПК-версия игры использует в качестве алгоритма упаковки - Zlib.
Распакованный ресурс можно разделить на две части - System Memory Segment (CPU) и Graphics Memory Segment (GPU), размером, кратным 256 каждая.
Их конкретные размеры "зашиты" в параметре "флаги" и могут быть вычислены с помощью данного алгоритма:
{Flags - переменная, содержащее соответственное значение}
CPUSize:= (Flags AND $7FF) shl (((Flags shr 11) AND $F) + 8); //расчет размера System Memory Segment
GPUSize:= ((Flags shr 15) AND $7FF) shl (((Flags shr 26) AND $F)+8); //расчет размера Graphics Memory Segment
Для того что бы заменить данные в RSC файле необходимо просчитать размеры CPU и GPU частей (при этом проверив их кратность на 256), а затем вычислить новый параметр флага. Например, это можно сделать данными функциями:
function getCompactSize(size: longword): word; //вспомогательная функция
var
i: word;
begin
Assert(size mod 256 = 0); //не забудьте про проверку кратности на 256
size := size shr 8;
i := 0;
while (size mod 2 = 0) and (size >= 32) and (i < 15) do begin
i := i + 1;
size := size shr 1;
end;
result := ((i and $F) shl 11) or (size and $7FF);
end;
function getFlags(sysSegSize, gpuSegSize: longword): longword; //основная функция
begin
result := (getCompactSize(sysSegSize) and $7FFF)
or (getCompactSize(gpuSegSize) and $7FFF) shl 15
or 3 shl 30;
end;
Версии и типы ресурсов:
Идентификатор | Название | Характеристика | Расширения |
---|---|---|---|
1 | Windows/XENON Animation Dictionary | Анимации (PC и Xbox360) | .WAD .XAD
|
7 | XENON Texture Dictionary | Текстуры (Xbox360) | .XTD
|
8 | Windows Texture Dictionary | Текстуры (PC) | .WTD
|
32 | Bounds | ? (PC и Xbox360) | .WBD .XBD
|
109 | XENON Model | Модели (Xbox360) | .XDR
|
110 | Windows Model | Модели (PC) | .WDR
|
112 | Windows/XENON Model Frag | Модели (PC и Xbox360) | .WFT .XFT
|