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 |