Отправлено 20 January 2012 - 14:29
На самом деле они не зашифрованные, просто их структура (с учетом структуры wrld), как говорится, is too complicated).
Для начала следует разделить задачи.
1. Задача первая - получить всю информацию о wrld-файлах, либо извлечь их из *.img/*.lvz "в открытом виде".
2. Задача вторая - получить необходимые данные из wrld-ов (например, текстуры).
Я подробно распишу первый этап, поскольку второй на самом деле очень объемный, с ходу весь процесс не описать.
В общем, допустим у нас есть некоторый *.img-архив и соответствующий ему *.lvz. Не важно, какой именной игры (LCS/VCS) и какой именно платформы (PSP/PS2). Для начала нужно распаковать *.lvz через какой-нибудь zlib-распаковщик и подготовить два файла - распакованный *.lvz и, собственно, *.img-архив.
В *.img де-факто хранятся wrld-ы без заголовков, при этом главная особенность *.lvz состоит в том, что этот файл не только сам является wrld-ом, но и содержит заголовки к wrld-ам из *.img.
Смещаемся в распакованном *.lvz на оффсет 0x24 и читаем следующие четыре байта. Полученное значение - указатель на таблицу заголовков к wrld-ам. Сама таблица - длинный-длинный список. Каждый заголовок занимает 32 байта, т.е. восемь полей по четыре байта. Третье поле - оффсет wrld-а от начала *.img, пятое поле - оффсет внутренней таблицы параметров wrld-а (о ней чуть позже, она пригодится при работе с содержимым непосредственно), седьмое поле - размер wrld-а. Остальные поля нам не нужны.
Далее можно поступить разными способами - либо составить в программе таблицу всех параметров wrld-ов, либо извлечь их "в открытом виде", разрезав *.img по тем параметрам и совместив все полученные фрагменты с соответствующими заголовками (т.е. добавив те самые 32 байта).
Так, если ситуация ясна, то можно приступать к wrld непосредственно, если нет, то лучше спросить что не понятно.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012