Team Cereustooling wiki

Port and param tools reference

Partly checkedagainst the code on 2026-11-12 11:37

Every entry of S:/eclipse-build/tools/tools.toml and every folder under tools/dotnet, with what it does, how to get it and its main commands. EB means py -3.12 -I -B S:/eclipse-build/eb.py.

Checked against code: the names, kinds and exe names (from tools.toml) and the command names (from each tool's entry point). Partial: for the frozen tools and for commands marked "no usage text" only the name is known.

How to get a tool

EB tool build <name> [<name> ...]     # prints "<name>: <folder>"; the exe is in that folder
EB tool build all
EB tool env                           # the pinned tool paths and environment the release pipeline gets

A tool folder is named by a hash of its source and dependencies. It is built once and shared. Never write into it and never build a private copy; see ../build/use-shared-tools.md. Run anything heavy as EB run --mem <GB> -- <command>.

Rules that hold for almost every C# tool here:

  • Pass absolute paths. Most tools change to their own folder so Oodle loads, and several resolve a relative path against that folder.
  • They read their inputs and write a new output file. They re-read the output and exit non-zero if the check fails.

Tools built from source (kind = "dotnet")

tools.toml name Source folder Exe What it does Main commands Page
polish Polish Polish.dll (run with dotnet) applies rowlists to a regulation apply, apply-chain, verify-chain, dump, plist, diffreg, npcn, scan, ci edit-params-and-rowlists.md
regq RegQ RegQ.exe read-only regulation queries and compare cells, dump, find, table, order same
tablerows TableRows TableRows.exe adds rows to params with duplicate row ids, without sorting append, check, rows, counts, fmg same
bndset BndSet BndSet.exe replaces binder entries by file name BndSet <in binder> <out binder> <entry file name>=<replacement file>... same
invtool InvTool InvTool.exe Eclipse invasions layer build, plus param / event / FMG / MSB probes build, common, pdump, pscan, evdump, evscan, fmg, fmgfind, msb, reward, msgadd, tae same
mimicopen MimicOpen MimicOpen.exe gives a seed's mimic chest the Open prompt (MSB entity + two events) one command line, 10 arguments same
ds2humanport Ds2HumanPort Ds2HumanPort.exe DS2 humanoid to NR converter steps flver, dummies, tex, attacks, tae, behbnd, chrbnd, anibnd, ragdoll, params, tae-dump, param-dump, matscan, bndcheck, tex-dump port-a-ds2-character.md
ds2port Ds2Port Ds2Port.exe DS2 extraction and conversion helpers (older Aava route, still used for dumps) see the list below same
ds2unpack Ds2Unpack Ds2Unpack.exe unpacks files from the DS2 archives --game, --out, --include, --list, --dictionary same
addlayers AddLayers AddLayers.exe additive layer clips for a port on a vanilla graph probe, additive, twist map-tools.md
npcport NpcPort NpcPort.exe DS3 to NR port steps ds3-extract, ds3-regulation, flver-port, tex-port, tae-port, param-port-npc, param-dump, param-free, bnd-repack, anibnd-build, luabnd-build, sfxbnd-build, ragdoll-port, hk-convert, hk-xml, hk2014-dump, ffx-roots, verify-package, bnd-ls, bnd-x, flver-info, tae-info, matbin-info, tpf-info port-a-ds3-or-er-character.md
aiport AiPort AiPort.exe ports DS1 / DS3 / ER battle AI Lua to NR port, localize, aicheck, airun, decompile, inventory, catalog, luabnd-extract, luabnd-pack, luabnd-verify, luabnd-bytecode, tae-info, shim-import, spefx-remap same
statport StatPort StatPort.exe carries source-game enemy stats onto NR rows dump, list, port, all, audit, apply, defdiff same
portlint PortLint port-lint.exe offline checks and mechanical fixes for a port <mod folder> (lint), fix, rules, flverinfo, taeinfo, paramhist same
materialfix MaterialFix MaterialFix.exe gloss, metal and matbin param repairs gloss, matparam, matdump same
dummyaim DummyAim DummyAim.exe adds aimed FLVER dummies to a chrbnd <in chrbnd> <out chrbnd> <spec.tsv>, info, rebnd same
kneelretarget KneelRetarget KneelRetarget.exe retargets clips between skeletons info, bones, build, verify, pack, track, concat, rootinfo, taedump, roundtrip, dmyinfo, meshes, maskflver, flvbind, ls same
critfix CritFix CritFix.exe fixes the pose pop between crit receive and death anims scan, death, info, tags, verify same
fxbnd FxBnd FxBnd.exe packs and checks effect binders unpack, ds2-xml, pack, verify, dummies, stage-res, ds2-tex, flver-info same
fxmodelsgen FxModelsGen FxModelsGen.exe DS3 effect models to NR effect-model materials and textures dump, fix same
havok2014 Havok2014 Havok2014.exe DS3 Havok 2014 to 2018 conversion, tagfile checks, navmesh commands see the list below port-a-ds3-or-er-character.md, map-tools.md
skillport SkillPort SkillPort.exe ER skill TAE and clips into NR c0000; TAE event edits ls, dump, port, validate, hkx-add, res-add, get, event-add, event-del, event-edit, anim-copy port-a-weapon-skill.md
behedit BehEdit BehEdit.exe byte-level edits of the NR player graph c0000.behbnd probe, show, find, apply, interval, selfix, names, events, clipcmp, wcdump, itemdump, files same
ds3retarget Ds3Retarget Ds3Retarget.exe DS3 c0000 clips onto the NR skeleton; writes TAE anims bones, build, pack, info, tae-set same
mapkit MapKit MapKit.exe map file audits, MSB edits, by-entry binder merges 25 commands map-tools.md
terraincut TerrainCut TerrainCut.exe cuts openings through terrain collision and drawn mesh ls, tris, cut, check, rewrite, fields, audit same
castlevariants_src CastleVariants CastleVariants.exe MSB / EMEVD builder for seeds, POI variants, FMG merges build msbjson, build apply, fmgls, fmgadd, verify, arena, rapappend, matdiff, gaolgate, testevent, inspection commands same

Ds2Port commands

Usage text from Program.cs:

bnd-ls <bnd[.dcx]>
bnd-x <bnd[.dcx]> <outDir>
flver-info <flver[.dcx]>
tae-info <tae> [--events]
flver-bind <flver> <out.json>
nsa-dump <ds2 anibnd> <outDir>          (NSA_MAPOFF=1 for c6790)
tex-info <texbnd> | matbin-info <matbinbnd> <name>
flver <ds2.flv> <nrTemplate.flver> <out.flver> <srcChr> <dstChr>
flver-dmy <flver> <attacks/bullet_dummies.tsv> <out.flver>
texbnd <ds2.texbnd> <nrTemplate texbnd> <out> <srcChr> <dstChr> <_h|_l>
tae <ds2 _pl.tae> <ds2 _snd.tae> <nrTemplate.tae> <animmap.csv> <nsaDumpDir> <out.tae> <dstChr> <attacksDir> <slots.json> <ds2 _sfx.tae|-> <sfxBase> <musicStopId> <stopMusicSlots,..> <defaultBulletDmy>
attacks <enc_regulation> <ds2 defs dir> <ds2 _pl.tae> <slots.json> <outDir> [--verify]
ragdoll <src ragdoll.hkx> <donor NR chrbnd|hkx> <skeleton.hkx|bind.json> <out.hkx> [--verify]
pf2hk <hk2014 packfile> <out hk2018> [--verify]
pf-dump <packfile> <out.json> | hkx-xml <hk2018> <out.xml> | rag-info <hk2018 ragdoll> | ds2param <reg> <param> <defs> [ids]
anibnd <tplAnibnd> <hkxDir> <tae> <chr> <modDir>
chrbnd <tplChrbnd> <tplChr> <flver> <physics.hkx> <chr> <modDir>
behbnd <tplBehbnd> <tplChr> <chr> <modDir>
hks <tpl.hks> <tplChr> <chr> <modDir>
luabnd <tplLuabnd> <battle.lua> <name> <modDir>
idcheck <regulation.bin> <Param:lo-hi>...

The code also accepts nsa-raw, nsa-static, nsa-root, rawstr, esd-dump, msb2-sounds, ffx-xml, fx-res and fx-pack, with no usage text. Run Ds2Port from its own folder.

Havok2014 commands

Running it with no arguments prints the usage. Commands in the switch: dump14, types14, xml18, dump18, typedb, ragdoll, rules, diff18, cloth, cloth-pairing, cloth-remap, cloth-verify, cloth-selftest, cloth-mesh-fix, behavior-character, batch, tagcheck, relayout, flver-layouts, flver-tris, hulls18, hkxbounds, hkxscale, navinfo, navcover, navunlink, navclearance, nav (prints the navmesh usage). flver-layouts, flver-tris, hulls18, hkxbounds and hkxscale are not in the usage text: not written up yet; see tools/dotnet/Havok2014/Cli.cs and FlverInfo.cs.

Frozen tools (kind = "frozen")

The exact builds that shipped 0.0.86, restored from the store. Their source has not moved to eclipse-build.

Name Exe What it is Notes
idreg idreg.exe by-entry merges of allmaterial, msg and banks not written up yet; source in souls-script-kt npc-ports/id-registry/IdReg
castlevariants CastleVariants.exe the 0.0.86 CastleVariants; the pipeline uses its fmgadd lacks newer operations; use castlevariants_src for map work
ledaport LedaPort.exe dump for dup_order.py not written up yet; source in souls-script-kt npc-ports/leda/tool
ssk_checks (scripts) release checks: ai_lua_budget.py, check_gaol_drops.py, castle-variants config/ not written up yet; they find their data by relative path, so they run from a layout-preserving copy

Data sets (kind = "data")

Nothing is built. EB tool build <name> restores the set and prints its folder.

Name What it holds
andre the July 2026 Andre SoulsFormats build that Polish, RegQ, TableRows and most tools link
andre_pin, hklib_pin Andre and HKLib from S:\Smithbox-havok-pin; Ds2HumanPort and NpcPort link these
hklib_sbx HKLib from Smithbox before its November rewrite; the DS2 family and the arts tools link it
andre_io Andre.IO.dll for Ds2Unpack
directxtex DirectXTexNet, its natives and oo2core_9, from the Smithbox 2.1.2 release
bhd5_decrypt_rust bhd5_decrypt_rust.dll for Ds2Unpack, MaterialFix, SkillPort
oo2core_6, oo2core_9 Oodle dlls (oo2core_9 is oo2core_9_win64.dll, used to normalise Kraken output)
lua502 stock Lua 5.0.2 dll for AiPort
paramdefs Nightreign paramdef XMLs (Smithbox 2.1.2); EB tool env exports the folder as EB_PARAMDEFS
vanilla_regulation the vanilla regulation.bin
aicommon vanilla aicommon(_dlc01).luabnd.dcx for ai_lua_budget.py
vgmstream vgmstream_cmd.exe r1776, the decoder for snd_bank.py
ds3_fdp_main_sound DS3 fdp_main.fsb and fdp_main.fev

Scripts that are not in tools.toml

Script What it does Run Page
tools/ds2/npmirror.py builds the per-run npc-ports mirror with eclipse-build tool bins imported by each DS2 build.py: npmirror.tools(work, NP, run), npmirror.bin(NP, rel) port-a-ds2-character.md
tools/ds2/anim_stage.py the DS2 anim stage (anim_build.py then tna1.py) as one cacheable step py -3.12 -I -B anim_stage.py --python <exe> --soulstruct-lib <dir> --anim-build <py> --tna1 <py> --out-dir <dir> --tna1-args "<args>" -- <anim_build args> same
tools/ds2/py/pursuer/, tools/ds2/py/aava/ the DS2-only Python steps called by the Kotlin port script same
tools/arts-py/tae_ds3.py DS3 TAE events to NR events for a weapon art py -3.12 -I -B tae_ds3.py <spec.json> <ds3 dump.tsv> <nr dump.tsv> <SpEffectParam.tsv> <fxr list> <out events.tsv> <log.txt> [fx map.tsv] port-a-weapon-skill.md
tools/snd-py/snd_bank.py DS3 sounds into cs_c4340.bnk from a job file snd_bank.py run <job.toml> --in-bank <in.bnk> --out-bank <out.bnk> [--fsb ..] [--fev ..] [--vgmstream ..] [--work ..] [--report ..] add-ds3-sounds.md
tools/snd-py/fev_ds3.py, wwbnk.py, wwise_port.py libraries for snd_bank.py (DS3 FEV reader, Wwise bank reader and writer, sample helpers) imported same
tools/camp-py/poi_templates/build.py POI template maps py -3.12 -I build.py <mapkit.exe> <release mapstudio dir> <vanilla mapstudio dir> <out dir> map-tools.md
tools/camp-py/hknp_tris.py collision triangles from a Havok2014 dump18 --all text from hknp_tris import tris_from_dump same
tools/skins/preflight.py where each skin's source parts are py -3.12 -I -B preflight.py [TOML|DIR ...] [--materialize OUT] skins.md
tools/release-py/, tools/stage.py release pipeline scripts and eb stage through EB release ... and EB stage ... ../build/README.md

Environment variables these tools read

Variable Tool Effect
EB_PARAMDEFS Polish, RegQ folder of Nightreign paramdef XMLs
EB_REG_IV Polish, TableRows the regulation IV: unset = random, content, or 32 hex digits
EB_FIX_CHAIN Ds2HumanPort tae path of fix-chain.tsv
EB_DHP_LIVE, EB_TOOLS_LIVE npmirror.py use live souls-script-kt tool builds
EB_NO_CACHE the DS2 Kotlin port script run the anim stage without the cache
EB_STORE skins/preflight.py store location, default S:/eclipse-build-store
SKILLPORT_CWD SkillPort base folder for relative path arguments
DR_LIST, DR_ROOT Ds3Retarget diagnostics: list binder files, print root motion
NSA_MAPOFF Ds2Port nsa-dump set to 1 for c6790
FIELDS StatPort dump limit columns
MORPHEME_MCP_CACHE the morpheme MCP cache folder

Tools still waiting to be imported

tools/README.md keeps the list ("Waiting to be imported"). Examples: the FX port script sfx_port.mjs, the FXR sound fix scripts, the weapon-port tools (WepModel, PatchNanaya, WepFix), parts-inspect, AndreTool, HawkTool, BossMenu. Import one before you use it again. Ds3Fix, which the DS3 route calls, is not in tools.toml either.

Source files this page documents (7)
  • eb:tools/tools.toml
  • eb:tools/dotnet/
  • eb:tools/ds2/
  • eb:tools/arts-py/
  • eb:tools/snd-py/
  • eb:tools/camp-py/
  • eb:tools/skins/

Changed one of these? Update this page: ports/reference.md (how).