FAQ:
Quoi?
Ce projet vise à être un projet d'ingénierie inverse à source complète de Metal Gear Solid Integral PC. Cela signifie «conversion» de tous les mgsi.exe en code source recompilable.
Comment?
En utilisant une DLL que le jeu charge, il est alors possible de remplacer les fonctions au moment de l'exécution. Le jeu charge déjà une DLL de son propre libre arbitre. Par conséquent, cette DLL peut simplement être remplacée par du code qui prend en charge le point d'entrée WinMain.
Par exemple:
- Mgsi.exe démarre.
- Sa fonction WinMain fait un chargeur de charge sur libeula.dll afin d'afficher la boîte de dialogue Eula.
- Depuis que cette DLL a été remplacée par notre code, nous avons maintenant une DLL chargée et exécutant du code dans le contenu de mgsi.exe
- De là, nous pouvons exécuter notre WinMain de remplacement (sans la pièce de chargement Libeula.dll pour éviter la récursivité). Et accrocher toutes les fonctions qui ont été réimplémentées.
Ainsi, par exemple:
void CC Actor_DestroyOnNextUpdate(Actor* pActor)
{
pActor->mFnUpdate = Actor_Destroy;
}
MGS_FUNC_IMPLEX(0x0040A3ED, Actor_DestroyOnNextUpdate, true);
Provoquera la fonction dans mgsi.exe à l'adresse 0x0040a3ed pour appeler la fonction de remplacement acteur_destroyonnextupdate. Cela permet la vérification de cette fonction unique sans avoir à refléter tout à son point d'appel.
Pourquoi?
- Connaissance.
- Les mods (connaître les formats de fichiers de jeux et les travaux à l'intérieur out le déverrouilleront, l'ajout de toute fonctionnalité requis sera possible).
- Compatiblilité / correctifs (les API héritées peuvent être supprimées / remplacées telles que l'utilisation de DirectUpt ou DirectX7).
- Portablity (une fois terminé, vous pouvez porter le port sur Linux, OSX, Android, XYZ).
- Les caractéristiques (la vibration du contrôleur peut être restaurée, la fixation de l'émulation graphique PSX afin que les problèmes de combat / profondeur Z soient résolus).
De quoi ai-je besoin / comment puis-je contribuer?
- Une copie complète de Metal Gear Solid Integral PC.
- Connaissance de l'assemblage C / C ++ et X86.
- Une copie de la dernière base de données IDA.
- Visual Studio (changera à l'avenir lorsque le jeu est entièrement inversé et fonctionne autonome, pour l'instant, le MSVC ABI est requis pour que les fonctions de remplacement soient compatibles.
- Soyez assez fou pour entreprendre un projet comme celui-ci.
Pour avoir une idée de ce qui est nécessaire, une bonne première tâche sera de choisir une fonction simple non inversée. Comprenez ce qu'il fait et envoyez un PR pour l'implémenter.
Un IRC / Discord, etc.?
Discord ici: https://discord.gg/ttvhq8w