ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ:
Что?
Этот проект направлен на то, чтобы стать полным источником обратного проекта Metal Gear Solid Integral PC. Это означает «преобразование» все mgsi.exe в перекомпилируемый исходный код.
Как?
Используя DLL, который загружает игру, тогда можно заменить функции во время выполнения. Игра уже загружает DLL своей свободной воли. Поэтому этот DLL может быть просто заменен кодом, который захватывает точку входа Winmain.
Например:
- Mgsi.exe запускается.
- Его функция Winmain выполняет загрузку на Libeula.dll, чтобы отобразить диалог Eula.
- С тех пор, как этот DLL был заменен нашим кодом, у нас теперь есть загруженный DLL и выполняющий код в содержимое Mgsi.exe
- Отсюда мы можем выполнить нашу замену Winmain (без загрузки Libeula.dll, чтобы избежать рекурсии). И зацепите все функции, которые были повторно внедрены.
Так, например:
void CC Actor_DestroyOnNextUpdate(Actor* pActor)
{
pActor->mFnUpdate = Actor_Destroy;
}
MGS_FUNC_IMPLEX(0x0040A3ED, Actor_DestroyOnNextUpdate, true);
Приведет к тому, что функция в mgsi.exe по адресу 0x0040a3ed вызвать функцию замены actor_destroyonnextupdate. Это позволяет проверять эту единственную функцию без необходимости повторного введения всего до точки вызова.
Почему?
- Знание.
- Моды (знание форматов и рабочих мест в играх, разблокируется это, будет возможно, добавление любых необходимых функций будет возможно).
- Совместимость/исправления (Legacy API может быть удален/заменен, например, использование DirectInput или DirectX7).
- Portablity (при завершении вы можете порт в Linux, OSX, Android, XYZ).
- Особенности (вибрация контроллера может быть восстановлена, исправляя эмуляцию графики PSX, чтобы решить проблемы с Z-борьбой/глубиной).
Что мне нужно/как мне внести свой вклад?
- Полная копия Metal Gear Solid Integral PC.
- Знание сборки C/C ++ и x86.
- Копия последней базы данных IDA.
- Visual Studio (изменится в будущем, когда игра будет полностью изменена и работает автономная, поскольку сейчас необходимо совместимая функции замены MSVC.
- Будьте достаточно сумасшедшими, чтобы взять на себя такой проект.
Чтобы почувствовать, что требуется, хорошей первой задачей будет выбрать простую неверную функцию. Поймите, что он делает, и отправьте пиар, чтобы реализовать его.
Есть IRC/Discord и т. Д.?
Разнообразие здесь: https://discord.gg/ttvhq8w