Tool for porting BNDs from other From Software games to Dark Souls 3.
If you use this tool for your mod I'd appreciate it if you would credit me for it.
Models ported from Sekiro and Elden Ring will have this look to them.
In order to port animations, ragdoll, and cloth, you will need to place the following tools unzipped in the 'HavokDowngrade' folder. If you only want to port the tae or flver then you can skip this step, just make sure to use the proper flags.
The HavokDowngrade folder should look something like this.
If using from the command line, enter flags first and then the path(s) to the source DCX file(s). Alternatively you can drag-and-drop DCX file(s) onto the exe.
DCX file(s) must be anibnd, chrbnd or both.
DS3PortingTool.exe c5000.anibnd.dcx c5000.chrbnd.dcx
DCX file(s) must be anibnd, chrbnd or both. Make sure you select ALL anibnds including the divs.
DS3PortingTool.exe c5000.anibnd.dcx c5000_div00.anibnd.dcx c5000_div01.anibnd.dcx c5000.chrbnd.dcx
If using from the command line, enter flags first and then the path(s) to the source DCX file(s). Alternatively you can drag-and-drop DCX file(s) onto the exe.
DCX file must be an objbnd.
DS3PortingTool.exe o120100.objbnd.dcx
DCX File(s) must be geombnd and geomhkxbnd. Make sure you select both the geombnd and geomhkxbnd then drag them onto the exe at the same time.
DS3PortingTool.exe aeg027_025.geombnd.dcx aeg027_025.geomhkxbnd.dcx
Flags are settings for the conversion process which will alter how the program behaves.
-i [id]
Specify an id that will override the id of the
original DCX. If this flag is not used and no id can be discerned from the source file names, then c1000 will be used for characters and o100000 for objects.
Examples:
DS3PortingTool.exe -i 1050 c1000.anibnd.dcx
DS3PortingTool.exe -i 500500 o200100.objbnd.dcx
-o [offsets]
Specify animation offset(s) to exclude.
Examples: DS3PortingTool.exe -o 0
DS3PortingTool.exe -o 1,2,4
-s
The character id in sound events will not be changed.
Example: DS3PortingTool.exe -s c7110.anibnd.dcx
-s [id]
Replace the character id in sound events with this id instead.
Example: DS3PortingTool.exe -s 7100 c7110.anibnd.dcx
-t
When porting a character or object, only the tae will be ported if there is one.
Example:DS3PortingTool.exe -t c1000.anibnd.dcx
-f
When porting a character or object, only the flver(s) will be ported if there are any.
Example:DS3PortingTool.exe -f c1000.chrbnd.dcx
-x
Runs the program without asking the user to enter flags.
Example:DS3PortingTool.exe -x c6200.anibnd.dcx
In this example, no flags were entered initially so the user was prompted to enter flags. The user did not want to use any flags and so continued with the program execution.
DS3PortingTool.exe c1000.anibnd.dcx
Enter Flags:
<program executes>
In this example, at least one flag was entered initially so the user was not prompted to enter flags.
DS3PortingTool.exe -t c1000.anibnd.dcx
<program executes>
Inside the Res folder there are several XML files which determine what is excluded or replaced during the porting process. The CharacterXML folder contains settings for porting characters and the ObjectXML folder contains settings for porting objects.
If a TAE event which adds a SpEffect is going to be excluded, but its SpEffectID is in this list, then it won't be excluded.
AnimationRemapping.xml
If an animation's ID is a key in this dictionary then its ID will be replaced with the corresponding value in the TAE.
ExcludedAnimations.xml
If an animation's ID is in this list, then it will be excluded from the TAE.
ExcludedEvents.xml
If a TAE event's type is in this list, then it will be removed.
ExcludedJumpTables.xml
If a JumpTable's jumpTableID is in this list, then it will be removed.
ExcludedRumbleCams.xml
If a rumbleCam TAE event's rumbleCamID is in this list, then it will be removed.
SpEffectRemapping.xml
If a TAE event which adds a SpEffect's SpEffectID is a key in this dictionary, then its SpEffectID will be replaced with the corresponding value.
How to Edit XML Files
Find the itemList or itemDictionary of the game you are porting from.
Create a new item in the itemList. Put a numerical id inside the quotation marks.
<item id=""/>
Create an itemRange which is used to add many ids to an itemList at once. It repeats a certain amount of times and each time it repeats, every item within the itemRange has its id incremented by a specified amount.
<itemRange increment="" repeat="">
<item id=""/>
</itemRange>
<item key="" value=""/>
Create an itemRange which is used to add many key-value pairs to an itemDictionary at once. It repeats a certain amount of times and each time it repeats, every item within the itemRange has its key and value incremented by different amounts.
<itemRange keyIncrement="" valueIncrement="" repeat="">
<item key="" value=""/>
</itemRange>