Перейти к содержимому


Dageron

Регистрация: 20 Dec 2008
Offline Активность: 18 Dec 2012 09:57
*****

#10967 Моддинг LCS и VCS (PSP/PS2)

Написано Dageron 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 непосредственно, если нет, то лучше спросить что не понятно.