Skip to content
Calpheon Labs Binary Schemas
Esc
navigateopen⌘Jpreview
On this page

detail_dialog.dbss

Binary layout, byte coverage, field semantics, and validation evidence for the intrinsic BSD detail_dialog decoder.

Investigation status

Status Value
Coverage 100%
Iteration BSD migration
Review state BSD migration reconciled
Last reviewed 2026-08-03
Captures examined Steam capture ads_version 856; PAZ 4784; file hash 3332398658; 27,695,672 extracted bytes; 58,550 rows; normalized SHA-256 5f9666dc48bfa37abb8c0ed7dc19d409a505d74c390da10a5691863403129fff
Decoder packages/scraper/src/tables/detail_dialog.dbss.ts
Remaining blockers None

See Decoder methodology for the confidence scale and evidence rules.

Field ledger

Field/path Offset and width Representation Claimed meaning Physical confidence Representation confidence Semantic confidence Evidence Status
rows + encoded DBSS count file +0 count, then variable rows array retained in physical order; count omitted detailed-dialogue row sequence Certain Certain Certain (structural) Intrinsic row grammar retains all 58,550 installed-capture rows and consumes to EOF Closed
outerDialogKey row +0, u32 equality-validated against dialogKey; omitted companion-facing lookup prefix Certain Certain Certain (structural) Every current prefix equals the payload key; targeted mutation rejects Closed
dialogKey row +4, u32 retained losslessly packed (dialogId << 16) | npcId identity Certain Certain Certain Exact equality with base rows and both pointer directories; 20,215 archived (Npc, DialogIndex) pairs overlap Closed
detailId row +8, u16 retained node identifier in the source dialogue-script namespace Certain Certain High 20,186/20,186 exact archived root matches to Dialog_Table.DialogNo; 29 unmatched roots are recognizable build drift and none have competing matches Closed
UTF-8 string byte lengths before actionName and cameraPreset, u32 each drive exact byte slices; omitted byte-string framing Certain Certain Certain (structural) Independent cursor scan reaches both subsequent fields and every row end exactly Closed
UTF-8 string framing words four bytes after each UTF-8 length consumed with .pad(4) and omitted serializer framing Certain Certain Neutral Intrinsic next-field boundaries and exact snapshot parity establish the width Closed neutral
actionName counted bytes strict fatal UTF-8 string retained animation/dialogue-scene asset name Certain Certain High 20,012/20,186 exact archived MainScene matches; current high-bit example decodes byte-exactly as À姠À¸ rather than mojibake Closed
cameraPreset counted bytes strict fatal UTF-8 string retained optional camera/function-scene preset or parameters Certain Certain High 20,184/20,186 exact archived FuncScene matches; both mismatches are historical drift Closed
UTF-16 string lengths before every primary/control string, u32 code-unit count drive exact length * 2 slices; omitted UTF-16LE string framing Certain Certain Certain (structural) Independent raw scan accounts for every string envelope and reaches all nested boundaries exactly Closed
UTF-16 string framing words four bytes after each UTF-16 length consumed with .pad(4) and omitted serializer framing Certain Certain Neutral Intrinsic next-field boundaries and exact snapshot parity establish the width Closed neutral
koreanText counted UTF-16LE code units retained primary Korean dialogue text Certain Certain High 19,861/20,186 exact archived MainDialog roots; 325 recognizable historical/localization/markup drifts Closed
control variable nested record after koreanText preserves all three sections and selected trailer dialogue control program Certain Certain High All member counts and both trailer branches consume exactly to companion-confirmed row ends Closed
control.servicePrompts + encoded count control +0, u32 then variable records ordered array retained; count omitted service prompt records and physical list length Certain Certain Certain (structural) All 197 current records consume exactly before the option count Closed
servicePrompts[].typeCode prompt +0, u8 raw numeric code retained service-prompt discriminator; individual values unnamed Certain Certain High for discriminator; Unknown per code Archived FuncDialog prefixes correlate with current prompt texts/codes, but shop maps to multiple codes Closed neutral
servicePrompts[].text prompt +1, counted UTF-16LE retained Korean service prompt text Certain Certain High 125/128 parsed archived prompt segments match exactly across 108 shared roots; representative 40001/1, node 473, matches inn> text exactly Closed
control.options + encoded count after service prompts, u32 then variable records ordered array retained; count omitted full dialogue options and physical list length Certain Certain Certain (structural) All 35,870 current records consume exactly before the next count Closed
options[].condition first counted UTF-16LE field retained raw availability expression; empty means unconditional Certain Certain High 5,133/5,717 archived destination overlaps match Dialog_Table.Condition; representative root 40035/1, destination 996, is exact Closed
options[].label second counted UTF-16LE field retained Korean button label Certain Certain High 5,301/5,717 archived overlaps match Dialog_Table.Button; representative 40035/1/996 is exact Closed
options[].typeCode after label, u32 raw numeric code retained dialogue-button type discriminator Certain Certain High for discriminator; Unknown per code 5,090/5,717 archived overlaps match Dialog_Table.ButtonType; current values remain observational and unconstrained Closed neutral
options[].description counted UTF-16LE field retained Korean response/explanation/result text Certain Certain High 5,404/5,717 archived overlaps match Dialog_Table.Dialog; representative 40035/1/996 is exact Closed
options[].action counted UTF-16LE field retained raw client command program; may be empty Certain Certain High 5,118/5,717 archived overlaps match Dialog_Table.Function; representative 40035/1/996 is exact Closed
options[].destinationId final u16 retained destination/source node (DialogNo) Certain Certain High All 5,717 historical destination overlaps match DialogNo; representative destination is 996 Closed
control.conditionalDialogues + encoded count after full options, u32 then variable records ordered array retained; count omitted condition-selected dialogues and physical list length Certain Certain Certain (structural) All 11,964 current records consume exactly before the trailer Closed
conditionalDialogues[].condition first counted UTF-16LE field retained raw availability expression Certain Certain High 76/82 archived destination overlaps match Dialog_Table.Condition; representative 42138/1, destination 2176, is exact Closed
conditionalDialogues[].text second counted UTF-16LE field retained alternate/main dialogue text, not a button label Certain Certain High 67/82 archived overlaps match Dialog_Table.MainDialog; current localization type 39 slot 4 and representative speech content independently agree Closed renamed
conditionalDialogues[].destinationId final u16 retained source dialogue node (DialogNo) Certain Certain High All 82 historical destination overlaps match DialogNo; representative destination is 2176 Closed
control.trailer.layout final 12 or 16 bytes decoder-supplied compact/standard brand physical trailer family only Certain Certain Certain (structural) Exact-size union covers 2,329 compact and 56,221 standard rows; counts sum to 58,550 Closed
compact trailer payload final 12 bytes consumed with .pad(12) and omitted neutral compact trailer Certain Certain Neutral Every compact branch has exactly 12 terminal bytes Closed neutral
standard leading constant trailer +0, u32 == 2 validated/omitted required literal; no gameplay meaning claimed Certain Certain Unknown beyond structure Every standard branch has 2; mutation rejects Closed neutral
standard framing word trailer +4, four bytes consumed by the leading constant’s .pad(4) neutral framing Certain Certain Neutral Exact branch framing establishes the width Closed neutral
standard trailing constant trailer +8, u16 == 2 validated/omitted required literal; no gameplay meaning claimed Certain Certain Unknown beyond structure Every standard branch has 2; a targeted mutation rejects Closed neutral
control.trailer.metadataFlags trailer +10, u16 full raw word retained, unsplit unresolved packed metadata Certain Certain Unknown Current standard rows contain 56,217 zeros, three 1s, and one 9; sparse bits have no stable consumer, archive column, or BDOCodex exposure Closed unknown
standard final framing bytes trailer +12, four bytes consumed by metadataFlags.pad(4) and omitted neutral trailer terminator Certain Certain Neutral Exact branch framing establishes the terminal width Closed neutral
derived npcId no additional bytes; low 16 bits of dialogKey retained beside physical key NPC identifier Certain Certain Certain Bit identity, base/detail equality, archived Npc, and BDOCodex representative 582/37 Closed
derived dialogId no additional bytes; high 16 bits of dialogKey retained beside physical key dialogue variant/index Certain Certain Certain Bit identity, base/detail equality, archived DialogIndex, and BDOCodex representative 582/37 Closed
Reserved ranges schema-local fixed widths consumed with .pad() and omitted framing or semantically neutral capacity Certain Certain Neutral Adjacent fields, strict EOF, and exact snapshot parity establish each width Closed neutral

