Skip to content

DSMSPortable v1.8.4

Compare
Choose a tag to compare
@mountlover mountlover released this 01 Sep 05:33
· 11 commits to main since this release

A lightweight, portable tool for patching param files like Elden Ring's regulation.bin and merging various other Fromsoft file types via command line, using DSMapStudio's core libraries. Requires .NET 6.0. You can test for this by running DSMSPortable.exe -? and checking for a nonzero error code (will typically be negative if the runtimes are not found).

Intended to make installation of game mods possible without having to bundle entire game files and allow for merging with other mods. Is capable of:

  • Applying CSV edits to a given param file with the -C command
  • Applying param edits in the form of DS Map Studio "massedit" scripts with the -M command
  • Adding new rows via massedit scripts with the -M+ command (nonexistent id's will be created and populated with default values)
  • Exporting params to CSV with search queries or mass exporting with the -X command
  • Exporting differences between two param files as a single massedit script with the -D command
  • Converting CSV edits to massedit scripts with the -C2M command
  • Removing rows from params with the -R command
  • Merging FMG edits & adding new FMG entries to msgbnd files with the --fmgmerge and --fmgentry commands
  • Merging new textures and subtextures into TPF and sblytbnd files with the --texturemerge and --layoutmerge commands
  • Merging lua functions into HKS files with --hksmerge
  • Merging events and event/flag initializations into EMEVD files with the --emevdmerge command, and creating partial EMEVD files with the --emevddiff command
  • Creating partial BND files with the --bnddiff command, and merging any two bnd files with the generic --bndmerge command
  • Creating partial TAE files with the --animdiff command, and merging TAE animations into anibnd files with the --animerge command

Usage:
DSMSPortable [paramfile] [-G gametype] [-P gamepath] [-U oldvanillaparams] [-C2M csvfile1 csvfile2 ...] [-C csvfile1 csvfile2 ...] [-M[+] masseditfile1 masseditfile2 ...] [-X paramname1[:query] paramname2 ...] [-D diffparamfile] [-O outputpath]
DSMSPortable --fmgentry [msgbndfile] [name1:id1:text1] [name2:id2:text2] ...
DSMSPortable --fmgmerge [msgbndfile] [fmgfile1 fmgfile2 ...] [-I] [-V]
DSMSPortable --texturemerge [tpffile] [ddsfile1 ddsfile2 ...] [-I] [-V]
DSMSPortable --layoutmerge [sblytbndfile] [layoutfile1 layoutfile2 ...] [-I] [-V] [-S]
DSMSPortable --animerge [anibndfile] [taefile1 taefile2 ...] [-I] [-V]
DSMSPortable --animdiff [anibndfile] [taefile1 taefile2 ...] [-V]
DSMSPortable --bndmerge [destbndfile] [srcbndfile] [-I] [-V] [-S]
DSMSPortable --bnddiff [destbndfile] [srcbndfile] [-V]
DSMSPortable --hksmerge [hksfile] [luafile1 luafile2 ...] [-V]
DSMSPortable --emevdmerge [destemevdfile] [srcemevdfile] [-I] [-V] [-S] [-R eventID]
DSMSPortable --emevddiff [destemevdfile] [srcemevdfile] [-V]

Use the -? flag for more detailed usage information, and consult the "Example" folder for a demonstration on how to make your own mod installer.

For feedback or for anyone willing to collaborate on this, I'm always available at my discord server at
https://discord.gg/7ZxT9mT