RSC
#1
Отправлено 09 March 2009 - 09:30
#2
Отправлено 09 March 2009 - 09:35
#3
Отправлено 09 March 2009 - 11:20
Из этих "параметров" как раз и можно узнать размеры сегментов.идентификатор, версию и параметры (что за параметры?)
Замечания по поводу статьи:
Идентификатор - это не "Идентификатор" это версия объекта ресурсов. Например, в xtd и wtd хранится один и тот же объект (ну это не совеем так, но не важно), но разных версий, в xtd была версия 7, а в wtd версия 8. Версии разных ресурсов никак не связаны между собой (например, и у whm /xhm и у wad/xad версиия 1).
RAGE research project, public side: OpenIV (Журнал изменений • План развития) | openFormats
#4
Отправлено 09 March 2009 - 11:31
Можно чуть-чуть поподробнее как это делается?)Из этих "параметров" как раз и можно узнать размеры сегментов.
#5
Отправлено 09 March 2009 - 11:45
Примерно так:Можно чуть-чуть поподробнее как это делается?)
Flags:= // CPUSize:= (Flags AND $7FF) shl (((Flags shr 11) AND $F) + 8); GPUSize:= ((Flags shr 15) AND $7FF) shl (((Flags shr 26) AND $F)+8); TotalUnpackedLength:= CPUSize+GPUSize;
Если ты еще не читал это http://sannybuilder....opic.php?id=433 то почитай.
p.s:
Вот лучше бы вместо того что и так уже сделали что-нибудь бы полезное попробовал исследовать например метаданные для аудио из папки "Grand Theft Auto IV\pc\audio\Config"...Сделал свой распаковщик, но при распаковке у меня получается один сплошной кусок данных без разделителей,
RAGE research project, public side: OpenIV (Журнал изменений • План развития) | openFormats
#6
Отправлено 09 March 2009 - 13:52
#7
Отправлено 09 March 2009 - 15:37
Да, у всех сжатых ресурсов ПК версии zLib, на x360 используется другой алгоритм. Также существуют не сжатые ресурсы (сжат ресурс или нет, определяется из флагов ["параметров"]) но это неважно т.к. они лежат в очень интересном месте (хотя любой ресурс может быть сжатым или нет).Компрессия ведь у всех ресурсов одинакова - zlib?
Сообщение отредактировал GooD-NTS: 09 March 2009 - 15:41
RAGE research project, public side: OpenIV (Журнал изменений • План развития) | openFormats
#8
Отправлено 09 March 2009 - 15:49
У aru в исходниках SparkIV про lzx-компрессию сказано.Да, у всех сжатых ресурсов ПК версии zLib, на x360 используется другой алгоритм.
#9
Отправлено 18 March 2009 - 17:56
Кстати, ты вообще, где это взял? O_O
RAGE research project, public side: OpenIV (Журнал изменений • План развития) | openFormats
#10
Отправлено 18 March 2009 - 18:00
#11
Отправлено 18 March 2009 - 18:06
Потому что это берд (у меня тоже была функция для расчета флагов, и даже побольше чем эта и даже сходилась с оригинальными файлами больше 50%). Но флаги нельзя рассчитать простой (да и сложной тоже
RAGE research project, public side: OpenIV (Журнал изменений • План развития) | openFormats
#12
Отправлено 18 March 2009 - 19:39
Я взял этот код из темы про RSC на gtaF. Привел функцию steve-m, я только разобрался как использовать.
В теме на форумсе - некорректный вариант. Он будет работать в некоторых случаях, но далеко не всегда и не везде.
Относительно корректная функция рассчета флагов занимает порядка 300 строк, и параметром ей передается полный список всех структур в файле (т.к. нужно не только посчитать размеры, но и пересортировать объекты).
Совсем корректный вариант должен делать несколько проходов и брать лучший получившийся результат.
#13
Отправлено 23 June 2009 - 09:51
Все это идеально рабочее в совокупности с xcompress32.dll из Xenon SDK (за что выражается огромная благодарность одному человеку с форума XenTax).
Наверняка возник вопрос по названию - не шутка ли все это? Не шутка - программу и исходник (C#) выкладываю на дропбокс.
Крайне жалко что GooD не видит(. Хотя не знаю понравилось ему это бы или нет - в любом случае все это дальше на публику я распространять не собираюсь. Наоборот, теперь самое время заняться непосредственным строением pgDictionary<grcTextureXenon>. И редактировать xtd мне не особо надо, а вот просмотреть...
#14
Отправлено 19 August 2009 - 19:27
#15
Отправлено 19 August 2009 - 22:23
#16
Отправлено 19 August 2009 - 22:48
Сообщение отредактировал RussianCJ: 19 August 2009 - 22:49
#17
Отправлено 20 August 2009 - 12:27
#18
Отправлено 23 August 2010 - 06:39
Прочитал статью возникло много вопросов.
1.написал програмульку которая выкидывает первые 12 байтов из *.wft
но разархивировать получившийся файл не могу.
2 Не разу не писал проги для чтения бинарников нельзя ли подробнее описать
например не понял что за переменная flag bool?
Посмотрел исходники Dageron
сразу возник вопрос а есть на С++ аналог integer?
исползовал char* но туда пишется из файла не то
char* T; char* Flags; T = new char[3]; Flags = new char[3]; xfile.seekg(4, std::ios::beg); xfile.read(T, sizeof T); xfile.read(Flags, sizeof Flags);
Всё разобрался
Сообщение отредактировал max: 04 September 2010 - 06:00
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных
















