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


Фотография

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


Сообщений в теме: 783

#241 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 29 May 2010 - 15:12

solom, ты конечно извини, но из сообщения в в сообщение ты пишешь бред. Еще раз повторяю - текстуры частей авто (а равно как и прочих generic/particle/hud текстур) находятся в не запакованном виде. А именно - они образуют собой список текстур как в обычном .chk-файле, только внутри .dtz. Про это я писал в своем блоге, ссылку давал на краткую характеристику.

Про inflate-заголовок zlib - просто к сведению. Заголовок состоит сигнатуры zlib (первые два байта 0x78DA) и маркер сжатия (третий байт), где определяется режим сжатия - clNone, clFastest, clDefault, clMax. Интересно отметить, что в IV на файлах RPF-архивов inflate-заголовок убран, оставлен только сам сжатый буфер. В Stories ситуация проще - все заголовки на месте.

Кстати говоря, вот вам скрин первых программных набросок Stories Texture Explorer, которую я пишу для продолжения работы над локализацией:
Изображение

Пока полноценная поддержка есть только VCS PS2, выяснилось, что на всех 8-битных текстурах LCS PS2 есть swizzling.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#242 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 07 July 2010 - 21:26

Великая работа! Будете ли вы когда-нибудь релиз ЭТО? --- Sorry for using google translate, I'm learning Russian for 4 years already, but having problems with it.

#243 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 July 2010 - 08:39

Your Russian is rather normal, but as I always mention for all English-speaking visitors of our Russian community, it will be better to speak English (just because practically everybody here can speak and understand English well). If you are interested in GTA VCS Russian localisation (rather interesting way of improving your foreign language understanding skills - playing translated games) - it will be soon, currently I fix minor bugs/spellings. What about LCS/VCS file format researches and description (or content exporting and importing tools) - I have plans to post them, but a bit later (not only here, but on gtaforums.com also). И немного по-русски для всех остальных. Информации по форматам LCS/VCS накопилось достаточно, чтобы постепенно начать это все выкладывать. Весь вопрос - есть ли здесь люди, заинтересованные в этом? На gtaforums не мало народу, которые очень интересуются разбором форматов Stories, так что, возможно, лучше мне сразу все публиковать там. Подводя итоги, немного про степень разбора форматов. Текстуры с сигнатурой tex (хранящиеся в директориях *.chk или *.xtx) - разобраны полностью. Есть алгоритм выстаивания цепочки текстур, чтения всех параметров, импорта и экспорта с учетом специфики каждой консоли. Комплексный файл с сигнатурой GTAG (распакованный zlib-ом game.dtz) - разобран частично, извлечь можно много полезной информации (отдельное спасибо listener-у за то, что прошелся через дизассемблер по загрузчику, качественно назвал поля). В частности, разобрана структура упаковки текстур (в открытом виде и в сжатом). Архивы *.img (GTA3PS2.IMG/GTA3PSP.IMG) - разобраны полностью вплоть до таблицы названий, которая генерируется из распакованного game.dtz. Aрхивы *.img со связкой с одноименным *.lvz - разобраны в большей степени (*.img содержат *.wrld-файлы, заголовки к которым хранятся в распакованных *.lvz, так же в *.lvz могут полностью файлы храниться). Файлы объектов карты с сигнатурой *wrld - разобраны частично, содержат массив моделей с массивом текстур на каждую. Возможен импорт геометрии в 3ds max (rather buggy). В большинстве своем информация не структурирована, и поэтому возникает вопрос ко всем (опять-таки тем, кому интересно) - в каком виде лучше все это описать? Как показала практика, использование в качестве описаний шаблоны 010 Editor, не совсем понятно читателю (здесь все-таки нужны хотя бы азы programming/C++ skill). Хуже, что возникает иногда вопрос с грамотным названием полей - опыта присваивания общепринятых названий полям с определенным значением у меня нет.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#244 solom

solom

    Активный участник

  • Пользователи
  • PipPipPip
  • 267 сообщений
  • Пол:Мужчина


Отправлено 08 July 2010 - 10:26

а когда будет релиз твоей программы Stories Texture Explorer?

#245 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 July 2010 - 12:54

Зачем тебе эта программа? Выкладывать пока что я ее не собираюсь, поскольку работы там достаточно много.

Например, нет просмотра текстура и экспорта в какой-нибудь общепринятый формат графики.
Да и поддержки PSP нет (код swzzling-а я нашел только под С++, надо переписывать).
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#246 Джамбо

Джамбо

    Активный участник

  • Пользователи
  • PipPipPip
  • 136 сообщений
  • Пол:Мужчина

Отправлено 08 July 2010 - 13:14

Dageron
так с помощью какого плагина ты конвертил, и в какой формат сохранять чтобы заменить стандартное радио (не добавлять в функцию "свои саундтреки")

#247 Lego

Lego

    Активный участник

  • Пользователи
  • PipPipPip
  • 343 сообщений
  • Пол:Не определился


Отправлено 08 July 2010 - 13:43

