FAQ:
Apa?
Proyek ini bertujuan untuk menjadi proyek rekayasa terbalik sumber penuh PC integral padat gear metal. Ini berarti "mengonversi" semua MGSI.exe menjadi kode sumber yang dapat dikompilasi.
Bagaimana?
Dengan menggunakan DLL yang dimuat oleh game, maka dimungkinkan untuk mengganti fungsi pada waktu berjalan. Gim ini sudah memuat DLL dari kehendak bebasnya sendiri. Oleh karena itu DLL ini dapat dengan mudah diganti dengan kode yang mengambil alih titik masuk WinMain.
Misalnya:
- Mgsi.exe dimulai.
- Fungsi WinMain -nya melakukan pemuatan library di libeula.dll untuk menampilkan dialog EULA.
- Karena DLL ini telah diganti dengan kode kami, kami sekarang memiliki kode DLL yang dimuat dan mengeksekusi dalam konten mgsi.exe
- Dari sini kita dapat menjalankan bagian WinMain pengganti (tanpa bagian pemuatan libeula.dll untuk menghindari rekursi). Dan mengaitkan semua fungsi yang telah diimplementasikan ulang.
Jadi misalnya:
void CC Actor_DestroyOnNextUpdate(Actor* pActor)
{
pActor->mFnUpdate = Actor_Destroy;
}
MGS_FUNC_IMPLEX(0x0040A3ED, Actor_DestroyOnNextUpdate, true);
Akan menyebabkan fungsi di mgsi.exe di alamat 0x0040a3ed untuk memanggil fungsi penggantian actor_destroyonnextupDate. Ini memungkinkan verifikasi fungsi tunggal ini tanpa harus menerapkan semuanya hingga titik panggilannya.
Mengapa?
- Pengetahuan.
- Mods (mengetahui format file game dan pekerjaan di luar akan membuka kunci ini, menambahkan fitur yang diperlukan akan dimungkinkan).
- Kompatibelitas/perbaikan (API lama dapat dihapus/diganti seperti menggunakan DirectInput atau DirectX7).
- Portablity (saat selesai Anda dapat port ke Linux, OSX, Android, XYZ).
- Fitur (getaran pengontrol dapat dipulihkan, memperbaiki emulasi grafik PSX sehingga masalah-masalah/kedalaman Z diselesaikan).
Apa yang saya butuhkan/bagaimana saya berkontribusi?
- Salinan lengkap PC integral Metal Gear Solid.
- Pengetahuan tentang perakitan C/C ++ dan X86.
- Salinan database IDA terbaru.
- Visual Studio (akan berubah di masa depan ketika gim ini sepenuhnya terbalik dan berfungsi mandiri, untuk saat ini MSVC ABI diperlukan agar fungsi penggantian kompatibel. Tambahan komunitas/edisi gratis baik -baik saja).
- Cukup gila untuk mengambil proyek seperti ini.
Untuk merasakan apa yang dibutuhkan tugas pertama yang baik adalah memilih fungsi sederhana yang belum dibalikkan. Pahami apa yang dilakukannya dan mengirimkan PR untuk mengimplementasikannya.
Adakah IRC/Perselisihan dll?
Perselisihan di sini: https://discord.gg/ttvhq8w