Character Morphing - S9-L/FMWSaveManager GitHub Wiki
This guide serves as a tutorial for transforming any unit present in your roster into various other unit/character versions defined in the data_unit_all and data_char_all database files.
Prerequisites
- Fantasy Maiden Wars DoSD Modding Tool to extract and view the
data_unit_all.txtanddata_char_all.txtdatabase files.data_unit_all.txtto pinpoint theUnit IDthat will replace the same property for an existing unit in your roster.data_char_all.txtto add or replace theChar NameandChar IDthat determine the character data for an existing unit.
- The
gswsave file that you want to modify.
Instructions
-
Run the FMW DoSD Modding Tool to extract the game files. After the extraction process is complete, you should see a new
extractedfolder that contains all extracted files in individual folders corresponding to each data archive. At this point, you have all you need from the extracted files. There is no need to continue using the FMW DoSD Modding Tool, so do not make any new folders or patch anydata.winfiles. -
Find the
data_unit_all.txtfile atextracted/data4/data_unit_all.txtand open it in your choice of spreadsheet or text editor. The top row is the "header" that contains the column names for each row entry starting from the 2nd row; this gives you an organized view of all properties that make up a single unit in each row. Keep these properties in mind when choosing the unit data that is replacing an existing unit's data.- Every row defines a single unit version that can be used by the game throughout certain points in a playthrough. Find the unit version you're looking for, and keep track of the values in the
DataID,Char1,Char2, andChar3columns. We will need to input these in the save manager later to apply changes and successfully morph the characters in the roster. - View the image below to see an example unit entry with the required columns highlighted. The example also has the column names posted above the unit entry for convenience.
- Every row defines a single unit version that can be used by the game throughout certain points in a playthrough. Find the unit version you're looking for, and keep track of the values in the

-
Find the
data_char_all.txtfile atextracted/data4/data_char_all.txtand open it in your choice of spreadsheet or text editor. Similar todata_unit_all.txt, this file contains the "header" specifying the columns for each row entry. Each row entry is a character version that contains all properties that make up a single instance of character data.- This time, you will need to record the
CharDataIDcolumn value for your desired character version. The game will use this unique identifier when fetching the character properties assigned to a specific character version.
- This time, you will need to record the
-
We will now use the save manager to morph our characters into our desired unit and character versions. Open your save file and navigate to the Unit Editor under the Entities tab. You should see a list of
Unit Namesin the left box, with each entry containing unit data displayed in the right UI elements.- FMW-DoSD uses an underlying database file
Data_IsINthat declares which units are present on specific chapters, organized byUnit Name. This means that only theUnit Namespresent in this file will actually appear in-game, so you cannot add any arbitraryUnit Namein the save manager to create new units in your roster at will.- You would need to modify the
Data_IsINfile and add newUnit Nameentries to create new units in roster. This can be accomplished through modding versions that supportData_IsINmodifications.
- You would need to modify the
- FMW-DoSD uses an underlying database file
-
Select the unit entry in the left box that you wish to morph. Then, replace the existing text in the
Unit IDfield with theDataIDyou recorded fromdata_unit_all.txt.- By doing this, we retain the
Unit Namefor the unit entry, making that specific unit entity available in the roster. However, changing theUnit IDwill force the unit entity to have the new properties of the unit version mapped toDataID.
- By doing this, we retain the
Example for morphing the Unit ID of the Tewi unit entity from Tewi01 to Kekkai_en02.

- We have now successfully morphed the unit version, but each unit version is mapped to a specific
Char Namedefined in theChar1,Char2, andChar3columns. For the most part, single units will only have theChar1column filled for their unit data, but other unit versions with sub-pilots like the Prismrivers or Ichirin will have theChar2and/orChar3columns filled. ThisChar Nameproperty corresponds to each character entry that exists in the character data list in the Character Editor; navigate to the Character Editor to see this list. At this point, we have 2 options of handling the character entries that map to the morphed unit version.-
Option A: If the
Char Namealready exists in the list, you can modify the existing character entry'sChar IDto morph to your desired character version. Replace the existing text inside theChar IDfield with theCharDataIDvalue you recorded fromdata_char_all.txt. This will force the character entity to have the new properties of the character version mapped toCharDataID. -
Option B: If the
Char Namedoes not exist in the list, you can add a new character entry to the list and then morph this new entry to your desired character version. After you click the button below to add a new character entry, replace theChar Namefield with theChar1value fromdata_unit_all.txtand theChar IDfield with theCharDataIDvalue fromdata_char_all.txt. This will properly map your newly created character version to the unit version that your previously morphed. -
If you have morphed a unit with multiple sub-pilots, you will need to add/replace multiple character entries to correspond to the
Char2and/orChar3columns to complete the character morph.
-
Example for creating a new character entry that maps to the previously morphed Tewi unit entity with Kekkai_en02 as the Unit ID. Unit entry for Kekkai_en02 has a Char1 column value of Kekkai_en02, so the newly created character entry's Char Name will be Kekkai_en02. The CharDataID we will target in data_char_all.txt is Kekkai_en02, so we replace the Char ID field for the new character entry with Kekkai_en02.

- Save your edited save file and load it in-game. You should now see the new unit and character versions applied to the chosen unit to morph in your roster.
Video Demo
https://github.com/user-attachments/assets/bdb2cdc2-ef0e-450d-861d-73522fde39fd