rowCount, rows[] |
table +0, 4 then rows |
retained u32 peek and counted array |
NPC trade rows |
Certain |
Certain |
High |
Count frames 125 intrinsic rows; strict decoding ends at byte 207,256; all rows match the reference |
Closed |
rows[].npcId |
row +0, 2 |
retained u16 |
Owner NPC identifier |
Certain |
Certain |
Certain |
Exact compact-table and both-directory key-set match |
Closed |
rows[].entryCount, entries[] |
row +2, 4 then 127*n |
retained u32 peek and counted array |
Entry count and list |
Certain |
Certain |
Certain |
Counts derive all 125 companion byte lengths and partition the primary table without gaps |
Closed |
| repeated NPC validation |
complete nested row |
relational .check() |
Stored owner-key invariant |
Certain |
Certain |
Certain |
All 1,626 entries repeat the enclosing NPC ID; validator rejects a mutated repeat |
Closed |
entries[].npcId |
entry +0, 2 |
retained u16 |
Repeated owner NPC identifier |
Certain |
Certain |
Certain |
Exhaustive equality with enclosing row IDs |
Closed |
entries[].tradeItemId |
entry +2, 4 |
retained u32 |
Traded item identifier |
Certain |
Certain |
Certain |
All values resolve to level-zero item rows; lookup is intentionally deferred |
Closed |
entries[].reserved06 |
entry +6..+53, 48 |
zero-validated reserved byte range, omitted |
Structural padding |
Certain |
Certain |
Unknown |
Every captured byte is zero and BSD rejects nonzero mutations |
Closed |
entries[].field54 |
entry +54, 2 |
retained overlapping u16 peek |
Raw trade control |
Certain |
Certain |
Unknown |
Exact reference equality over both following byte views |
Closed |
entries[].namespaceCode |
entry +54, 1 |
retained overlapping u8 |
Internal trade namespace code |
Certain |
Certain |
High |
Exact four-code set match with both source and target codes in itemtradeetc.bss |
Closed |
entries[].field55 |
entry +55, 1 |
retained overlapping u8 |
Neutral high-byte control |
Certain |
Certain |
Unknown |
Recombines exactly with namespaceCode into field54; no capture-specific value validation |
Closed |
entries[].reserved56 |
entry +56..+106, 51 |
zero-validated reserved byte range, omitted |
Structural padding |
Certain |
Certain |
Unknown |
Every captured byte is zero and BSD rejects nonzero mutations |
Closed |
entries[].field107 |
entry +107, 2 |
retained overlapping u16 peek |
Neutral control |
Certain |
Certain |
Unknown |
Exact reference equality and exhaustive recomposition from the two byte views |
Closed |
entries[].field107LowByte, field108 |
entry +107, 1; +108, 1 |
retained overlapping u8 views |
Neutral byte controls |
Certain |
Certain |
Unknown |
Recompose field107 exactly in all 1,626 entries |
Closed |
entries[].reserved109 |
entry +109..+123, 15 |
zero-validated reserved byte range, omitted |
Structural padding |
Certain |
Certain |
Unknown |
Every captured byte is zero and BSD rejects nonzero mutations |
Closed |
entries[].field124 |
entry +124, 2 |
retained overlapping u16 peek |
Neutral control |
Certain |
Certain |
Unknown |
Exact reference equality and exhaustive recomposition from the two byte views |
Closed |
entries[].field124LowByte, field125 |
entry +124, 1; +125, 1 |
retained overlapping u8 views |
Neutral byte controls |
Certain |
Certain |
Unknown |
Recompose field124 exactly in all 1,626 entries |
Closed |
entries[].reserved126 |
entry +126, 1 |
zero-validated reserved byte range, omitted |
Structural padding |
Certain |
Certain |
Unknown |
Every captured byte is zero and BSD rejects nonzero mutations |
Closed |
| entry framing |
each entry, 127 |
struct(...).fixedLength(127) validation |
Complete entry grammar |
Certain |
Certain |
Certain |
Every non-byte field is retained, every omission is a reserved byte range, and all 1,626 entries consume 127 bytes |
Closed |