Active assumptions

Findings

ID Finding Evidence Schema/documentation impact Status
F-01 The intrinsic decoder reproduces the transformed reference output exactly. Full snapshot comparison; 58,550 rows; normalized SHA-256 5f9666dc48bfa37abb8c0ed7dc19d409a505d74c390da10a5691863403129fff The BSD schema is the production source of truth. Closed
F-02 Row and section boundaries are intrinsic. Strict decoding reaches exact EOF on the installed capture. No companion offset table is loaded by this decoder. Closed
F-03 Reserved byte ranges are representation details. Their widths are fixed by adjacent fields and full-snapshot parity. .pad() keeps the schema readable and omits redundant output properties. Closed
F-04 Both intrinsic trailer branches are represented in the full snapshot. 56,221 standard rows plus 2,329 compact rows equal the 58,550-row capture. The union is exhaustive for the installed capture. Closed

Reconciled source findings

ID Finding Evidence Schema/documentation impact Status
DD-F01 Every formerly skipped post-length word is required zero framing. An independent scan covers all 351,386 current detail string-control words; all are zero, the prior capture agrees, and mutations of both shared string grammars reject. Every word is now reserved(4) rather than .skip(4). Closed
DD-F02 actionName and cameraPreset are UTF-8 byte strings, not Latin-1/ASCII projections. Key 2,586,092/node 2,791 stores c380e5a7a0c380c2b8, which strict UTF-8 decodes as À姠À¸; malformed bytes reject. Replaced the lossy ASCII projection with fatal UTF-8 decoding and added a byte-exact regression. Closed
DD-F03 The third control section is conditional dialogue, not compact button options. On 82 historical destination overlaps, 67 texts equal MainDialog; localization type 39 slot 4 supplies the same role; records lack button type/action/description; representative text is NPC speech. Renamed simpleOptions[].label to conditionalDialogues[].text in the decoder and NPC aggregate. Closed
DD-F04 The archived root semantics are exhaustive over their shared historical population. Archive: 27,424 rows/20,474 unique pairs. Client-2923: 58,537 pairs. Overlap: 20,215; exact client-2923 detailId root: 20,186; missing/mismatched roots: 29; multiple roots: zero. Field match/mismatch totals are recorded above. Precise Dialog_Table columns and representative keys are linked from resolved fields; drift is not normalized into decoder data. Closed
DD-F05 Full-option member names are independently corroborated, while current domains remain open. Of 15,971 options on exact historical roots, 5,717 destinations overlap and 3,936 match all five content fields; 10,254 destinations are newer than the archive. Retained semantic names and raw code/program values; did not add capture-specific enums, positivity checks, or maxima. Closed
DD-F06 Service prompts are identified, but numeric code names would overstate the evidence. Across 108 archived roots, 125/128 parsed prompt texts match; inn → 6 and several other prefixes are stable, but shop maps to several current codes. typeCode stays numeric/neutral; exact FuncDialog evidence is linked for text and discriminator context. Closed
DD-F07 Trailer physical layouts are certain while gameplay semantics remain unresolved. Exact branch sizes/constants cover every row and reject corruption. Neither archived SQLite nor targeted BDOCodex pages expose trailer bytes or metadataFlags; flagged rows lack archive dialogue rows. Structural constants are neutrally named and omitted; metadataFlags remains the complete raw word with semantic confidence Unknown. Closed
DD-F08 The companion independently proves every intrinsic row boundary. Unique spans (offset - 4 ... offset + byteLength) partition [4, 28,878,745); outer/payload/decoded keys agree, and base/detail key sequences are identical. Key, offset, and length corruptions fail the audit. Offset data remains verification rather than a runtime decoder dependency. Closed
DD-F09 Captured counts, domains, and old string ceilings are not format rules. Client 2923 has 58,537 rows, 197 prompts, 37,941 options, and 11,907 conditional dialogues. A valid option condition has 5,021 UTF-16 code units, falsifying the removed 4,096 ceiling. Counts stay data-driven; numeric codes/destinations are retained without capture-specific restrictions. Closed
DD-F10 Targeted BDOCodex pages corroborate entity context but expose no internal dialogue controls. Andro 582/37 supports the packed identity; Ahib 431/1433, Turo 431/567, adjacent Ahib 431/568, and Student 57193/1 support entity labels/context. 58116/1 is empty/untitled, and quest 3132/36 supplies only Karlstein context. None exposes detailId, trailer layout, or metadataFlags; the flagged entities also lack archived Dialog_Table rows. Only Andro’s precise entity link resolves packed-ID TSDoc. The remaining pages record attempted counterexamples/limits and do not increase field confidence or enter code/tests. Closed

Was this page helpful?