Metal Gear Solid PSX reimpl repo
Go to file
2024-02-13 23:21:55 +00:00
asm/overlays More merges for s11c 2024-02-13 23:21:55 +00:00
build More merges for s11c 2024-02-13 23:21:55 +00:00
src More merges for s11c 2024-02-13 23:21:55 +00:00
um More merges for s11c 2024-02-13 23:21:55 +00:00
.clang-format move .clang-format to root, fix ida types in cleanup script 2022-08-13 06:17:25 -05:00
.gitattributes Line fix #2. 2019-11-14 21:54:59 +01:00
.gitignore Suggest to run uninitializer in cases it will help 2023-11-17 19:40:20 +01:00
appveyor.yml Build VR executable in CI 2023-09-22 22:57:09 +02:00
README.md Raw import s11c 2024-02-12 22:13:47 +01:00

mgs_reversing

This project aims to completely reverse engineer Metal Gear Solid Integral for PlayStation back to C source code which when compiled produces the same assembly code.

At this moment SLPM_862.47/SLPM_862.48/SLPM_862.49 main executables are 100% decompiled. However, even though this is a substantial milestone, a significant amount of work is still left to decompile overlays, clean up already decompiled code and make it all shiftable.

The repository builds or aims to build the following artifacts:

Main executables

SLPM_862.47 (main executable)
Status ✔️ 100% decompiled! The next goals for this artifact are to clean up the decompiled code, find cleaner matches and make it shiftable.
Size 626 KB
SHA256 4b8252b65953a02021486406cfcdca1c7670d1d1a8f3cf6e750ef6e360dc3a2f
Building python build.py
SLPM_862.48 (main executable)
Status ✔️ 100% decompiled! Identical to SLPM_862.47 (main executable).
Size
SHA256
Building
SLPM_862.49 (main executable)
Status ✔️ 100% decompiled! This executable is based on SLPM_862.47 (main executable), but with many small changes, especially around chara/snake_vr (a variant of Snake actor).
Size 616 KB
SHA256 c370f8e41ec8fb78238bfe2ddbfc25a6d37ec8f0972c86ebfde075ecd4ee8dca
Building python build.py && python build.py --variant=vr_exe

Overlays

Metal Gear Solid Integral dynamically loads additional per-stage executable code that is required to play a particular stage of the game. The main executable contains the game engine, as well as the most common actors used throughout the stages.

Overlays on SLPM-86247
Status 🚧 Work in progress.

