Profile and mount field catalogue
The definitions browser now joins movement, aiming, damage, collision, camera, LOD, equipment and effect consumers back to the original records. Values and on-disk offsets are retained alongside the typed names; native HERC objects add a two-byte prefix, so their instruction offsets are two greater.
build_stats.py decodes and checks the original readers;
audit_profile_consumers.py adds the consumer catalogue and bounded runtime-read
index. Rebuild them in that order. The latter records 80 distinct profile read
sites across 144 original full simulation frames in six initialized scenarios:
idle, moving, turning, activated opponents, firing and collision. Actual actor
controllers, damage and weapon methods execute; input is controlled and sound
uses the documented silent gate. The report is
profile-consumers.json.
| Disk offset | Meaning / consumer |
|---|---|
| 0–8 | Body steering and gait rates/accelerations; LOCOMOTION.md |
| 10 | Camera part ID, original 0x13201 |
| 12–18, 26–44 | Movement/start-stop and articulated aiming sequences/rates/limits |
| 20 | Placement height |
| 22, 24 | Shield center height and radius; 0xfca8 / HERC impact 0x13b44 |
| 46–65 | Signed part-ID list, negative terminator; cross-LOD binding 0x19ba0 |
| 66 | Base combat assessment rating |
| 68 | Disabled animation sequence |
| 70 | Low-memory model root selection, 0x19cf0 |
| 72, 74, 76 | Leg count, removal after destruction, contact mass factor |
| 78, 80 | Zero in all 16 supplied profiles; no semantic consumer identified and no read in this bounded trace |
| 82, 84 | Chassis salvage value and detachable-weapon permission |
| 86–97 | Display name bytes |
| 98–104 | Local camera attachment and orbit-focus Y/Z offsets, 0x10ee0 |
| 106 | Runtime chassis index; loader 0x19cf0 overwrites the stored word |
| 108, 110 | Reverse fast-gait exit rate and actor contact radius |
| 112–116 | Signed attachment-effect type list, negative terminator |
| 117–121 | Corresponding animated model part IDs |
| 122 | Turn-in-place sequence |
| 124–147 | Twelve internal-damage combat-rating penalties |
| 148 | LIGHT/MEDIUM/HEAVY/ENEMY texture bank selection |
| 150–169 | Ten stored sound-trigger thresholds; current attachment consumer indexes 0–3 |
| 170–189 | Ten stored sound-rearm thresholds; current attachment consumer indexes 0–3 |
| 190 | Initial shield capacity |
Original 0x11330 creates the attached effects from the type list and the
0xbc1d8 model table. 0x144dc places them at their animated part transforms.
For the player's footsteps it selects a threshold pair according to gait,
direction and disabled/collapse state. Crossing one threshold arms a latch;
crossing the other emits sound 29 or 31 and clears it. Thus these sounds follow
authored motion rather than a constant timer. The disabled type-2 case uses world
height; the ordinary footstep case uses the part's local Y coordinate. The full
stored arrays remain visible even though their extra slots lack a demonstrated
current consumer.
GL mount records are 26 bytes: part ID at 0; pitch/yaw sequence at 2/4; orientation at 6; cockpit control number at 7; XYZ position at 16/18/20; paired-slot relative offset at 22; equipment slot at 23. Construction, muzzle transforms, templates, weapon groups and paired firing are documented in WEAPONS.md and MODEL_BROWSER.md. Disk 8/10/12/14/24 remain unlabelled. Their values resemble angle bounds and a rate, but values alone do not establish that meaning or that the current game uses them. The bounded original frame trace observes no reads of those bytes; raw values are retained and are not applied as invented limits in the viewer.
No observed read is not a proof against other branches or computed consumers. These are explicit endpoints for the remaining neutral fields, not claims that all historical intentions have been recovered. The complete original tape replays add scheduling evidence; they do not by themselves give every stored value a semantic name.