именно с радиостанциями какие-то проблемы, т.к. стандартный AT3 не подходит... как сказано выше, можно посмотреть в hex редакторе, а возможно, просто есть смысл поэксперементировать с разным битрейтом.

едит:
а во всём остальном почитай мою статью


> Файлы объектов карты с сигнатурой *wrld - разобраны частично, содержат массив моделей с массивом
> текстур на каждую. Возможен импорт геометрии в 3ds max (rather buggy).
опа, прикольно... а есть где-нибудь скрины хотя бы или это только предположение?

Сообщение отредактировал Lego: 08 July 2010 - 13:49


#248 XEPOMAHT007

XEPOMAHT007

    Активный участник

  • LCSTeam
  • PipPipPip
  • 472 сообщений
  • Пол:Мужчина


Отправлено 08 July 2010 - 14:42

Deleted

Сообщение отредактировал XEPOMAHT007: 28 October 2012 - 00:59

a4ea86ab343c.gif
BETA 4.0 COMING SOON


#249 Chipsman

Chipsman

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 786 сообщений
  • Пол:Не определился


Отправлено 08 July 2010 - 15:07

блин, реально круто)

#250 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 July 2010 - 15:14

Создание *.dir-файла для тех img-архивов не имеет смысла, поскольку структура *.wrld вполне разбираемая. Если *.img+*.lvz разбивается на *.wrld-ы, то каждый *.wrld еще можно разделить на отдельные файлы (назовем их "world object") со всеми массивами описателей вертексных и геометрических файлов, и, собственно, самой геометрией. Наверное, вы используете другой подход к этим файлам, но на самом деле там все гораздо проще. Геометрия каждого world object может быть действительно импортирована через старый MDL-скрипт, только вот использование вашего "MDL-шаблона" тут необязательно, достаточно просто собрать заголовок *.mdl-подобного файла. Пока что изучать эти файлы и писать какую-либо программу для работы с ними мне не хочется, есть достаточно много других ресурсов Stories, которые либо не разобраны, либо разобраны частично.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#251 XEPOMAHT007

XEPOMAHT007

    Активный участник

  • LCSTeam
  • PipPipPip
  • 472 сообщений
  • Пол:Мужчина


Отправлено 08 July 2010 - 15:33

Deleted

Сообщение отредактировал XEPOMAHT007: 28 October 2012 - 01:00

a4ea86ab343c.gif
BETA 4.0 COMING SOON


#252 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 08 July 2010 - 18:24

It's good that English is accepted there, however I'm really interested in Stories modding, yeah russian localisation might improve my russian :P But it's not just this mod, it's texture editing and mission editing I'd also be interested in but I guess those tools are coming sometime later? Anyway, good luck with this, it's good to see stories modding still not die after all these years.

#253 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 11 July 2010 - 14:48

Проанализировав структуру *.tm2 в принципе, пришел к выводу, что он используется на обеих платформах - PSP и PS2. Режим строения битовой матрицы и палитры практически одинаков. Различие лишь только в наличии/отсутствии и типе swizzling-а.

Графические данные идут блоками в массиве размерности [width*height] в 8-битных текстурах и [(width div 2)*height] в 4-битных. Для конвертирования TIM2 графики в обычную bitmap (т.е. *.bmp) достаточно поправить режим строения битовой матрицы и палитры (и еще дополнительно собрать заголовок). Битовая матрица TIM2 преобразуется в стандартную путем изменения порядка всех элементов массива "строк" на обратный (т.е. все "строки" текстуры должны идти в обратном порядке, это как бы отражение снизу-вверх, ведь в *.bmp изображения содержатся перевернутыми). Для 4 битных текстур в каждом байте дополнительно необходимо поменять местами 4 младших и 4 старших бита (например, делается это через побитовые сдвиги и дизъюнкцию byte:=(byte shr 4) or (byte shl 4);).

Преобразование палитры необходимо только для 8-битных текстур - CLUT1 в CLUT2. Кроме того, каждый цвет занимает четыре байта и находится в BGRA-формате - это значит что для нормального цветового отображения RGBA необходимо поменять первый и третий байт каждого цвета (иначе оттенки будет не те). Для просмотра альфа-канала достаточно каждому цвету RGB присвоить параметр A. Интересно отметить, что в программе aru GTA Stories Texture Viewer по какой-то причине альфа-канал PS2-текстур не просматривался вообще.

Таким образом, сделать в программе просмотр текстуры становится вполне возможно, ведь все-таки использование формата TIM2 для экспорта и импорта не совсем удобно.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#254 Sergeanur

Sergeanur

    Активный участник

  • LCSTeam
  • PipPipPip
  • 270 сообщений
  • Пол:Мужчина


Отправлено 11 July 2010 - 14:49

Почти ничего не понял, но интересно.

GTA Stories ships in...


#255 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 11 July 2010 - 15:04