Individual overlay progress:
Click to expand
abst 46 KB Abstract (Save/Load Menu) Work not started
brf 125 KB Briefing Work not started
camera 54 KB JPEG Photo Menu 🚧 Work in progress
change 12 KB Disc Change 🚧 Work in progress
d00a 122 KB Loading Dock (Cutscene) ✔️ 100% decompiled!
d01a 57 KB Heliport (Cutscene) ✔️ 100% decompiled!
d03a 18 KB Holding Cell (Cutscene) ✔️ 100% decompiled!
d11c 14 KB Communication Tower B (Cutscene) ✔️ 100% decompiled!
d16e 65 KB Underground Base (Cutscene) ✔️ 100% decompiled!
d18a 96 KB Supply Route (Cutscene) Work not started
d18ar 96 KB Supply Route (Cutscene) (RED) Work not started
demosel 16 KB Demo Theater Work not started
ending 40 KB Ending Demo (SCENE 28-1) ✔️ 100% decompiled!
endingr 40 KB Ending Demo (SCENE 28-1) (RED) ✔️ 100% decompiled!
opening 42 KB Opening Demo (SCENE 01-1) ✔️ 100% decompiled!
option 26 KB Options Menu Work not started
preope 25 KB Previous Operations 🚧 Work in progress
rank 139 KB Ranking Screen Work not started
roll 39 KB Staff Roll 🚧 Work in progress
s00a 120 KB Loading Dock ✔️ 100% decompiled!
s01a 137 KB Heliport ✔️ 100% decompiled!
s02a 130 KB Tank Hangar ✔️ 100% decompiled!
s02b 129 KB Tank Hangar ✔️ 100% decompiled!
s02c 132 KB Tank Hangar (Before Contacting Meryl) ✔️ 100% decompiled!
s02d 126 KB Tank Hangar (After Contacting Meryl) ✔️ 100% decompiled!
s02e 132 KB Tank Hangar (After Torture) ✔️ 100% decompiled!
s03a 75 KB Holding Cell ✔️ 100% decompiled!
s03ar 75 KB Holding Cell (RED) ✔️ 100% decompiled!
s03b 66 KB Medical Room 🚧 Work in progress
s03c 84 KB Medical Room Work not started
s03d 101 KB Holding Cell Work not started
s03dr 101 KB Holding Cell (RED) Work not started
s03e 38 KB Holding Cell (vs. Soldiers) ✔️ 100% decompiled!
s03er 38 KB Holding Cell (vs. Soldiers) (RED) ✔️ 100% decompiled!
s04a 94 KB Armory ✔️ 100% decompiled!
s04b 116 KB Armory South (vs. Ocelot) Work not started
s04br 116 KB Armory South (vs. Ocelot) (RED) Work not started
s04c 100 KB Armory South Work not started
s05a 130 KB Canyon Work not started
s06a 127 KB Warhead Storage Building 1F ✔️ 100% decompiled!
s07a 130 KB Warhead Storage Building B1 ✔️ 100% decompiled!
s07b 141 KB Commander's Room Work not started
s07br 141 KB Commander's Room (RED) Work not started
s07c 73 KB Warhead Storage Building B1 🚧 Work in progress
s07cr 73 KB Warhead Storage Building B1 (RED) 🚧 Work in progress
s08a 86 KB Warhead Storage Building B2 Work not started
s08b 133 KB Laboratory Work not started
s08br 133 KB Laboratory (RED) Work not started
s08c 60 KB Corridor ✔️ 100% decompiled!
s08cr 60 KB Corridor (RED) ✔️ 100% decompiled!
s09a 121 KB Caves Work not started
s09ar 121 KB Caves (RED) Work not started
s10a 135 KB Underground Passage Work not started
s10ar 135 KB Underground Passage (RED) Work not started
s11a 87 KB Communication Tower A Work not started
s11b 97 KB Communication Tower Roof Work not started
s11c 65 KB Communication Tower B 🚧 Work in progress
s11d 60 KB Communication Tower A Wall Work not started
s11e 113 KB Communication Tower B Elevator ✔️ 100% decompiled!
s11g 105 KB Communication Tower B Roof 🚧 Work in progress
s11h 97 KB Communication Tower B Roof (vs. Hind D) Work not started
s11i 75 KB Communication Tower Walkway 🚧 Work in progress
s12a 107 KB Snowfield Work not started
s12b 96 KB Snowfield (After vs. Sniper Wolf) Work not started
s12c 95 KB Snowfield (After vs. Sniper Wolf) 🚧 Work in progress
s13a 130 KB Blast Furnace Work not started
s14e 108 KB Cargo Elevator Work not started
s15a 89 KB Warehouse Work not started
s15b 38 KB Warehouse North ✔️ 100% decompiled!
s15c 129 KB Warehouse 🚧 Work in progress
s16a 63 KB Underground Base (1F) ✔️ 100% decompiled!
s16b 10 KB Underground Base (2F) ✔️ 100% decompiled!
s16c 109 KB Underground Base (3F) ✔️ 100% decompiled!
s16d 121 KB Underground Base (Control Room) ✔️ 100% decompiled!
s17a 140 KB Supply Route (vs. REX) Work not started
s17ar 140 KB Supply Route (vs. REX) (RED) Work not started
s18a 133 KB Supply Route (vs. Liquid) Work not started
s18ar 133 KB Supply Route (vs. Liquid) (RED) Work not started
s19a 120 KB Escape Route (Garage) Work not started
s19ar 120 KB Escape Route (Garage) (RED) Work not started
s19b 110 KB Escape Route (Tunnel) Work not started
s19br 110 KB Escape Route (Tunnel) (RED) Work not started
s20a 30 KB Ending Demo (SCENE 28-1) ✔️ 100% decompiled!
s20ar 30 KB Ending Demo (SCENE 28-1) (RED) ✔️ 100% decompiled!
select 8 KB Debug Menu ✔️ 100% decompiled!
select1 721 B Debug Menu Stage Select (s00a-s04c) ✔️ 100% decompiled!
select2 721 B Debug Menu Stage Select (s05a-s09a) ✔️ 100% decompiled!
select3 721 B Debug Menu Stage Select (s10a-s14e) ✔️ 100% decompiled!
select4 721 B Debug Menu Stage Select (s15a-s20a) ✔️ 100% decompiled!
selectd 721 B Debug Menu Demo Select ✔️ 100% decompiled!
sound 1 KB Debug Menu Sound Test ✔️ 100% decompiled!
title 89 KB Title Screen 🚧 Work in progress
Individual overlay SHA256:
Click to expand
abst.bin aed6a6145201850156d251618561487456e1b02d7ce26a40cf1e492b6fa30ec0
brf.bin 95f948d72f4b2dd523c3f60b3e036db2971c5f00b3f69d7dc9b4744c48996286
camera.bin 7e1738af3c3987b5461773cf865da803bac48820000e0e916307f29fa836f388
change.bin d2f0afa4861278774ecc818c19e31420e3b05e96da4313ea048451bfabf780e5
d00a.bin 3dd07b291d5bc6b58a028d012b744d9d2c8023f143474467b0259e5a5603ad0a
d01a.bin 3a8d292f250a80b708a06f3fd41ee0e6b74733390084ef5b163108ba5c8af4a1
d03a.bin 3f3b4350dc263a088c70fa7518844ba8e5ec95a3f705ffbc5a37e6b5ff18f8b1
d11c.bin 86edb16ecdb7319d0ad133687228a808170a50ce36f393c96678f8379c48c746
d16e.bin bf5ab697b6d0415ba63b9aa3aaba28f387f324cd2f1b32eb46f5d3cb253e48ef
d18a.bin c388e19be2811a05075a0da664b5b4264040ecd7e2f6eb6cd761d8e579c35103
d18ar.bin df7d5353a7b3be3d6d0f2550179181de27538c41b65b900c7f4a90068ee9d18a
demosel.bin bbf6a776efcc2631b982f920f2c9247c8b215dd7a1358b3b9f9d76484f7d43d9
ending.bin 321c325577bb05cf68bec689083cbc9f7fc4d0b634776c1e6cad1f464ffb1da3
endingr.bin c8eabac0fa0bde6d7bbbdba97a4b8948c3e6a0c839d2b438705345c392b43c35
opening.bin 87a5e822f5b428376ad36fcd28ebc56f661cf340f0ea059f11489b5f24e85545
option.bin 19e897b855f2e197e62160a8a409d2ff57a6b8588b831722fab9c3aaca324ea0
preope.bin 3176b630b8a3f9d8cb01ed833d78fbe654054a576c1f2da0ed91007dd71bd136
rank.bin 6a5ed242f966a4c60bba7daf9a2ba1c37482825d0786e1d77476e135030753f5
roll.bin dfe3ca728b6e409613ef7a3dc11b48ecaa236d8ba6cd0951ce4321329842beae
s00a.bin 533cb8e9b6ffdcc442c25ba51eb3d83e90cb1ad2831d3870395333398c8402bc
s01a.bin 534f8365ad37dbb5c4753bd1720517fa4d1a92e9008597064e6b30a23dc00a75
s02a.bin ece10d39e1d5bafee5acb4dd970bf83801128b04e4fb24ad31756e5bb4ca754d
s02b.bin 57a66e93a2028e3fb805c97c585fb6cfb5fe76c93fc4b8495ccdb2c03a1de308
s02c.bin 7c0b12187840f60405970364a1f7c73ec96be32c1130b3f9a87ec58f6ea46915
s02d.bin 5fe851426faf64733c1077998f9463b5455c766d3e27c9cdceed38ac338e8542
s02e.bin cd79cd79a00e18bd5d323b0b8e153b4e8fe5548b6e0ea68f36d13f190eca0477
s03a.bin c42bba970bdc968ee48b572efb03c41f15869cfc00d6aa0d7c8106487534f580
s03ar.bin f34b46313625005b6aef5006b184556c4dd8f13e97a3b0c346f0f4fc7b9fbf04
s03b.bin cd728e144c960e7419d389c81802d3de73c00a2f31e9bfd7eea33ed3ed2be083
s03c.bin cc3b95638684f6f0a6cbcf9b0436fbc7b545ca0eeb0e6e60d6c4d0646dbc7fb4
s03d.bin f9fa0f39352d3305b5cb2bd6c292297d4f351387b0038a27ccec29f42150d903
s03dr.bin fa785a857655809ccf984d8c8ada626addbadfd11db31b34ef496ddce225ade1
s03e.bin af0e15b223431977c2ad233596c37a51c0367da6470c1b760d3f211eb82e894c
s03er.bin b1e60c25c0ee92e8c347b7f6a51b2e3fdb10d9ea33a2a77e1acbd8bfc7367114
s04a.bin 59b541a13b987478d6717643c3c146018b070fe374ffae0eaaf3f9a8bdc2ffb6
s04b.bin bca0c362260565051a8d41ffc49d3b9ae84d1bc9dc758164ea019cae82de7fa7
s04br.bin 3ceb35994af2c7da7955ab356cbbb7471c749ff6788ecdfbffab1c5679bb4f9b
s04c.bin 5e6bc0c9b13f009c69c2ebdfb401fe9d55a6cd6ee8610cbdd95ee9f3dd71f32a
s05a.bin fd08923d1e1ad01b8638f7e8f4a101e270a5f399f3d1afed47abca7532a8c081
s06a.bin 766d25f927a1116d565f97479786a42b93a275398310f775304668ec191a47e7
s07a.bin 20cb960a5d97e0b60c030ed0c17eea78bf6d7e0f5dc50945828e8c2106612546
s07b.bin bbe527b3883ad7c41e4999a8b1d49e64265100b7d8ff6a7724e3fce5d6fb7328
s07br.bin 04007a426525216049196b550e22fc0e922c75f78c6fcfc4b469f9d5defbbc47
s07c.bin 03904064a3d2d2bcd83f719cf7de0d780886ebeae5645dcc7e345acd7fe8cba1
s07cr.bin e3c3503599693be3d3729e0bfc09d364de85b46520eff3909b822a14a7dadfbd
s08a.bin 56a0d3aa551dd6eefda902497c3f0a90c458b4ab0a54b9a63b7fe3298606d4c9
s08b.bin 21c5534dd17e5579404b2b0b2f3c47fb324b27a363a108669e3818a3dee15ded
s08br.bin 064e8dbb2af7589a7122f02a51e202d43fd3e9bf05aa18258c5cd88621a2d69c
s08c.bin 5badd1f304a57a3e55af6d5fe15694c51398c602779a31ee2b7276ad9f9aafbb
s08cr.bin 1521588d917c0558839f915191ed5b643fba37a7d1fa4dc228951b433e1070c9
s09a.bin 4c698b375890c793c3622d410bffab7db48c01cfff393f458cd5712e316a7177
s09ar.bin 362fbe4c139197907498e38a1f56e403fe39b4a0217d34bfcf49cf86e86cb76b
s10a.bin 95f9cb0d5def5f30bb2133c0452b3aa49438f56c95535178d61eb11a03bb2e6e
s10ar.bin 465959ab31568740a4bf30bf0958865e485e48538e449a6b3c696c5fd7d52f69
s11a.bin 70be6cf00267ed663e29ce6b9598396e8fb7c60024b76ff86508244c56d39bf6
s11b.bin 280920ec9559d0c836bab8995de902f227759bb7430025a650f7c20633889f51
s11c.bin e49fbd3c76f8137fe4414699c7816143ea6c83c3dd1f8c44db9f1bd007e5ceec
s11d.bin b7e8487718b1c3dd835b3b71b785acc367469f5c84e7834d2b91518dc17da21e
s11e.bin 8400e639567b380f28320ccfc5d624b6aa16f8dafa80fdc212976ab386014a9a
s11g.bin 60c1e1882b4d9df99478a117a9bfb0d20eb58f4f37305aa46bb1658cf2761eb7
s11h.bin de8b36f6bdeb9871b28bf53c2fd13f3f53d836cadcf26fe735358e42151a478b
s11i.bin 706e9fa4b2b2288b6967cc0e519a109f0d2fd6da01dc190996f331b28e3f57e9
s12a.bin e99681d93e10f8cb1fd9fa0ae694bb1f5a517b18a42f8791d0df58feccdd2e1d
s12b.bin 7f7e125ea50101399608c859611515df3fb6f04c87ccfdcb10521d86a5aff71a
s12c.bin 3e22cf0791fffbef348149ba97e65b9d147488cb45992a1dd84e343414948cf1
s13a.bin 3af85549577319540e53c789f8a20fd10d8b080f74b309a3c6e966b453b75544
s14e.bin 0ad69a93f9aadf2e7b0b254cf6d39ad16c118d0af9686609b9df8ebcbed8986a
s15a.bin ab3bf00937e226119c4649e9aa5db7f24e4aab844cb550c752bc3ce1a06f735e
s15b.bin 5ab64d6c10801c11b0f672cbb4e68ab62ef1bf058944f5c3d32dbd073e3c8501
s15c.bin 7a6d398f600f359a04b8d9fcb7c006fdc888f4fcbdffd761e09ef4a932195483
s16a.bin 1bec05b1d61f2f5b6abffa1903abcea0ab9e5f4ddebb88ac64506c81548e6ccb
s16b.bin 811a2aa5d5cd7ba8673f3ca9cc3a89f07c8ac9e1f3f5843fed311557ebc0b9f6
s16c.bin 8217a2be487140af5bbded5f0dc37ab8cabedaf9af99d16256650ce27a8a5b50
s16d.bin c37c642eb06d7ec39364e4a1fac17e606804eee229e047102d4a2e93346e773f
s17a.bin a6b691ff0be4af526fb856847be0549dbe015b31b7fb137a1fbbe6027125d4d1
s17ar.bin a6b691ff0be4af526fb856847be0549dbe015b31b7fb137a1fbbe6027125d4d1
s18a.bin 4f605b802aef5c69ce4cc875165d41139acde9af1e9fdf419d0e4cee2bc7087e
s18ar.bin 17d33d059f09a7470b2e6f44efc2469f52f7ff74093542ffb4cdf52a5aa6c79d
s19a.bin 48390084a9a716bef980627c57df1867763a6502ad5109d2a6b3712e652840d7
s19ar.bin ef64d5fdb5e8285116ee2f8c693bc20f9af802dc6c16996f815d8823127352e6
s19b.bin d757942aca5d36ab95741801de1f68526c3a8e128018814f25655b7d72a7c249
s19br.bin 3d2d7c04d13dd3f55a97348f74eaf891615cfa203812d15494b53f9e570fe2bd
s20a.bin d14fdf0f3b5c98f72fd9f24fd119cdf88660528930ec784dc3d021b92e796925
s20ar.bin 4d6fee8a574d6b900eadff3925f2a38516c2d28784d6e38444ce6c9ece46e104
select.bin 10350d22ceb73b58224a2da9cc71a87380415e304b4c161a787b491162636bc9
select1.bin 6b101068fb3d41d9d634256f21cb094e13f331ed9fbbdb271be2a01ec631c145
select2.bin 6b101068fb3d41d9d634256f21cb094e13f331ed9fbbdb271be2a01ec631c145
select3.bin 6b101068fb3d41d9d634256f21cb094e13f331ed9fbbdb271be2a01ec631c145
select4.bin 6b101068fb3d41d9d634256f21cb094e13f331ed9fbbdb271be2a01ec631c145
selectd.bin 6b101068fb3d41d9d634256f21cb094e13f331ed9fbbdb271be2a01ec631c145
sound.bin 4173d0fcbc7bfcd477d2e0fa6810b509bf6392efb01fd58a7fa114f003849816
title.bin fb97721e30fd55cf6251e446d6e7d38e951049ec4703301da7fef7fe9c1afa6b
Overlays on SLPM-86248
Status Identical to SLPM-86247 overlays.
Overlays on SLPM-86249
Status Work not yet started.

