-
Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
This post is just a placeholder for now and in time, it will be filled with information. A moderator or administrator is free to update it as necessary.
In this thread, we contribute our hex editing research on the game now that Philymaster has released a Security Fixer for it. This should hold us over until amany's editor is fixed or someone creates and uploads a new one.
Make sure you keep game regions in mind when posting your finding, as it may be different for others from different regions. For example, I am doing this on my U.S./North American save.
Happy modding and we're all looking forward to contributions! I'll be getting to work soon, myself.
Update:
So far, I've found Heroism and managed to successfully edit it in Hex Workshop and the changed showed up in game. (U.S./NA save) Here is the correct offset/address:
http://i.imgur.com/KAGmBAK.jpg
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Offsets for TU 0
Add 0x1D8 to the offsets, if you using TU > 0!
General:
SVAR 4 - 0x0000450C - Int32: GMP
Resources (SVAR 4)
Each value is multiplicated with the factor 2.
amount = saveValue / 2
saveValue = amount * 2
amount is limited to 3.000 for medicinal plants.
amount is limited to 200.000 for all other resources.
Processed Materials:
0xF1D0: Fuel Resources
0xF1D4: Biological Material
0xF1D8: Common Metal
0xF1DC: Minor Metal
0xF1E0: Precious Metal
Medicinal Plant:
0xF1E4: Wormwood
0xF1E8: Black Carrot
0xF1EC: Golden Crescent
0xF1F0: Tarragon
0xF1F4: African Peach
0xF1F8: Digitalis (Purpurea)
0xF1FC: Digitalis (Lutea)
0xF200: Haoma
Vehicles:
0xF204: ZaAZ-S84/4W
0xF208: APE T-41LV
0xF20C: Zi-GRA 6T
0xF210: BOAR-53CT
0xF214: ZHUK BR-3
0xF218: STOUT IFV-SC
0xF21C: ZHUK RS-ZO
0xF220: STOUT IFV-FS
0xF224: TT77 NOSOROG
0xF228: M84A MAGLOADER
Walker Gears:
0xF22C: WG.PP
0xF230: CCCP-WG TYPE-C
0xF234: CCCP-WG TYPE-A
0xF238: CFA-WG TYPE-C
0xF23C: CFA-WG TYPE-A
Weapons:
0xF258: VOL-GA K12
0xF25C: HMG-3 WINGATE
0xF260: M2A-304 MORTAR
0xF264: ZHIZDRA-45
0xF268: M276 AA G-GUN
There are additional Int32's for each resource starting at 0xF2BC.
Those are save, if the resource is unlocked and/or new.
Therefor the first 2 bits of the Int32 are used for the following:
0x1 = New (Point will show up in menu)
0x2 = Unlocked
0x3 = New & Unlocked
Materials (fuel etc.) are an exception, because the unprocessed amount is saved after the bits.
Example:
We want 200.000 unprocessed fuel.
1. Multiplicate with 2 => 400.000
2. Multiplicate with 4 (This shift the value 2 bits left) => 1.600.000
3. Add 2 (This sets the unlocked bit) => 1.600.002
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
on my editor
0x0001ad78 - uint: GMP
0x0002cfd4 - uint: pimp
0x00004790- uint: fulton
all resources localised & begin 0x25A34 also need multyplied expemple 10 floor = 100
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Quote:
Originally Posted by
amany
on my editor
0x0001ad78 - uint: GMP
0x0002cfd4 - uint: pimp
0x00004790- uint: fulton
all resources localised & begin 0x25A34 also need multyplied expemple 10 floor = 100
Thanks for the offsets. :)
Our both GMP offsets are different already, so the best would be if we are using relative offsets to the SVAR's.
At the start of the GAME_DATA there is a SVAR table with the following structure:
0x00000000 - Int32: Magic (SVCS)
0x00000004 - Int32: SVAR Count
0x00000008 - Int32: SVAR 1 Offset
0x0000000C - Int32: SVAR 1 Size
0x00000010 - Int32: SVAR 1 Size (Unknown)
...
...
So I suggest to make offsets this way:
SVAR Number - Relative Offset - Datatype: Name
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
You guys just got me fired up enough to get back to work with this!
Thanks for contributing. I'll be helping you guys out as well if I can.
Attempting to find my resources on amany's advice. Also, amany, what is "pimp" in the game? I would assume that's heroism in your file?
And away I go!
Edit/Update:
Okay, so clearly the offsets are very much different between the three of us, because the location for GMP in the save for both of you is different from mine. I haven't found mine yet because I was looking at the offsets you guys listed.
So now, I will be attempting to manually find mine by looking under each SVAR.
Also, for further reference, which region is both of your gamesaves from? I'm thinking that kind of matters seeing as our datas are slightly different.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
i will use pointer i think besause i see offset look changed with region game
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I use the version, that was leaked 1 week before release. I assume it's the US version, but not sure. :/
At the moment I search for save routine code in xex. Perhaps so I can understand how the offsets are calculated.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Okay, so using both of your advices and tips, I've found my own GMP. Like Philymaster, it was under SVAR 4, but in a different location.
Judging by my GMP's location, I'm thinking the leaked one might not be a U.S./NA save.
Here is where mine is located:
SVAR 4 - 0x0001AED4 - Int32: GMP
Now I am attempting to have a go at resources.
amany, can you tell me how much I need to multiply each value by to find my resources?
For example, I have 200 fuel resources, how much do I have to multiply it by to find it in my save? Any advice on that is greatly welcomed. Thank you!
So basically I need to know 200 x ???? = Resource Value in the save?
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I've found the resources. :)
saveValue = inGameValue * 2
Well at least for fuel, don't tested the others yet
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Thank you so much! Now I can get cracking on finding them in my save.
Also, do you happen to know where or how to find the fultons? Which SVAR can it be found under?
My current in-game fulton amount is 12, so naturally I get a LOT of search results in my save with such a low number, making it harder to narrow down. I may have to test them one by one.
Edit/Update:
Okay, I've found my fuel in the save, I think.
SVAR 4 - 0x00025B9A - Int32/UnInt32: Fuel Resource
Will check in game after editing to confirm and edit/update this post accordingly.
Edit/Update 2:
Special note here is that you also have to multiply the value that you want your fuel resources to be. For example, let's say you want it to be 999 (03E7)... You multiply that by 2 and you get 1998 (7CE) and that's your final result and will give you 999 Fuel Resources in the game. Thanks to Philymaster for that lesson!
Edit/Update 3:
It's possible that the multiplication is different for each/every resource.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I've updated my first post with some resources and how to unlock them.
-
1 Attachment(s)
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Quote:
Originally Posted by
Philymaster
General:
SVAR 4 - 0x0000450C - Int32: GMP
Resources (SVAR 4)
Each value is multiplicated with the factor 2.
amount = saveValue / 2
saveValue = amount * 2
amount is limited to 3.000 for medicinal plants.
amount is limited to 200.000 for all other resources.
Processed Materials:
0xF1D0: Fuel Resources
0xF1D4: Biological Material
0xF1D8: Common Metal
0xF1DC: Minor Metal
0xF1E0: Precious Metal
Medicinal Plant:
0xF1E4: Wormwood
0xF1E8: Black Carrot
0xF1EC: Golden Crescent
0xF1F0: Tarragon
0xF1F4: African Peach
0xF1F8: Digitalis (Purpurea)
0xF1FC: Digitalis (Lutea)
0xF200: Haoma
Vehicles:
0xF204: ZaAZ-S84/4W
0xF208: APE T-41LV
0xF20C: Zi-GRA 6T
0xF210: BOAR-53CT
0xF214: ZHUK BR-3
0xF218: STOUT IFV-SC
0xF21C: ZHUK RS-ZO
0xF220: STOUT IFV-FS
0xF224: TT77 NOSOROG
0xF228: M84A MAGLOADER
Walker Gears:
0xF22C: WG.PP
0xF230: CCCP-WG TYPE-C
0xF234: CCCP-WG TYPE-A
0xF238: CFA-WG TYPE-C
0xF23C: CFA-WG TYPE-A
Weapons:
0xF258: VOL-GA K12
0xF25C: HMG-3 WINGATE
0xF260: M2A-304 MORTAR
0xF264: ZHIZDRA-45
0xF268: M276 AA G-GUN
There are additional Int32's for each resource starting at 0xF2BC.
Those are save, if the resource is unlocked and/or new.
Therefor the first 2 bits of the Int32 are used for the following:
0x1 = New (Point will show up in menu)
0x2 = Unlocked
0x3 = New & Unlocked
Materials (fuel etc.) are an exception, because the unprocessed amount is saved after the bits.
Example:
We want 200.000 unprocessed fuel.
1. Multiplicate with 2 => 400.000
2. Multiplicate with 4 (This shift the value 2 bits left) => 1.600.000
3. Add 2 (This sets the unlocked bit) => 1.600.002
Thanks for the updated info! :D That will help some people out a LOT.
Just one problem... None of those offsets represents resources in my save file. My fuel is in a different location as I listed earlier. Sadly it does not help me, but I wish it did.
I am now 100% convinced that gamesave region matters since the locations and offsets will be different for everything. Yourself, amany and I have listed completely different offsets for everything so far, so we HAVE to take that into consideration when researching this and when working on the save editor.
Should I send you my U.S./North American save so you can see for yourself where everything is located in those saves? You may want to get the accompanying xex for my region as well.
Edit:
Save sent! Happy researching.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I compared my save with yours and the version number in the SVAR header is different. Amany and I have created the save without any TU installed and therefore our offsets are the same. I guess the TU changed the save structure a little bit and in order to update the editor, we need to know what parts changed. All I can say at the moment is, that you just have to add 0x1D8 to my offsets to get your offsets. Because the difference is the same between GMP and resources, I think the TU changes only the top of the SVAR data, but to confirm that we would need some saves that are created with no or different TUs.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Heading in to work. I'll send you my fresh save with no DLC and no Title Updates when I get back home. So hang tight until then, please! I should be back in 5 or 6 hours. Might be just a little later, but not much longer than that.
Also I have had DLCs on my previous save files. Does that affect anything much at all in the save?
I had the following DLCs:
Day One DLC
· Adam-ska Special Handgun
· Personal Ballistic Shield (Silver)
· Cardboard Box (Wetland)
· Fatigues (Blue Urban Snake Costume)
· METAL GEAR ONLINE XP BOOST
Ground Zeroes Carry-over DLC:
Mother Base Staff 1 (Actually, I forgot to delete this one off my HDD before I started the game anew to make a fresh save for you. I didn't know it would automatically carry over. I hope that doesn't affect anything, but if it does, then I WILL restart.)
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I finally know where the offsets are stored.
The SVAR file structure has N offset tables (N saved as UInt8 at 0x7). Starting from 0xC there are N main entries, which are 8 bytes long and have the following structure:
0x0 - UInt8: main entry ID
0x2 - UInt16: main entry chunks
0x4 - UInt32: main entry offset table offset (Yeah the offset of the offset table)
Each offset table consist of 3 parts:
1. 2 bytes for each chunk (Don't know for what atm)
2. 8 bytes for each chunk (unique id and something different)
3. 8 bytes for each chunk (offset of chunk, elements, datatype)
So if we have C chunks, the offset table would have a size of 2C + 8C + 8C.
I don't know how to read it out 100% with a editor, but I was able to do it myself for the resources offset. Found it in Ultimarok's and my save. The unique id was the same, so we need to share those ids for now. :p
-
1 Attachment(s)
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Quote:
Originally Posted by
Philymaster
I finally know where the offsets are stored.
The SVAR file structure has N offset tables (N saved as UInt8 at 0x7). Starting from 0xC there are N main entries, which are 8 bytes long and have the following structure:
0x0 - UInt8: main entry ID
0x2 - UInt16: main entry chunks
0x4 - UInt32: main entry offset table offset (Yeah the offset of the offset table)
Each offset table consist of 3 parts:
1. 2 bytes for each chunk (Don't know for what atm)
2. 8 bytes for each chunk (unique id and something different)
3. 8 bytes for each chunk (offset of chunk, elements, datatype)
So if we have C chunks, the offset table would have a size of 2C + 8C + 8C.
I don't know how to read it out 100% with a editor, but I was able to do it myself for the resources offset. Found it in Ultimarok's and my save. The unique id was the same, so we need to share those ids for now. :p
I don't know what most of that means, but it seems interesting and like we're one step closer to being able to save edit this game with an editor! It'll just take a little work is all. Thanks for this important info.
By the way, I am on a retail Xbox 360, just so you know. I do not have a modded one, so I can't help much for anything that may require it.
I gotta go to sleep for now since I work a double shift tomorrow starting early in the morning... BLAH!
Here is my fresh save with NO title updates, but it does have one DLC though: (I hope it helps)
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Thanks for the save, found the resources straight away.
I'll shortly describe how to get the offset, so we can share unique IDs and can post relative offsets based on that.
I use SVAR 4 for example, because it's the most important.
1. Get main entry count. It's saved as UInt8 at 0x7. We have 4 main entries, but we only look at the first one, since it has the most chunks.
Offset 1st main entry: 0xC
Offset 2nd main entry: 0x14
Offset 3rd main entry: 0x1C
Offset 4th main entry: 0x24
2. Get the chunkAmount. It's saved as UInt16 at 0x2 in an main entry. Means for us it's 0xC + 0x2 = 0xE.
3. Now we are searching for the unique ID of resources chunk, which is 0xCC4B45C3.
4. If we found it, we add (chunkAmount * 8) to it to get to something like (Could be different for you, of course):
00 00 F1 D0 00 3B 02 00
The structure is:
OO OO OO OO EE EE DD ??
O = Chunk offset
E = Chunk elements
D = Element datatype
D values:
0 = Boolean
1 = Int32
2 = UInt32
3 = Float
4 = Int8
5 = UInt8
6 = Int16
7 = UInt16
size in bytes = E * sizeof(D)
in my case: 0x3B * 4 = 0xEC
Hope this helps :)
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I will help you with this once I get home, if you don't mind, Philymaster. I still have to work a second shift tonight. I should be back by around 10:00pm-12:00am in U.S. Central Time Zone, so translate that to your time zone.
Also, before I go back to work, I just want to say thank you VERY much to you and amany for contributing and helping us all out with this. We all really appreciate it! :-)
Off I go, back to the daily grind...
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I love the metal gear series like mgs1 was my favorite game from the series. mgs3 was good also surprised how it remained at somewhat the leve the original was at.
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
I hope everyone is getting a little excited here, because we just found some more things that we didn't know could be edited earlier (I won't say what :p ), just as a little teaser. ;-)
We are learning as we go and it's a fun experience sometimes, even though hex editing can sometimes be tedious and repetitive. But for a game like this, it's worth it! (Well, that and exercising our brains.)
-
Re: Metal Gear Solid V: The Phantom Pain Community Modding Research Thread
Hello guy's
Thank you very much for your excellent job!
But, Do you know where to find the data to change the level of the mother base's teams and additionally those of countdown time by using the hex editor?