Team Cereustooling wiki

Debug DLL reference

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

Status partial: every section, key and default below was read from src/config.rs on the main checkout (2026-11-12). The one-line meanings come from the code comments. Nothing was run in game for this page. A release branch can differ from main: the team notes mention [nightlord_cinder] arena_flag, a key that exists on a release branch and is not in main's config.rs.

Config files

All beside the DLL (the package's natives\ folder).

File Who owns it Rule
debug-nightreign.toml the player Missing or invalid = defaults. The launcher never overwrites an edited copy.
debug-nightreign.release.toml the release Merged over the player's file key by key. Every update replaces it.
debug-nightreign.seeds.toml the launcher [seed] off = [<Nightlord numbers>]. Can only remove pool entries. Ignored when the release sets launcher_toggles = false.
overlay-calibration.toml the overlay's Save button Wins over [overlay] rects.

debug-nightreign.toml.example shows most keys as comments. A commented value there is an example, not always the default: [depth6] shifting_earths = 2, [don] inject_depth6 = true and [dashboard] enabled = true are shown, but the defaults in code are 0, false and false. Keys the example leaves out are marked "not in example" below.

Sections and keys

[seed]

Key Default Meaning
force_pattern_id none Force this pattern for every expedition. Env DEBUG_NR_FORCE_SEED wins. Also switches off the depth-6 double Shifting Earth.
force_nightlord none The pattern's Nightlord (its targetBoss). Env DEBUG_NR_FORCE_NIGHTBOSS wins. Must match the pattern.
seed_mode "repeat_expeditions" Or "first_roll": force only the first roll. Env DEBUG_NR_SEED_MODE wins.
force_everdark "random" "on", "off" (or true / false): the Everdark flag of the Deep of Night pick. "on" skips Heolstor (7) and the Dreglord (9).
pool [] The Eclipse seed pool: { nightlord = N, pattern = P, don_weight = 1 } per entry. When set it wins over force_pattern_id and force_nightlord. Not in example.
don "random" With a pool, who picks the Deep of Night Nightlord: "random" (by don_weight), "lottery" (the game's roll), or a Nightlord number 0-9. Not in example.
launcher_toggles true Honour debug-nightreign.seeds.toml. Not in example.
seed_log false seed-selection-log.jsonl. Env DEBUG_NR_SEED_LOG=1 wins.
filter_log false seed-filter-pool-log.jsonl. Env DEBUG_NR_FILTER_LOG=1 wins.
tick_log false Documents intent only. The hook needs env DEBUG_NR_SEED_TICK_LOG=1.
orch_log, apply_log false Document intent only. The hooks need env DEBUG_NR_SEED_ORCH_HOOK=1 / DEBUG_NR_SEED_APPLY_LOG=1. Not in example.
packet_log false Packet logging switch. Not in example.

[depth6]

Key Default Meaning
hp_from_regulation true Read each enemy family's depth-6 HP step from the regulation. The hp_rate* keys are then ignored. Not in example.
hp_rate, hp_rate_trash, hp_rate_poi, hp_rate_formidable, hp_rate_night1, hp_rate_night2, hp_rate_nightlord about 1.0599, 1.0501, 1.0503, 1.0499, 1.1043, 1.1084, 1.1077 Depth-6 HP multipliers per enemy family, on top of depth 5.
stamina_rate 1.5 / 1.45 Shared stamina damage step.
poise_rate 0.84 / 0.85 Shared poise step.
damage_rate 1.0 Enemy damage, same as depth 5.
hp_rate_field, hp_rate_elite 1.05, 1.11 Legacy. Parsed, ignored.
hidden_map_weight, hidden_boss_weight, hidden_none_weight 50, 50, 0 The map-challenge roll at embark. The example says these live values are currently inert.
cursed_uncommon_rate, cursed_rare_rate 50, 80 Chance a chest weapon gets the 3-passive layout, depth 6 only.
everdark_rate 1.0 Everdark share in the depth-6 Nightlord lottery.
chaos_rank_list_extra 14002 Rewrites the server's rank list so a rating of 10000 is depth 6. 0 = off.
force_received_depth 0 6 = any rating above 0 is depth 6.
weapon_durability false Weapons lose uses on hit. Needs the patched HUD file. Env DEBUG_NR_WEAPON_DURABILITY=1 wins.
weapon_uses 30 Uses per weapon copy.
cataclysm_weights [] Depth-6 weights for 0, 1, 2, 3 cataclysms. Empty = the regulation's row. Not in example.
shifting_earths 0 2 = every depth-6 run gets Mountaintop and Rotted Woods together. Off whenever a pattern is forced.
extra_shifting_earth 0 Which of the pair goes first (1 Mountaintop, 3 Rotted Woods; 0 = the rolled one, else Mountaintop).
custom_earth 0 6 = support for a custom sixth Shifting Earth layer (event flag 7606, map files _60/_61/_62).
custom_earth_block [10, 9] The LOD2 block the layer covers: tiles 40-43 by 36-39.
force_custom_earth false Test aid: every expedition gets layer 6 alone. Env DEBUG_NR_FORCE_EARTH6=1 does the same.

[don] (Deep of Night)

Key Default Meaning
log false don-depth-log.jsonl, don-ui-latest.txt, don-ui-log.jsonl. Env DEBUG_NR_DON_LOG=1 wins.
inject_depth6 false Use the depth-6 Nightlord weights when depth is 6. Env DEBUG_NR_DON_INJECT_DEPTH6.
remap_depth6 false Kill switch: treat depth 6 as 5. Env DEBUG_NR_DON_REMAP_DEPTH6=1.
force_depth none Override the lottery's depth. Env DEBUG_NR_DON_FORCE_DEPTH. Not in example as a key.
force_ui_depth none Override the RankControl row when no live rating is stored. Env DEBUG_NR_DON_FORCE_UI_DEPTH.
rating_cap none Optional clamp of the displayed rating max. Env DEBUG_NR_DON_RATING_CAP.
force_rating none One-shot rating write on first open. Env DEBUG_NR_DON_FORCE_RATING.
wylder_greatsword_oneshot false Test aid: boosts Wylder's Greatsword. Not in example.
trace_hooks false Hit trace hooks for the dashboard. Env DEBUG_NR_TRACE_HOOKS=1. Not in example.

[server] (not in example)

Key Default Meaning
owns_depth false The Team Cereus server owns depth and rating. The client stops rewriting the rank list and pinning the rating.

[storm_control]

Key Default Meaning
enabled true Hook the expedition clock and listen for the hotkeys. At 1x nothing changes.
hotkey_stop "F5" Storm stopped, or back to the multiplier from before. "" = none.
hotkey_speed "F6" Cycle 1x, 2x, 5x, 10x. "" = none.
solo_only false true = hands off in any co-op session. false = the host may use it; guests never. (A code comment says "Default true"; the default in code is false.)
indicator true Corner badge while the storm is not at 1x.
indicator_corner "top-right" top-left, top-right, bottom-left, bottom-right.

The module header says: not proven in game.

[hitbox_draw]

Key Default Meaning
enabled false The game's own debug draw of attack hits and capsules. No hooks.
hotkey "" F1-F12: steps through cycle. Only while the game has focus.
start_on true With a hotkey: draw the start set at launch.
attacks true Start set: every live attack hit.
attack_details false The same hits with their recorded path. Allocates per hit.
capsules false Each character's movement capsule.
collision_shapes false Havok character proxy shapes.
axes false Orientation axes.
cycle ["attacks+attack_details", "attacks+capsules", "all", "off"] Modes the hotkey steps through.
attacks_key, attack_details_key, capsules_key, collision_shapes_key, axes_key "" Optional F-key per view.

It never turns on the per-hit text labels. Team note (2026-11-06): found by static reading; whether the capsule views draw in game was unproven.

[runs]

Key Default Meaning
enabled true Record the local player's path through each expedition.
folder "runs" Beside the DLL, or an absolute path.
sample_ms 500 Sample interval.
probe_every_s 30 Raw character bytes in the file this often. 0 = off.

Which recorded field is the true map position is not proven. A release toml can switch the recorder off; check it.

[debug_log] and [debug_log.caps]

See Turn on a debug log for the full key table.

[attack_trace]

Key Default Meaning
enabled false Tester log of what enemy AI targets when an attack starts. Reads only. Needs [debug_log] enabled.
models ["c9100-c9999"] Models or ranges, matched on the model or npc id.
rows [] NpcParam rows, also traced.
radius 40.0 Only within this distance of the player.
max_chrs 12 At most this many of the nearest.
poll_ms 33 Read interval.
attack_anims ["3000-3999"] Animation ids (modulo 1,000,000) that count as an attack start.
all_anims false Log every other animation change too.
target_changes true Log AI target changes.
max_lines_per_s 30 Line budget.

[restage]

Key Default Meaning
replay_gc "gate" The script GC job on Restage phantoms. gate holds it until the phantom's first update has finished (the crash fix). off never runs it on phantoms. vanilla adds no hook.

[crash]

Key Default Meaning
enabled true Crash capture into eclipse-logs/. Local files only.
keep_reports 10 Report folders kept.
minidump true Write minidump.dmp.
test_hotkey "" "F11" = Ctrl+Shift+F11 crashes the game on purpose.
restage_fields true Restage fields in report.json.
display_guard true Steps over a vanilla divide by zero when the monitor reports no size. Not in example.

[hang]

Key Default Meaning
enabled true The freeze watchdog. No hooks.
stall_s 8.0 Seconds without a frame before a report (clamped 2 to 600).
dump true minidump.dmp from a process snapshot.
dump_full true Also minidump-full.dmp.
dump_max_mb 256 A bigger full dump is deleted.
dump_process_data false Adds environment, command line and handle names. Local tests only.
max_reports 2 Confirmed freeze reports per launch.
max_unconfirmed 1 Unconfirmed ones per launch.
local_reports true Reports go to %LOCALAPPDATA%\Nightreign Eclipse\crash-reports.
drive_probe "risky" "risky" (USB, removable, network installs), "always", "off".
drive_probe_s 5.0 Seconds between probe reads.
drive_slow_ms 250 A read this slow is a drive_slow line.
stale_gate true Pause the debug loggers while frames stand still.
exit_watch true Log every close-type window message with who sent it. Not in example.

[lua_heap]

Key Default Meaning
budget_mib 64 Size of the enemy-AI Lua heap. Vanilla is 20. 0 = vanilla. Clamped to 20 to 256.

[ai_debug]

Key Default Meaning
enabled false Enemy AI (Lua) diagnostics.
exclusive false Install only the AI hooks; skip most of the rest of the DLL.
log_file "ai-debug.log" Beside the DLL.
lua_errors, lua_loads, lua_print, goal_register, activity true Which line kinds are logged.
activity_interval_ms 1000 Window length.
think_ids [97500000, 97600000, 97210000] Watched enemies, by think id.
chunk_match [] Extra source substrings to watch, for example a logic id.
repeat_full 3 The same error is logged in full this many times, then at counts 10, 100, 1000.
per_npc true One AI_NPC line per watched enemy per window.
ring_len 8 Recent binding calls kept per enemy.
goal_trace true GOAL_TRACE, AI_CALL, GOAL_UNKNOWN, AI_GOALS lines. Needs per_npc.
trace_lines_per_window 150 Cap on trace lines per window.
trace_natives 13 binding names Which AI bindings get an AI_CALL line.
quiet_after_ms 1500 Gap before AI_QUIET.
lua_budget false lua_state lines in eclipse-events.log: Lua heap use per load.

[hot_reload]

Key Default Meaning
enabled false Re-apply edited AI scripts and params while the game runs. Lua reload needs [ai_debug] enabled.
log_file "hot-reload.log" Beside the DLL.
poll_ms 500 File watch interval.
lua true Watch *.luabnd.dcx in script_dir.
script_dir ..\mod\script Relative to the DLL folder.
sticky true Re-run the newest version after the engine reloads that chunk.
params true Watch the regulation.
regulation ..\mod\regulation.bin Relative to the DLL folder.
param_names NpcParam, NpcThinkParam, AtkParam_Npc, Bullet, BehaviorParam, SpEffectParam, ThrowParam Params whose changed rows are copied in.
log_rows 40 Changed row ids listed per param in the log.
reload_key "" F1-F12: re-apply everything now.
log_file_opens false Log loose package files the game opens.
file_open_match \chr\, \script\, \action\, \sd\, regulation Path parts that are logged.

The README says: not verified in game yet.

[sound_debug]

Key Default Meaning
enabled false Wwise and character sound diagnostics.
log_file "sound-debug.log" Beside the DLL.
chr_filter ["c9760", "c9740", "c9700", "c9710"] Event and bank name prefixes to follow.
log_names, cs_posts, log_all_banks, bank_callbacks, query_hierarchy, alive_check, wwise_monitor true Line kinds.
log_all_game_objects false Every registered sound object.
alive_check_ms [150, 1500] When a playing sound is checked again.
repeat_full 5 Same repeat rule as [ai_debug].
summary_interval_ms 5000 Summary interval.
alloc_stats false Count Wwise heap bytes.
tae_trace, tae_trace_all_types false Trace the TAE sound event handler's early exits.
bank_resolve_trace false Trace bank id resolution.
voice_fallback, voice_fallback_radius, voice_parts false, 3.0, [] Human-voice fix for ported humans. Not in example.
bgm_probe, bgm_probe_ms, bgm_line_ms, bgm_events, bgm_callbacks, bgm_set_state_hook, bgm_all_states, bgm_query_poll false, 250, 1000, 5 event ids, true, true, false, false Boss music probe. Not in example.

[npc_sound]

Key Default Meaning
npc_player_sound_cull_fix false Makes human NPCs placed in a map audible by distance, like other enemies.
npc_player_sound_radius 48.0 Metres used when the NpcParam value cannot be read.
log false NPC_SOUND_CULL lines in sound-debug.log.

[hp_tick_sync]

Key Default Meaning
enabled true Continuous HP loss and recovery passives tick in the same frame.
ids 46277, 350200, 6850500, 7001100, 7220000, 8540000, 8766000, 8766050 The SpEffect ids aligned.

[ui]

Key Default Meaning
hero_change_fade 0.25 Seconds of black screen when the Nightfarer is changed. 0.5 = vanilla (no hooks).
andre_weapon true Andre's starting armament goes on the Nightfarer's garb rows.
andre_menu_mark 1 Icon on the picked armament's row, 1 to 13. 0 = none.
andre_menu_direct true Andre's menu opens straight on the armament list.
andre_intro_hero 0 Experiment: play the expedition intro as this Nightfarer (1 to 10). 0 = off. Not in example.

[nightlord_cinder] (not in example)

Key Default Meaning
enabled false The Soul of Cinder Nightlord on menu row 17. The release toml turns it on.
row, boss 17, 7 The menu row and the boss index the engine reads for it.
everdark_boss7 true In Deep of Night or with a pool, boss 7 always gets the Everdark flag.
music true Swap the boss music state for the port's own.
run_flag 7590 Event flag kept on while this Nightlord is the expedition's. 0 = off.
menu_list true Make the expedition list show the row.
group, carrier, state "BgmEnemyType", "_CL_c7580", "c9915" The music state names.

[talisman_pouch] (not in example)

Key Default Meaning
enabled false One extra talisman slot while the Eclipse pouch is owned. A release toml turns it on.
goods_id 10051 The pouch's EquipParamGoods id.
write false Apply the extra slot.
diag false Log the values it reads.

[events]

Key Default Meaning
enabled false Set event flags for offline tests. Writes are local, not synced.
log_file "flag-events.log" Beside the DLL.
set_flags [] Set once per run. A negative id clears the flag.
after_flag 7500 Wait for this flag first (7500 = Day 1 started). 0 = as soon as possible.
delay_s 15.0 Delay after after_flag.
hotkey "" F1-F12: sets hotkey_flags on each press.
hotkey_flags [] Flags for the hotkey.
watch_flags [] Flags logged at start and on change.
poll_ms 250 Poll interval.

[dashboard] and [test_cheats]

Key Default Meaning
[dashboard] enabled false The LAN control page.
bind, port "0.0.0.0", 27015 Where it listens.
token "" Shared secret for every POST. Empty = anyone on the LAN. Never write a real token on a page.
weapon_durability 30 Weapon use-counter max set from the dashboard. Not in example.
[test_cheats] infinite_weapon_uses false Weapon use counters never drop.
fast_character_skill false The Nightfarer skill recharges almost at once.
character_skill_cooldown 0.1 Seconds while that is on (0.05 to 60).
character_skill_uses 0 0 = vanilla charges, else at least this many (max 5).
stonesword_key_flag 0 Event flag of the Stonesword Key test event. 0 = off.

[test_cheats] is never set in a release toml.

[overlay]

Key Default Meaning
enabled false In-game weapon-use bars. A stand-in.
toggle_key, calibrate_key "F7", "F8" Hide or show; open calibration.
opacity 0.35 Bar opacity.
show_text true Show the number.
right, left {x, y, w, h} rects Where the bars sit, as fractions of the screen.

[net_capture]

Key Default Meaning
enabled false net-capture.jsonl: decrypted previews of the game's server traffic. A developer tool. Never uploaded.

Sections that are gone or not in main

  • [stance_log]: removed. An old toml with it still loads.
  • [chr_reload]: named in src/chr_reload.rs, but main's config.rs has no such section. See the module list.

Files the DLL writes

Beside the DLL unless a path is given.

File From
chains-debug The DLL's text log.
eclipse-logs/eclipse-events.log The event log ([crash]). Rotates at 1 MB.
eclipse-logs/eclipse-debug.jsonl, eclipse-anim.jsonl, eclipse-poise.jsonl [debug_log]
eclipse-logs/crash-reports/<stamp>-<pid>/ [crash]
%LOCALAPPDATA%\Nightreign Eclipse\crash-reports\<stamp>-<pid>-hang\ [hang]
runs/<UTC date>_seed<pattern>.json [runs]
seed-run-log.jsonl, seed-boss-log.jsonl The seed hooks.
seed-selection-log.jsonl, seed-filter-pool-log.jsonl [seed] seed_log, filter_log
don-depth-log.jsonl, don-ui-latest.txt, don-ui-log.jsonl [don] log
ai-debug.log, hot-reload.log, sound-debug.log, flag-events.log Their sections.
net-capture.jsonl [net_capture]

Source modules (src/)

Compiled into the DLL (listed in lib.rs):

Module What it does
config.rs Loads and merges the toml files.
path.rs Finds the DLL's folder for logs.
seed_filter.rs, seed_log.rs, seed_boss.rs, seed_pick.rs, seed_session.rs Seed forcing: the pattern filter, the per-expedition pin and run log, the Deep of Night Nightlord pick, the seed pool, and who is host or guest.
seed_orch.rs, seed_apply.rs, seed_tick.rs, packet_log.rs Opt-in, log-only seed hooks.
hook_guard.rs Re-arms hooks the game's anti-tamper repairs away.
shifting_earth.rs Depth-6 double Shifting Earth, and the custom layer 6.
don_ui/ Deep of Night: rating, HUD, depth-6 scaling, cursed rates, weapon uses, the dashboard's cheats, the Talisman Pouch.
chaos_rank_http.rs Rewrites the server's rank list for depth 6; [net_capture].
red_variant.rs Depth-6 red enemy variants.
depth6_chalices.rs A Nightlord kill at depth 6 unlocks two chalices.
cinder_nightlord.rs [nightlord_cinder]: the Soul of Cinder Nightlord.
andre_weapon.rs, andre_menu.rs, andre_store.rs Andre's starting armament: applying it, his menu, and a second copy of the picks.
hero_fade.rs [ui] hero_change_fade.
hp_tick_sync.rs [hp_tick_sync].
lua_heap.rs [lua_heap]: the bigger enemy-AI Lua heap.
storm_control.rs [storm_control]: storm and expedition clock speed.
hitbox_draw.rs [hitbox_draw]: the engine's debug draw of hits and capsules.
run_recorder.rs [runs]: records the path through each expedition for the seed viewer.
restage_trace.rs The Restage crash fix ([restage]) and its trace.
eclipse_log.rs The size-capped logs in eclipse-logs/: queue, caps, scrubbing.
chr_watch.rs, combat.rs [debug_log]: the character watcher and the combat channel.
poise_trace.rs [debug_log] poise_hooks.
attack_trace.rs [attack_trace].
crash.rs, crash_guard.rs, hks_crash.rs, display_guard.rs Crash capture, its fallbacks, the script-code crash details, and the display divide-by-zero guard.
hang_watch.rs, drive_probe.rs, exit_watch.rs [hang]: freeze watchdog, install drive probe, why the game closed.
ai_debug.rs, ai_binds.rs [ai_debug] and the AI binding name table.
hot_reload.rs, souls_files.rs [hot_reload] and the file readers it needs.
sound_debug.rs, sound_debug/ [sound_debug], including the boss music probe.
npc_sound.rs [npc_sound].
flag_events.rs [events].
server.rs, dashboard.html The LAN dashboard.
overlay.rs The in-game overlay: weapon-use bars and the storm badge.
dump.rs Param and singleton dumps.

Present in the folder but not compiled on main (not in lib.rs):

File State
chr_reload.rs Dev-only reload of one character's loose files. Untracked in git.
reload_status.rs Hot-reload and chr-reload status for the dashboard. Untracked.
script_view.rs Read-only script listing for the dashboard. Untracked.
pose_sample.rs Facing sample for [debug_log] pose. Untracked.
display.rs, display/, events.rs, monitor.rs Dormant older code; the file headers say so.
hooks.rs Not in lib.rs. Its purpose was not checked.

There is no stance_log.rs on main. The stance logger of release 0.0.40 never logged anything (team note, 2026-11-02) and was removed; poise_* lines in eclipse-poise.jsonl replace it.

Source files this page documents (5)
  • fsrs:tools/debug-nightreign/src/config.rs
  • fsrs:tools/debug-nightreign/debug-nightreign.toml.example
  • fsrs:tools/debug-nightreign/src/lib.rs
  • fsrs:tools/debug-nightreign/src/
  • fsrs:tools/debug-nightreign/README.md

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