Individual overlay progress:
Click to expand
camera 54 KB JPEG Photo Menu Work not started
movie 120 KB Extras Menu Work not started
opening 26 KB Opening Movie Work not started
option 24 KB Options Menu Work not started
photo_m1 77 KB Photo Mode: Mei-Ling (Unused) Work not started
photo_m2 77 KB Photo Mode: Mei-Ling Work not started
photo_n1 65 KB Photo Mode: Naomi (Unused) Work not started
photo_n2 65 KB Photo Mode: Naomi 1 Work not started
photo_n3 63 KB Photo Mode: Naomi 2 Work not started
select 9 KB Debug Menu Work not started
selectvr 137 KB VR Missions Menu Work not started
sound 2 KB Debug Menu Sound Test Work not started
vab_cfr 132 KB 1 Min. Battle vs. Target: C-4
1 Min. Battle vs. Enemy: C-4
Work not started
vab_clm 132 KB 1 Min. Battle vs. Target: Claymore
1 Min. Battle vs. Enemy: Claymore
Work not started
vab_fms 132 KB 1 Min. Battle vs. Target: FA-MAS
1 Min. Battle vs. Enemy: FA-MAS
Work not started
vab_grn 139 KB 1 Min. Battle vs. Target: Grenade
1 Min. Battle vs. Enemy: Grenade
Work not started
vab_nkt 136 KB 1 Min. Battle vs. Target: Nikita
1 Min. Battle vs. Enemy: Nikita
Work not started
vab_psg 132 KB 1 Min. Battle vs. Target: PSG-1
1 Min. Battle vs. Enemy: PSG-1
Work not started
vab_scm 135 KB 1 Min. Battle vs. Target: SOCOM
1 Min. Battle vs. Enemy: SOCOM
Work not started
vab_stg 132 KB 1 Min. Battle vs. Target: Stinger
1 Min. Battle vs. Enemy: Stinger
Work not started
vab_sud 136 KB 1 Min. Battle vs. Target: No Weapon
1 Min. Battle vs. Enemy: No Weapon
Work not started
vcd_n01 151 KB Ninja Level 01 Work not started
vcd_n02 148 KB Ninja Level 02 Work not started
vcd_n03 149 KB Ninja Level 03 Work not started
vcd_n04 79 KB Variety Level 11: "The Truth is Over There" Work not started
vcd_n05 122 KB Variety Level 12: "Genetic Monster Genola"
Variety Level 13: "The Revenge of Genola"
Work not started
vcd_n06 74 KB Variety Level 09
Variety Level 10
Work not started
vefgh_01 142 KB Puzzle Level 04
Mystery Level 01
Vs. 12 Battle Level 01
Work not started
vefgh_02 139 KB Puzzle Level 05
Mystery Level 08
Vs. 12 Battle Level 02
Work not started
vefgh_03 141 KB Variety Level 07
Mystery Level 05
Vs. 12 Battle Level 03
Work not started
vefgh_04 149 KB Puzzle Level 06
Mystery Level 07
Vs. 12 Battle Level 04
Work not started
vefgh_05 152 KB Puzzle Level 07
Mystery Level 03
Vs. 12 Battle Level 05
Work not started
vefgh_06 146 KB Variety Level 08
Mystery Level 06
Vs. 12 Battle Level 06
Work not started
vefgh_07 145 KB Puzzle Level 08
Mystery Level 09
Vs. 12 Battle Level 07
Work not started
vefgh_08 146 KB Puzzle Level 09
Mystery Level 04
Vs. 12 Battle Level 08
Work not started
vefgh_09 145 KB Puzzle Level 10
Mystery Level 02
Work not started
vefgh_10 137 KB Mystery Level 10 Work not started
vijkl_01 127 KB VR Mission Stage 01
Variety Level 04
NG Selection Level 03
Work not started
vijkl_02 134 KB VR Mission Stage 04
Variety Level 02
NG Selection Level 04
Work not started
vijkl_03 133 KB VR Mission Stage 02
Variety Level 06
NG Selection Level 05
Work not started
vijkl_04 140 KB VR Mission Stage 03
Variety Level 03
Puzzle Level 03
Work not started
vijkl_05 140 KB VR Mission Stage 05
Variety Level 05
NG Selection Level 06
Work not started
vijkl_06 138 KB VR Mission Stage 06
Puzzle Level 01
NG Selection Level 07
Work not started
vijkl_07 142 KB VR Mission Stage 07
Puzzle Level 02
NG Selection Level 08
Work not started
vijkl_08 128 KB VR Mission Stage 08
Variety Level 01
Work not started
vijkl_09 128 KB VR Mission Stage 09
NG Selection Level 01
Work not started
vijkl_10 134 KB VR Mission Stage 10
NG Selection Level 02
Work not started
vr_cfr01 130 KB Weapon Mode: C-4 Level 01
Advanced Mode: C-4 Level 01
Work not started
vr_cfr02 143 KB Weapon Mode: C-4 Level 05
Advanced Mode: C-4 Level 02
Work not started
vr_cfr03 130 KB Weapon Mode: C-4 Level 02
Advanced Mode: C-4 Level 03
Work not started
vr_cfr04 139 KB Weapon Mode: C-4 Level 03
Advanced Mode: C-4 Level 04
Work not started
vr_cfr05 132 KB Weapon Mode: C-4 Level 04
Advanced Mode: C-4 Level 05
Work not started
vr_clm01 132 KB Weapon Mode: Claymore Level 01
Advanced Mode: Claymore Level 01
Work not started
vr_clm02 132 KB Weapon Mode: Claymore Level 02
Advanced Mode: Claymore Level 03
Work not started
vr_clm03 132 KB Weapon Mode: Claymore Level 05
Advanced Mode: Claymore Level 02
Work not started
vr_clm04 132 KB Weapon Mode: Claymore Level 03
Advanced Mode: Claymore Level 04
Work not started
vr_clm05 146 KB Weapon Mode: Claymore Level 04
Advanced Mode: Claymore Level 05
Work not started
vr_fms01 130 KB Weapon Mode: FA-MAS Level 01
Advanced Mode: FA-MAS Level 03
Work not started
vr_fms02 132 KB Weapon Mode: FA-MAS Level 02
Advanced Mode: FA-MAS Level 02
Work not started
vr_fms03 132 KB Weapon Mode: FA-MAS Level 05
Advanced Mode: FA-MAS Level 01
Work not started
vr_fms04 139 KB Weapon Mode: FA-MAS Level 04
Advanced Mode: FA-MAS Level 04
Work not started
vr_fms05 146 KB Weapon Mode: FA-MAS Level 03
Advanced Mode: FA-MAS Level 05
Work not started
vr_grn01 137 KB Weapon Mode: Grenade Level 01
Advanced Mode: Grenade Level 01
Work not started
vr_grn02 143 KB Weapon Mode: Grenade Level 02
Advanced Mode: Grenade Level 02
Work not started
vr_grn03 137 KB Weapon Mode: Grenade Level 05
Advanced Mode: Grenade Level 03
Work not started
vr_grn04 137 KB Weapon Mode: Grenade Level 04
Advanced Mode: Grenade Level 04
Work not started
vr_grn05 137 KB Weapon Mode: Grenade Level 03
Advanced Mode: Grenade Level 05
Work not started
vr_nkt01 137 KB Weapon Mode: Nikita Level 02
Advanced Mode: Nikita Level 01
Work not started
vr_nkt02 137 KB Weapon Mode: Nikita Level 03
Advanced Mode: Nikita Level 02
Work not started
vr_nkt03 137 KB Weapon Mode: Nikita Level 04
Advanced Mode: Nikita Level 04
Work not started
vr_nkt04 150 KB Weapon Mode: Nikita Level 05
Advanced Mode: Nikita Level 05
Work not started
vr_nkt05 137 KB Weapon Mode: Nikita Level 01
Advanced Mode: Nikita Level 03
Work not started
vr_psg01 130 KB Weapon Mode: PSG-1 Level 02
Advanced Mode: PSG-1 Level 01
Work not started
vr_psg02 132 KB Weapon Mode: PSG-1 Level 03
Advanced Mode: PSG-1 Level 02
Work not started
vr_psg03 132 KB Weapon Mode: PSG-1 Level 05
Advanced Mode: PSG-1 Level 03
Work not started
vr_psg04 132 KB Weapon Mode: PSG-1 Level 04
Advanced Mode: PSG-1 Level 04
Work not started
vr_psg05 133 KB Weapon Mode: PSG-1 Level 01
Advanced Mode: PSG-1 Level 05
Work not started
vr_scm01 137 KB Weapon Mode: SOCOM Level 02
Advanced Mode: SOCOM Level 01
Work not started
vr_scm02 137 KB Weapon Mode: SOCOM Level 04
Advanced Mode: SOCOM Level 02
Work not started
vr_scm03 137 KB Weapon Mode: SOCOM Level 01
Advanced Mode: SOCOM Level 03
Work not started
vr_scm04 137 KB Weapon Mode: SOCOM Level 05
Advanced Mode: SOCOM Level 04
Work not started
vr_scm05 137 KB Weapon Mode: SOCOM Level 03
Advanced Mode: SOCOM Level 05
Work not started
vr_stg01 132 KB Weapon Mode: Stinger Level 01
Advanced Mode: Stinger Level 01
Work not started
vr_stg02 132 KB Weapon Mode: Stinger Level 02
Advanced Mode: Stinger Level 03
Work not started
vr_stg03 132 KB Weapon Mode: Stinger Level 03
Advanced Mode: Stinger Level 04
Work not started
vr_stg04 132 KB Weapon Mode: Stinger Level 05
Advanced Mode: Stinger Level 02
Work not started
vr_stg05 140 KB Weapon Mode: Stinger Level 04
Advanced Mode: Stinger Level 05
Work not started
vr_sud01 124 KB Sneaking Mode: No Weapon Level 01
Sneaking Mode: SOCOM Level 01
Work not started
vr_sud02 124 KB Sneaking Mode: No Weapon Level 02
Sneaking Mode: SOCOM Level 02
Work not started
vr_sud03 124 KB Sneaking Mode: No Weapon Level 03
Sneaking Mode: SOCOM Level 03
Work not started
vr_sud04 124 KB Sneaking Mode: No Weapon Level 04
Sneaking Mode: SOCOM Level 04
Work not started
vr_sud05 126 KB Sneaking Mode: No Weapon Level 05
Sneaking Mode: SOCOM Level 05
Work not started
vr_sud06 135 KB Sneaking Mode: No Weapon Level 06
Sneaking Mode: SOCOM Level 06
Work not started
vr_sud07 124 KB Sneaking Mode: No Weapon Level 08
Sneaking Mode: SOCOM Level 08
Work not started
vr_sud08 127 KB Sneaking Mode: No Weapon Level 10
Sneaking Mode: SOCOM Level 10
Work not started
vr_sud09 124 KB Sneaking Mode: No Weapon Level 12
Sneaking Mode: SOCOM Level 12
Work not started
vr_sud10 149 KB Sneaking Mode: No Weapon Level 15
Sneaking Mode: SOCOM Level 15
Work not started
vr_sud11 130 KB Sneaking Mode: No Weapon Level 11
Sneaking Mode: SOCOM Level 11
Work not started
vr_sud12 142 KB Sneaking Mode: No Weapon Level 07
Sneaking Mode: SOCOM Level 07
Work not started
vr_sud13 149 KB Sneaking Mode: No Weapon Level 13
Sneaking Mode: SOCOM Level 13
Work not started
vr_sud14 135 KB Sneaking Mode: No Weapon Level 09
Sneaking Mode: SOCOM Level 09
Work not started
vr_sud15 124 KB Sneaking Mode: No Weapon Level 14
Sneaking Mode: SOCOM Level 14
Work not started
vrsave 67 KB VR Save Menu Work not started
vrtitle 100 KB VR Title Menu Work not started
Individual overlay SHA256:
Click to expand
camera.bin 33d5e225f34814ddc827e918a88e70535345c79cd77ec4ea5e9336c68cb00684
movie.bin ddd1d8c812047388808d3210c871046b312f555333d175d93ad1440990735c70
opening.bin a2a0751df48357df4bac6a73aa28da1450d8eff63ea83dfb6bbcdd81fa2ab344
option.bin 40e504e60c0e6857726f771c9df358481bd89f63d5c0892b0937a13d6d36fe9a
photo_m1.bin 4d09f9a89f5e6167de88f9e362619d83909d6ac1ed8b2985ea36b1af1a198a7f
photo_m2.bin d7c3279543cc5fe309c214f4ea3c93046900ab162ead4a41bea3db5ee08632f5
photo_n1.bin 634b2486063085bb750584c7c5e54d7998ba2bc26bbdf1579eb6ae68b6a76a92
photo_n2.bin 2e4f3bbfe6df592b509d06758d23adf074cb381df8f8eee867bf391bdee56bef
photo_n3.bin 5c9242a42230ebcee099c57f64b3235d0474bbe7b9138e1834c073fe639c178e
select.bin fa8eec2a95979ba4bf68755a454ec91d3e723ff1ac2e75fd2ceca00b22a50296
selectvr.bin 87ab9c17a99c65be6dfb59aad35006e58940c2b9f2dea70a0a1e50088b6685c0
sound.bin bc0abafb4604a8fc1346a63e10a0587bc7df602a9fd4b90f9e6c5c0b847ac188
vab_cfr.bin bba8bb118b6bdb277102093b722a065096dd2d209c294f1a3625a9448fbd3be5
vab_clm.bin c18ea33776c7e7dbaa9e32bdc4cf511d21a538928c139099aaa530c5e53653db
vab_fms.bin d08a363fd0dd5485d5464d4313cc80e3ca57604488a77fb1178f93a05b275a64
vab_grn.bin 5f73014818a27f171768ed15c4864898c0824d771c7377b2f2b6d8095b56e4cf
vab_nkt.bin 446ad3f771830407687b90c27d62a29697a9fc4b51e1af892fce1c331770ab10
vab_psg.bin 6db9f9ad67d483c9ed657334ce59d64fed44c05e5c52b0ace0f905bebf72689e
vab_scm.bin 2627939f2b8d7d47f9db14de3858d1241ba1afa3cc61ab73dbc7dc632d67906b
vab_stg.bin 554e33f490619c209100dae7569475981a102792ea276382219900af2106238d
vab_sud.bin a620f6487a2d70006821dec85a98b1db47a6d1e4369bdd0046464284a6d785f8
vcd_n01.bin be4b2de7ef90ce39c274b2ae76218c89b305e3aea89aea623dd91afad0089553
vcd_n02.bin 68bb72a036bd161e244b41b94f16b191651dc880dc76679ccc5a1c93af777077
vcd_n03.bin 7e008ade3a8581fd26932a9c2fe242f640ba690d1f98f322f720354ec0085ba4
vcd_n04.bin c4bee50f02d34a8e33b96ff3adb16bdfadff452994e1e66c4eec8129543bf9e0
vcd_n05.bin 179de4726e44e0ad48d53110ff9e6ec90240cd7f8463ba8db0ed80ed29586c07
vcd_n06.bin 858009f054adde758cab468ba2f5e8300f769cdada6bd1edc96e3793d1ff9e8b
vefgh_01.bin c7047e1f5ebfde0eac28f162513908089ceecfb75dcdded16a700a97c21f1585
vefgh_02.bin 9f5d966a1222959bab1dd407c5aff3c6da3add4fa5c322b12c0c40ba8ba3b4ce
vefgh_03.bin 0b37518d03ce54c1949704fe2da2c9b91b20c2c527e17721bc3974068786841b
vefgh_04.bin 4351fd981685d1091c3cc3b1823546a3712ea82ffc483094b657a16caeb3a2b8
vefgh_05.bin c5830e751c1212f22642ca6bef1924820e6227c211e809650c662ef6cf0a3a2d
vefgh_06.bin 1d55f7f595ccd75ccfe6b90ebc609c19cb6d96433d49f989986a2d6429a2b69d
vefgh_07.bin c98097a8c4eb3d2d80a71fbb1ad7d733df80325f05dd7ffa052f5c30ddf71037
vefgh_08.bin 82e5b69300536168746f5e2e0cb4ef19ee26da91b4ad5ddd404c82f06bf3e09f
vefgh_09.bin b8f2e33ec4d276ecb1c8bf7d719fe84565c079b71c09a2f029f3cdfd32dc4869
vefgh_10.bin eadc2f458b77b3f4e9781370cc98bdd328d83fd165ff858c1ce4cecb55c65bdd
vijkl_01.bin dd17d6ba16892cd1449e71ad5a59ab70c9376c101bc8e997b9a8fead46c2aec0
vijkl_02.bin 7b19973b2065cc98e0cc2b869c1820edfc99487ea9e43898a4152dfcadd5a944
vijkl_03.bin 076c639788354d4f878b5eae5b3363658da2caa7b9397f07fc6c8a81bad9ba99
vijkl_04.bin 4cf844a8b046386e1644256b6fecc8b67d8561823d3783e506d97cdb2acdd4e5
vijkl_05.bin f6be0ff2fb5a3388f6d3b397d5291f5ef1f7651f2ea0e05894f1cc86bdf3de70
vijkl_06.bin a6ac21344d324ab30f7d16edbebeb48f1d060d7666b7fae8db65510b147781b3
vijkl_07.bin 758d1cf801ea0a31b1d82a57ae553d951e326eed6d49e7871dec0f4a5a20fd82
vijkl_08.bin f48fcad8a8ffeb5ec00f98b43700d46fcfe073f0a1b459b48c392ede5b9930e2
vijkl_09.bin 64522c4d342bdb7ee149c14d5d30393bd78bb0ba93a3d40a9b718d4c0eda338f
vijkl_10.bin d09418e47278fc5d2a96c791be97a0d231391b24d20972ce83a5775bc1d5eee7
vr_cfr01.bin e3540697d18e36e02328d53779eb3c3c8adcd842615fcf9a9d69993b80e402a2
vr_cfr02.bin 9757d956ea9aad5a4cd7625ef23a36bab0d914526e0d9178eed13bd1ba2fe9e6
vr_cfr03.bin c4c5f7dea2cf0409f3ae603e805a9c50628094091da7fc607e1188003ae5f181
vr_cfr04.bin 20f73d6c77a8ecf7585dcb1d13abab74887feaca20a7b720efb3e5cf1c2de9b1
vr_cfr05.bin 8d9a2c0bec8bd8e892ce8aa08e373ecd38a2e5c1351eb6fc517e2d72a82f92e8
vr_clm01.bin 0d06593a1ee1ae3f5b72de9c18b6f58fe3ecb0b00e8ac7c4f422d4eb91d6f308
vr_clm02.bin 8967cbc3c9c808a69a4b5654022209e008bfbf6e0bcfe8f6c41aecf58660ad8d
vr_clm03.bin b1b340104058235bd3c25d2f3871bcd2eb026115c681c17d5cac357e6d3f7c22
vr_clm04.bin 78008b3820689056c81efb75eba63b4c6cdc0a710ec0f56af6a30f6995d4acde
vr_clm05.bin 4e87cb870e5111d855498c8ba84e97fb75bc850bb34facb454c2df758c60f37b
vr_fms01.bin 17cc7a8894cf642e1ca2c222bfbd1ae0f7617e7032876ccea6a680bf3a38c679
vr_fms02.bin 3e0a8f1164fe3b6a0ce62a07d190538bf7e790359694e16851c45371072b91fb
vr_fms03.bin 0a8d39c760b2799002b707eeed74db9a88ff20c199a8d37f5d9fa9a0e7191ec5
vr_fms04.bin 90094b757cfc00154a8b59d1f3b7fa06df7b21c734b06b662e962776a165bac1
vr_fms05.bin 07ffa2646c98dc261e399a2f9ebd05203d769bebf4a494688dba9caa6bbe94cc
vr_grn01.bin 2bf060f4a39e08fa5c28eed3b2b7419ea37d2f51890400c78fdb8635fa4de885
vr_grn02.bin 0f26c0f2e3b509b5fdc14f35df0d1eecb8cd364f315af4e832397b116572ee59
vr_grn03.bin 93cf09c7cb238eb7c9d44cb233acf234b3242b3e72fdd4aec254407091adab1e
vr_grn04.bin b3189ddb34efa31166c8d33261bb7a1faf0ad402542026486b8c7dd1cc93664c
vr_grn05.bin dbbb5eba5b191a009862568d5d17ec28e00152c383c15ce01aa07fd52da5e5a7
vr_nkt01.bin 07161fb79db67a6f4f08cd0d3db87825c1a1a55afad7c87001aed968bc92677e
vr_nkt02.bin 168a45e7ac9c3a9c4454a9048797a4b1efacfe17076038a5c27df191b7661112
vr_nkt03.bin 786ad1a792e27dfbe1b2ab71c28416a8287d85c046524a8986e99ac39b0b283b
vr_nkt04.bin e39592adcd7cb51b321105330a013b43886101d19f6308f4c423724f5f523174
vr_nkt05.bin 0c58e1c20a614cc8dfb3411b05fb1879994e42374d0288699912d44ad3b1b5c2
vr_psg01.bin 8ff3058151426649df67d8cf7cb13e2e63eea5ccadbc1bfed1be6fbad5ae2d8d
vr_psg02.bin f84421c4a52296e31af9625a35ac9e12007306c112906ddfec97286fc52fde63
vr_psg03.bin 2c80a4431576af6de08d0a64ef0763d8f4bfca4d4f3b7cc7d27ae9496f8af061
vr_psg04.bin c7703abdfb59ca4d04a84a03fc2d42c26b14ff14fac001c3fbdf0a17228d8731
vr_psg05.bin abcdac864c5c490bfb4e4c3da9756878222571a6b1a9bd63d481e5db47083d0c
vr_scm01.bin 869b72323703f398289c9e59937afc135d8dede4ced8dda635a4edf55338d1c5
vr_scm02.bin 922b222f5ad0058054ade591e0f43823230c744ccdf2bb088b7633cd698ff675
vr_scm03.bin 853c533374616189dcc4da5556f83c1a5b5ef86b445dd2694c9a2ad3a3ee646e
vr_scm04.bin a1400556a5067d0fbd9c1e5609fa2120cfb276b31aca430250a30b25e88c3bef
vr_scm05.bin ee5936380bb945cc0eae69ae907f57bffb22d90ecef1d5cfd237b5382ed47a1e
vr_stg01.bin d3ca029f51ec4d6cdaa395c2a349d0e22583d031b89029c8ad1e9f8c2bf428cb
vr_stg02.bin e8a03cb422e7e4e9950b5c1a5c18bb65b472f89169b7009c71ed13a9d6d3d02f
vr_stg03.bin 7ed01303c6a1878d28f3aaabb2cdc47ec86bc6fe1811fe5d27fc8cead3d75233
vr_stg04.bin 6fe653b113082081917ec3f52b6ebaf11083e092ad919e6c5a6e2496b3b93a6a
vr_stg05.bin 9b5964c6290b59ebd111b184cc4565b3781165edfd8ec93a8dc7b73368ab8bcb
vr_sud01.bin 41f4f0bd54b6ccd45877dd8b35d40106d4f5be97fadfe45ce10c7cd6e7788c99
vr_sud02.bin 8830cfab59f86056690b0f74cbeb51424b5776091b1bd52fd6dc84c7db0c5408
vr_sud03.bin 456126883baace557e8f4fcb32660dd071a9587b3299fe0602c99359da4c574b
vr_sud04.bin 286dae7ca61adb49ee84566c4188571c36ee7783874424dc2cdb52446e9cc630
vr_sud05.bin 461cc1ef0cfa858be270da83da736ad04557fa7e388839d8f786870c396957d1
vr_sud06.bin 2e84f6679c11a0cda69bb9d249a4d37378ce7e08685c7fa2d578b9d8f495c71c
vr_sud07.bin b3b3c512b37b82d059a79ab4df47282fddef1a1c33bc1180f4dcbf292f69d8e7
vr_sud08.bin 84e4c6c25797d164cf56f91fec79734b6efff3750b97156aa054cdc89f130fa7
vr_sud09.bin e77f4e558ec9e5fecbf3fc939958875b38b40b40a4a9403e5ca6757e60b16639
vr_sud10.bin 3b34df06259b8cb03d29ea9569dd9684090c713e44e1bfa4b84cc1f5c7311914
vr_sud11.bin 870ef98c534f7c8880b83bdeb52f175ae09a3c306a21a095bc009c709956163f
vr_sud12.bin d980455e00d779c60abe21407dc312586d1a73a355ea57e6a469aff527460f36
vr_sud13.bin 2d3f45e3399d48b3cb328790176596d2c690e015c5054424aa131de33e936ab3
vr_sud14.bin 3b986c02aa7e6b69ac1a7f0aec4e66d7111f4a65afbced1e424ea39f6bdaa4b7
vr_sud15.bin 232040540e92f233c14c8e7da7d904b414c0381e07a0db9f496ab1d099f4cd49
vrsave.bin ee1eeb23395a900bc9e36348db0a393e5a86e0ed4996180e16626e7d9156c674
vrtitle.bin ade8ca6f7d0ca99d371abcfbca53987415b43e66f326f9ee77518f1b7a4aff39

