Dark Souls Remastered

This tutorial applies to versions 1.4+ of the program DS Texts Mod Helper (DSTMH).

It can read/write files for all Souls games supported by SoulsFormats:
- Demon's Souls
- Dark Souls: Prepare To Die Edition
- Dark Souls: Remastered
- Dark Souls 2
- Dark Souls 2: Scholar of the First Sin
- Dark Souls 3
- Bloodborne


As example to work on, we will use the text contents from two data sources:
- The game Dark Souls: Remastered (DSR) in vanilla
- The mod Daughters of Ash (DoA) , available here for DSR

Also, we will use French and Italian as target languages for the example of preparing new translations. But any language the vanilla game is shipped with can be used as well.


1. Gather the required data

First thing, you need to get the .fmg files from each data source.

FMG files are text containers in Souls games.
That is where all text contents are stored.
A FMG file contains entries (pairs of Text ID/Text value).

To do so, extract the data from the appropriate .dcx files.
DCX files are compressed files holding game data.
These are used for events, texts, params, etc.

More about file formats used in Souls games :
http://soulsmodding.wikidot.com/format:main

-> For the first data source (DSR), the DCX files are located in the /msg/ folder in the game directory.
For instance, for the English language:
[DSR]\msg\ENGLISH\item.msgbnd.dcx
[DSR]\msg\ENGLISH\menu.msgbnd.dcx

To extract the DCX files, you can use several programs; for instance:
horkrux's updated BND Rebuilder
or JKAnderson's Yabber

After extraction, you will get folders named like :
- \item.msgbnd.extract\
- \menu.msgbnd.extract\
Continue few folders down in each to get the FMG files.

-> Do the same for the second data source (DoA):
Locate and extract DCXs to get the FMGs.



2. Prepare input files

So now you have two datasets of FMG input files.

Use equivalent files from each data source to feed the program DSTMH. In this article we will use various text contents that can be extracted from the archive file item.msgbnd.dcx in each data source.

For instance Place names can be obtained from extracting the following FMG input files:
(DoA) item.msgbnd.dcx \...\ PlaceNames.fmg
(DSR) item.msgbnd.dcx \...\ Place_name_.fmg


Ring descriptions
, in these FMG input files:

(DoA) item.msgbnd.dcx \...\ RingDescriptions.fmg
(DSR) item.msgbnd.dcx \...\ Accessory_long_desc_.fmg


And so on…

(Yes, filenames are different with DoA, don't be confused about that)

DSTMH can process FMG input files in 3 modes:
Read mode, Compare mode, Prepare mode



3a. Process input files - Read mode
Principle: Process 1 FMG input file to just read it
Objective: Get a quick preview of a single FMG file
Result: Can be exported as a CSV file

Here we use the text data of Weapon names:
File #1 = DoA (English) = file WeaponNames.fmg


If the submitted FMG file is recognized as valid, the input file area turns to green and gets explicative texts as tooltips.


3b. Process input files - Compare mode
Principle: Process 2 FMG input files to compare their contents
Objective: Know differences in equivalent FMG files from 2 distinct versions
Result: Can be exported as a CSV file

Here we use the text data of Ring descriptions:
File #1 = DoA (English) = file RingDescriptions.fmg
File #2 = DSR (English) = file Accessory_long_desc_.fmg


Note that the program displays a yellow color as visual warning if the submitted input filenames are not identical: however in our case it is a false alert, since DoA utilizes renamed files. Besides this special case, this can be useful when dealing with japanese filenames that could be harder to distinguish.

Another example screenshot with PTDE data:

Note that you can use the option "Disable multi line format" to get the text contents in a single line, with "/n/" instead of new lines.


3c. Process input files - Prepare mode
Principle: Process 3 FMG input files to prepare a FMG file for a new translation
Objective: Automatize some steps in the process of translating the text contents of a given mod
Result: Can be exported as a FMG file

So we use the text data of Armor descriptions:
File #1 = DoA (English) = file ArmorDescriptions.fmg
File #2 = DSR (English) = file Armor_long_desc_.fmg
File #3 = DSR (Italian) = file Armor_long_desc_.fmg


Note that, like in the previous screenshot, the yellow color is a warning that can be ignored, as we deal with DoA (non-standard) filenames.

The "Prepare mode" compares the data from File #1 and File #2 for all their text entries.
-> If for a given entry the value is identical, it means that the mod you want to translate (File #1) is using the vanilla text. In that case, the program will use the value from the target langage in vanilla (File #3), so in the end this entry will be translated already.
-> But if the value is different, it will keep the mod value (File #1) and there you will need to translate and update it manually with an editor of FMG files.

You can use option "Show all details" and even "Detach" the Output preview to obtain a bigger and clearer view:

Gray texts displayed as of option "Show all details" are only visual helpers, they will not be written in output.

Note that Output preview, in all modes, will only display the first 50 text entries. You have to generate the output file to get the full result.



4. After using the program

Read & Compare mode

The output CSV files works well with Excel.

It is advised to open them from Data -> From Text/CSV as it provides extra options to load the file properly:


Be careful about the delimiter you choose, it must match the one specified in DSTMH interface


Other spreadsheet softwares have not been tested but should be compatible as well since all this is quite standard.


Prepare mode
Once you have the FMG output file, you can edit it with a dedicated editor.

For instance, the good old
Wulf's FMG Editor:

This tool is old and slow, especially with large files, but it has been used for years on many Souls games and supports CSV import/export for easier massive edits in regular text editors.

(the program can be found on other mods: Link #1 , Link #2)


If you work on Dark Souls Prepare To Die Edition, you might prefer to use Meowmaritus' TextVessel:

This tool offers a huge increase of productivity, however it is only compatible with DS:PTDE



5. Final words

I hope this tutorial is clear enough, if not please ask!

Maybe someday I will implement batch treatments as a future update.
Sure it would be handy to process all data at once for a given game.

Article information

Added on

Edited on

Written by

McJ0hns0n

0 comments