FAQ:
Was?
Dieses Projekt zielt darauf ab, ein umfassendes Reverse Engineering -Projekt von Metal Gear Solid Integral PC zu sein. Dies bedeutet "Konvertieren" aller mgsi.exe in neu kompilierbare Quellcode.
Wie?
Durch die Verwendung einer DLL, die das Spiel lädt, ist es möglich, Funktionen zur Laufzeit zu ersetzen. Das Spiel lädt bereits eine DLL aus eigenem freiem Willen. Daher kann diese DLL einfach durch Code ersetzt werden, der den WinMain -Einstiegspunkt übernimmt.
Z.B:
- Mgsi.exe startet.
- Seine WinMain -Funktion führt eine Lastlibrary auf liebula.dll durch, um den EULA -Dialog anzuzeigen.
- Da diese DLL durch unseren Code ersetzt wurde
- Von hier aus können wir unseren Ersatz -Winmain ausführen (ohne den Ladungsteil von Liebula.dll, um eine Rekursion zu vermeiden). Und haken Sie alle Funktionen, die neu implementiert wurden.
Also zum Beispiel:
void CC Actor_DestroyOnNextUpdate(Actor* pActor)
{
pActor->mFnUpdate = Actor_Destroy;
}
MGS_FUNC_IMPLEX(0x0040A3ED, Actor_DestroyOnNextUpdate, true);
Erzeugt die Funktion in mgsi.exe unter der Adresse 0x0040a3ed, um die Ersatzfunktion Actor_DestroyonNextUpdate aufzurufen. Dies ermöglicht die Überprüfung dieser einzelnen Funktion, ohne alles bis zu ihrem Rufpunkt neu aufzubauen.
Warum?
- Wissen.
- MODS (Kenntnis der Spieldateiformate und der Arbeiten innen nach außen wird dies freischalten und die erforderlichen Funktionen fügen möglich).
- KOMPATIBLITÄT/FERTUNGEN (Legacy -APIs können entfernt/ersetzt werden, z. B. die Verwendung von DirectInput oder DirectX7).
- Portable (nach vollständiger Verfassung können Sie auf Linux, OSX, Android, XYZ portieren).
- Merkmale (Controller-Vibration kann wiederhergestellt werden, um die PSX-Grafikemulation zu beheben, sodass Zähler-/Tiefenprobleme behoben sind).
Was brauche ich/wie beiträgt ich bei?
- Eine vollständige Kopie von Metal Gear Solid Integral PC.
- Kenntnis der C/C ++ - und X86 -Montage.
- Eine Kopie der neuesten IDA -Datenbank.
- Visual Studio (wird sich in Zukunft ändern, wenn das Spiel vollständig umgekehrt ist und eigenständig funktioniert. Derzeit ist der MSVC ABI erforderlich, damit die Ersatzfunktionen kompatibel sind. Addtionell sind die Community/Free -Editionen in Ordnung).
- Sei verrückt genug, um ein solches Projekt zu übernehmen.
Um ein Gefühl für das zu bekommen, was erforderlich ist, ist eine gute erste Aufgabe, eine einfache nicht umdrehte Funktion auszuwählen. Verstehen Sie, was es tut, und senden Sie eine PR ein, um es zu implementieren.
Irgendwelche IRC/Zwietracht usw.?
Discord hier: https://discord.gg/ttvhq8w