How to build

  1. Install Python 3 if you haven't and make sure it's in your PATH.
  2. Clone down the PsyQ SDK repo from: https://github.com/FoxdieTeam/psyq_sdk.git
  3. Clone down this repo.
  4. Open a terminal and cd into the build directory.
  5. Issue the command pip install -r requirements.txt.
  6. Issue the command python build.py --psyq_path=YourPath where YourPath is the location of your cloned psyq_sdk depot.
    • Alternatively you can add PSYQ_SDK to your environment variables before invoking python build.py.
  7. At the end you should see a message confirming that the built binary's hash matches the original game's binary's hash. If your code caused the compiler to emit warnings, try to fix them without breaking the match.

How to use the built executables

Once you have successfully built the executables from the source code, you may want to play it to debug or test the changes you have made. Please keep in mind that if the size of the main executable changes or addresses shift, the original overlays won't work properly. This guide does not describe how to repackage overlays (a packer tool is planned for the future).

PCSX-Redux

PCSX-Redux emulator provides a convenient way to load a modified main executable. Once you have loaded the original image of Metal Gear Solid: Integral you can load a modified executable in "File > Load binary" menu. This repository contains some helper Lua scripts that can be used with PCSX-Redux in build/pcsx-redux_scripts folder.

Other emulators - rebuilding ISO

