GTA Vice City > Программирование

GTA VC. Базы данных.

(1/1)

DK:
С выходом Android-версий GTA мы получили чуть больше информации о коде игры.
Имена классов, функций, переменных (почти всех) - ко всему этому мы получили доступ.
Если раньше мы давали функциям и классам "свои" имена (например, настолько привыкшийся CScriptThread), то теперь у нас есть оригинальные названия всего этого.

Различия между Android и PC базами

В первую очеред, это, конечно разная архитектура, и разные команды низкоуровневого кода. Если вы совсем не разбираетесь в ассемблерном коде ARM, может в некой мере спасти ARM-декомпилятор в IDA.

Также не стоит забывать, что разработчики, которые занимались мобильной версией игры, внесли в неё некоторые изменения (это и изменения, связанные с особенностями девайсов (другая файловая система, другой движок аудио, как пример), так и улучшения/исправления оригинального кода игры).
Ещё стоит сказать, что в мобильных версиях используется не Direct3D, а OpenGL версия RenderWare Graphics.

Ну и третье - в базе PC (только VC/III) представлены только те функции, которые действительно используются в игре (неиспользуемые не были добавлены в испольняемый файл компилятором). В базе мобильной версии такие функции могут встречаться.

Перенос названий из Android-версии базы в PC-версию

Описанные выше причины могут затруднить процесс переноса имён. У нас есть имена, но надо же ещё понять, какие функции из PC-базы соответствуют этим именам. Тем более, могут быть функции, которых нету в PC-версии, или же наоборот.
Тут уже нужно применять арсенал комплексных мер - анализ вызовов (ссылок) в двух базах, сравнение псевдокода, и даже порядок (очередность) функций.

Имена функций/переменных в Android-версии базы имеют вид

--- Код: C++ ---_ZN11CTheScripts14LoadAllScriptsEPhjЭто такой вид декорации имён (name-mangling'а). Просто копируем эту строчку и вставляем в название функции/переменной в PC-базе. IDA умеет транслировать такие имена, и в списке функций или в коде декомпилятора мы увидим привычные имена.

maxorator уже перенёс имена почти всех функций в базу PC - правда, речь только о функциях. Имена переменных не перенесены.
Также, некоторые функции сопоставлены неправильно (редкие случаи).
Именно с этой базой я работаю, если речь идёт о Vice City.

База, основанная на базе maxorator'а (15.10.2016)
Android-база Vice City

Shagg_E:
Ого, а поговаривали еще, что в мобилках не RW...
Спс за новую базу для Вайса!

JuGGerNaunT:
Спасибо за базу. А стоит ли надеется на то, что будет выложена обновленная версия?

DK:
В чат-сервере plugin-sdk в Discord публикуются актуальные базы для SA/VC/III (раздел gta-ida-idb).

Навигация

[0] Главная страница сообщений

Перейти к полной версии