Yesterday's page said "Generic (394 per pak) is the unit datasheet".
Only 114 of the 394 are. Every IDXD file carries exactly one Generic
record and its schema is set by what kind of file it is. Partitioned
by field set, identically in all six GP_MAIN_GAME_*.pak:
114 has HP -- a unit datasheet
204 {Count} only -- a dialogue file
64 {ID, Name, SideID, Unique} -- a character (36 TCAF + 28 ADAN)
10 {EnumAsteroidGroup} -- an asteroid group
2 degenerate
204+114+64+10+2 = 394, and 178 distinct Generic.ID = 114 unit + 64
character, the only two shapes carrying an ID. That settles the
"178 IDs vs 394 records" question the previous entry left open.
Positive control in the same loop: for the 204 dialogue headers Count
equals the number of Message_NNN siblings, 204/204, zero mismatches.
Cross-check from the other side: Maneuver = 114, Effect = 114, the
carrying-entry sets are identical, every unit Generic has a Maneuver
sibling, and Generic.Type splits 43 Craft + 71 Vessel -- the same
43/71/114 unit-struct-runtime.md reached from live guest memory.
New tool generic_partition.py + artefact; ISL artefacts byte-identical.
125 lines
4.9 KiB
Plaintext
125 lines
4.9 KiB
Plaintext
# `Generic` is the per-FILE header record, not a table
|
|
#
|
|
# One `Generic` per IDXD pak entry; its schema is set by the file's TYPE.
|
|
# Regenerate: see docs/re/structures/unit-datasheet-static.md
|
|
|
|
== GP_MAIN_GAME_D.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_D2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_E.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_E2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_F.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_F2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_I.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_I2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_J.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_J2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_S.pak (1004 IDXD entries)
|
|
message-file header 204
|
|
unit datasheet 114
|
|
character 64
|
|
asteroid group 10
|
|
other (0 fields) 1
|
|
other (1 fields) 1
|
|
TOTAL Generic 394
|
|
distinct Generic.ID 178 (= unit 114 + character 64)
|
|
unit Generic.Type {'Craft': 43, 'Vessel': 71}
|
|
entries w/ Maneuver 114 w/ Effect 114
|
|
CONTROL message-header Count == #Message_NNN siblings: 204 ok / 0 bad
|
|
|
|
== GP_MAIN_GAME_S2D.pak (6 IDXD entries)
|
|
TOTAL Generic 0
|
|
distinct Generic.ID 0 (= unit 0 + character 0)
|
|
unit Generic.Type {}
|
|
entries w/ Maneuver 0 w/ Effect 0
|
|
CONTROL message-header Count == #Message_NNN siblings: 0 ok / 0 bad
|