To rebuild an ISO with your modified executable, you need a tool called mkpsxiso: download and extract it to a folder of your choice.

Next, you need the original files of Metal Gear Solid: Integral from the CD-ROMs. If you have dumped the discs into .bin/.cue pairs, you need to unpack them into a folder using mkpsxiso. The following commands show how to do this for the first disc, but the same applies to the other two.

Open a terminal, cd into a folder of your choice and run the following command:

<mkpsxiso_folder_path>\bin\dumpsxiso.exe <path\to\mgsi_d1.bin> -x MGSI_D1 -s mgsi_d1.xml

This will create a folder named MGSI_D1 (containing the files of the first disc of the game), and an additional file, mgsi_d1.xml.

Open mgsi_d1.xml and replace

<file name="SLPM_862.47" source="MGSI_D1/MGS/SLPM_862.47" type="data"/>

with

<file name="SLPM_862.47" source="<path/to/_mgsi.exe>" type="data"/>

where _mgsi.exe is the output of the build process.

Optionally, you can also edit the attributes image_name and cue_sheet of the iso_project element to give them more appropriate values, like mgsi_d1.bin and mgsi_d1.cue, which are the output files of the next step.

Finally, run

<mkpsxiso_folder_path>\bin\mkpsxiso.exe mgsi_d1.xml