Так это информация о формате графики и конкретном преобразовании TIM2 в нормальный формат битовой матрицы и палитры. Актуально для всех PS2/PSP-игр, которые и используют в большинстве своем 4-битные и 8-битные изображения. Использовать все время TIM2 как промежуточный формат не удобно - следовательно, нужна декодировка и я изложил ее суть (про swizzling, думаю, особо рассказывать не стоит).
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#256 bykin

bykin

    Участник

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 11 July 2010 - 15:31

что такое дизьюнкция?

#257 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 11 July 2010 - 16:03

Дизъюнкция - логическое сложение (логическое "или", "or").
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#258 Sergeanur

Sergeanur

    Активный участник

  • LCSTeam
  • PipPipPip
  • 270 сообщений
  • Пол:Мужчина


Отправлено 11 July 2010 - 16:24

Так это информация о формате графики и конкретном преобразовании TIM2 в нормальный формат битовой матрицы и палитры.

Ну это я понял. Я же сказал, что почти ничего не понял.

GTA Stories ships in...


#259 bykin

bykin

    Участник

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 11 July 2010 - 16:32

спасибо дагерон и ещё.

Кроме того, каждый цвет занимает четыре байта и находится в BGRA-формате - это значит что для нормального цветового отображения RGBA необходимо поменять первый и третий байт каждого цвета (иначе оттенки будет не те)

т.е поменять их местами т.е до этого был 1 и 3 байт а нужно поменять на 3 и 1 байт?

#260 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 19 July 2010 - 10:03

Несколько слов по поводу локализации VCS. Текст все еще в стадии исправления и вычитки ошибок. Кроме того практически завершена работа над инсталлятором, в который была добавлена функция выбора компонентов локализации. Таким образом пользователь сам сможет выбрать устанавливать ему или нет русификацию текстур и загрузочных экранов (просто некоторым игрокам локализация графического контента может быть не совсем по душе). Начал делать шрифты для LCS. Судя по всему теперь удастся задействовать всю раскладку символов, чего не удалось сделать в VCS. Таким образом появляется возможность оставить некоторые элементы текста на английском (хотя на деле это явно не за чем). Вообще, по ходу работы со шрифтами нашлось несколько интересных файлов по поводу game.dtz. Как известно, я уже давно частично разбирал этот файл и находил в нем сжатые текстурные директории (текстуры шрифта, меню и много текстур радара). Все, что я публиковал по этому поводу, на самом деле не совсем так. Текущая публичная версия моей программы DTZ editor работает с этими сжатыми файлами не совсем правильно и если говорить точнее - некорректна процедура импортирования. Наглядно проверить это просто - взять оригинальный game.dtz, извлечь из него текстуры, изменить их и снова собрать. В подавляющем числе случаев размер измененного файла в сжатом виде превысит размер оригинального и игра зависнет при запуске (поскольку в памяти отводится меньшее число байт). Исправить ситуацию можно либо путем добавления ряда проверок в саму программу, либо путем коренного изменения dtz и пересчета всех указателей (что достаточно затруднительно). При создании game.dtz Rockstar использовали достаточно продвинутый С++ - с многоуровневыми шаблонами. Именно это и затрудняет выведение четкой структуры, поскольку на деле в файле получилось очень много перекликающихся массивов. Полную структуру без реверсинга ps2 executable не вывести (у меня с asm проблемы). Текущая версия моей программы для работы с текстурами в ресурсах LCS/VCS поддерживает просмотр и редактирование PS2-текстур в обычных директориях с сигнатурой "xet" в заголовке полностью (*.xtx, *.chk) и частично - game.dtz. Из-за тех нюансов со сжатыми файлами внутри dtz стоит ограничиться просмотром/редактированием только для несжатых директорий, а для сжатых реализовать только просмотр. И немного по поводу скриптов - именно они, по идее, могут стать приоритетным направлением моддинга LCS/VCS. Типичный scm GTA-скриптинг основывался не на декомпилировании, а на дизассембелировании. Это значит, что при чтении scm-файла выводился текст не с высокоуровневыми конструкциями циклов, а с безусловными переходами. Все это различные вариации goto - jump, jmpf, jmpt, а так же gosub, который подразумевает return. После декомпиляторов кода IV такого рода скриптинг является немного непривычным для меня (да и для других людей тоже в перспективе может стать неудобным) и поэтому возникает идея сделать более сложный декомпилятор с идиомным анализом. Вся проблема в том, что теория декомпилирования с построением абстрактного синтаксического дерева и всеми соответствующими общепринятыми стадиями, достаточно не проста (еще в IV у меня возникали с этим проблемы и вопросы, из-за чего пришлось ограничиться дизассемблером). Единственный известный мне труд по теории - книга "Reverse Compilation Techniques" ("Теория обратной компиляции"), которую мне давал listener. Однако при том беспорядке безусловных переходов в скриптах LCS/VCS читать код "с листа" и ориентироваться в нем достаточно сложно (ведь в оригинале все это были вложенные циклы и условия). Преобразование опкодов в команды бессмысленно, зато может иметь смысл преобразование безусловных переходов в конструкции. Все это, однако, на уровне идеи (пока что). Поэтому и хочу спросить ваше, читатели, мнение.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012



Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных