NoMansSky:Creating Mods From MBINs: Difference between revisions

From Step Mods | Change The Game
Line 14: Line 14:


== Hexadecimal Editors ==
== Hexadecimal Editors ==
there are a lot of Hexadecimal editor available. Here is a list of some of them:
To edit .MBIN binary files, you will need an hexadecimal editor and there's quite a lot of them.<br>
Here is a list of some of them worth mentioning:
* 010 (paid, with 30 day trial)
* 010 (paid, with 30 day trial)
* HxD (freeware, proprietary)
* HxD (freeware, proprietary)

Revision as of 20:33, August 11, 2020

Template:TOC right

The purpose of Hex Editing[edit | edit source]

Sometimes, after a game update for example, you can't decompile .MBIN files anymore because MBINCompiler has not been updated yet. If that happens, either you wait for a new MBINCompiler version supporting the files you want to edit, either you can still edit them with an hexadecimal editor.

In practice, the way to update a mod is simple :

  1. Use a binary comparison between the original MBIN files and modded MBIN files (both from previous NMS version).
  2. Note the changes
  3. Apply the same changes to the new .MBIN files from latest NMS version.
  4. Recompile and repack the mod

That's for the theory. In practice, you don't always have a backup of all the game files from the previous game version and even you have them, sometimes new values have been added into the files and some values have shifted. In both cases, this will need a lot more work and you might need to recognize the patterns around the changes by human eye.

Hexadecimal Editors[edit | edit source]

To edit .MBIN binary files, you will need an hexadecimal editor and there's quite a lot of them.
Here is a list of some of them worth mentioning:

  • 010 (paid, with 30 day trial)
  • HxD (freeware, proprietary)
  • Hex Editor Neo (free, has paid versions)
  • Hex Workshop (paid)
  • HexEdit (mac only?)
  • XVI32 (freeware, very small (~1Mb) and portable)

.MBIN Header[edit | edit source]

As most of file format, .MBIN files start with a header.
The .MBIN header is 96 (0x60) bytes and is composed as follow :

  • Magic Data which is 4 bytes long. It is 0xCCCCCCCC for MBIN files and is 0xDDDDDDDD for MBIN.PC files.
  • Format ID, a 4 bytes long integer
  • Time stamp, an 8 bytes long integer. If the file was compiled with MBINCompiler, stamp is replaced by the MBINCompiler Tag "MBINCver".
  • Template GUID, an 8 bytes long integer. If the file was compiled with MBINCompiler, this is replaced by the MBINCompiler version in the form of xx.yy.zz matching the MBINCOmpiler version used to compile the file.
  • Template Name, a 72 (0x48) bytes string reserved for the internal file name.

For a litlle more details on the original header of MBINfiles and MBINCompiler ones, see here.

The rest of the file contains the data. This can't be detailed here as each MBIN file has a different data structure but this won't be an issue as most of the time, we don't need the structure to make the needed changes.

Editing MBIN files[edit | edit source]

First, you need to know that MBIN Files are all using little indian byte order. So before anything, set your Hexadecimal editor to read values in little indian order.

Template:NMSPageClose