to re-pack the MGSI_D1 folder into a .bin/.cue pair that now contains the new executable instead of the original one. From now on, this is the only command to be executed every time you want to test a different version of the executable.

Now you are ready to play the game with your favorite emulator by starting the file mgsi_d1.cue.

How to decompile a function

Now that the work is moving onto overlays, this section is no longer up to date. Please join our Discord and ask for help in #metal_gear_dev.

Using IDA or Ghidra (with the ghidra_psx_ldr extension) disassemble the original game binary (SLPM-86247), or use one that you compiled yourself provided that the output was OK. Now choose a .s file from the asm directory where that function isnt part of psyq.

Given the address of the function go to this location in your reversing tool. Delete the .s file and search for a .c file which has a #pragma INCLUDE_ASM() directive pointing to the former .s file; if none exists, create a .c file with the name of the function and open it. Now write an empty C function that has the same name as the former assembly function as well as a suitable signature; when you re-execute python build.py, the build will not be OK as your empty function will no longer build a matching binary.

Now comes the hard part: implement the function such that it matches the functionality of the assembly and build again. Repeat this until your build is OK ie your C code is functionally the same and produces exactly the same assembly as the original function.

Iterative building is currently unreliable and it is highly recommended to run python clean.py && python build.py to be certain that your binary is truly a match.

Help, I am totally stuck?

Join our Discord and ask for help in #metal_gear_dev.

There are various Ghidra scripts in build/ghidra_scripts/ to help with decompilation:

  • import_map.py: when you have produced a matching build, this imports the symbols from the map file into Ghidra;
  • update_data.py: make sure to read the instructions to this script, which updates data in accordance with declared data types provided they have been imported from header files;
  • update_functions.py: updates function return types and parameters according to the declarations of matched functions.

It is highly recommended to re-run auto-analysis whenever you have executed these scripts.

We make extensive use of decomp.me, which has a Metal Gear Solid preset, to help match functions; before working on a function, search for it on the website and if you don't find it, go to the build folder and run python decompme_asm.py [path to .s file] to have the assembly instructions in your clipboard ready to paste into a new decomp.me scratch.