KB: authentic targeting model recovered (Reticle pick-ray, RETICLE.h [T0])
The engine Reticle struct (the mech's "TargetReticle" attribute) is the acquisition chain: slewable screen-space crosshair -> pick-ray -> the entity + damage zone under it become mech+0x388/0x38c, the intersection point mech+0x37c. Convergence-on-lock is authentic (FireWeapon has no aim test); targetWithinRange = dist < (1-damage) x weaponRange (FUN_004b9bdc). Port acquisition is a bring-up stand-in (hardwired lock + BT_FIRE_ARC cone) -> tracked as the next combat-fidelity step. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
48b17750e5
commit
6988821525
@@ -32,6 +32,25 @@ player input). [T1]
|
||||
`mech+0x38c` = targeted sub-zone (−1=whole). Weapons cache hasTarget/targetPoint/muzzlePoint,
|
||||
refreshed each frame. [T1]
|
||||
|
||||
**The AUTHENTIC acquisition model (recovered 2026-07-08, `engine/MUNGA/RETICLE.h` [T0]):** the
|
||||
engine `Reticle` struct (the mech's **"TargetReticle" attribute** — the same one the reticle
|
||||
renderable ctor binds) carries `reticlePosition` (screen −1..+1, SLEWABLE — the mechmppr
|
||||
`freeAimSlew`), `pickPointingOn`, `rayIntersection` (Point3D), `targetEntity`, and
|
||||
`targetDamageZone`: the pilot slews the crosshair; the engine **pick-rays through it** into the
|
||||
3D world; the entity (and the specific DAMAGE ZONE) under the crosshair become the target. The
|
||||
mech's three slots are this pick's result: `0x37c` = rayIntersection, `0x388` = targetEntity,
|
||||
`0x38c` = targetDamageZone (so aimed shots hit the zone under the crosshair — the aimed-damage
|
||||
path). `Reticle::ReticleElements` has a `TargetDesignatorOn` box + direction-arrow bit (the HUD's
|
||||
lock box; the reticle's off-screen turn arrows point at it). Once locked, `Emitter::FireWeapon`
|
||||
converges on the target with NO aim/arc test (part_013.c:7758: `range <= weaponRange → damage
|
||||
*(mech+0x388)`) — convergence-on-lock IS authentic; the skill is keeping the crosshair on the
|
||||
enemy. `MechWeapon::UpdateTargetState` (`FUN_004b9bdc` [T1]): `targetWithinRange = dist <
|
||||
(1 − hostZoneDamage) × weaponRange` — damage DEGRADES weapon reach; that flag is the HUD pip's
|
||||
lit state. The 0x388 WRITER (the per-frame reticle→mech copy) is in an un-exported decomp gap.
|
||||
**Port status:** acquisition is BRING-UP (target hardwired to `gEnemyMech` + a `BT_FIRE_ARC`
|
||||
±30°+torso-reach cone gating trigger/damage — both PORT stand-ins, mech4.cpp targeting block);
|
||||
the authentic slew+pick chain is NOT yet reconstructed. [T2 status / T0+T1 model]
|
||||
|
||||
## Firing arc + muzzles
|
||||
There is NO firing-arc field in the binary (`Emitter::FireWeapon` fires whenever HasActiveTarget) —
|
||||
the 1995 game got away with it because it was **cockpit-only** (a beam behind you is off-camera). The
|
||||
|
||||
@@ -51,6 +51,15 @@ authentic path scoped.
|
||||
these are MODE flags — in the basic test mission the inert Myomers / dormant valve is likely AUTHENTIC
|
||||
(advanced damage off); wiring makes them RESPOND when a mission enables the mode, not necessarily change
|
||||
the basic-mission behavior. The MessageBoard feed is separate (StatusMessagePool, below).
|
||||
- **Authentic target acquisition (the reticle pick-ray)** — the real chain is `Reticle`
|
||||
(`engine/MUNGA/RETICLE.h` [T0], the mech's "TargetReticle" attr): slew `reticlePosition`
|
||||
(mechmppr `freeAimSlew`) → engine pick-ray → `targetEntity`/`targetDamageZone`/`rayIntersection`
|
||||
→ the mech's `0x37c/0x388/0x38c` slots (see [[combat-damage]] Targeting). Port bring-up
|
||||
hardwires the lock to `gEnemyMech` + a `BT_FIRE_ARC` cone (both stand-ins). What resolves it:
|
||||
reconstruct the slew input + the pick test (entity ray-intersection exists in the engine) + the
|
||||
per-frame reticle→mech copy (its binary form is in an un-exported gap — re-export the
|
||||
mech2/HUD region). Payoff: aimed zone damage, the designator box, authentic "keep the crosshair
|
||||
on the enemy" gunnery. Status: OPEN (next combat-fidelity step).
|
||||
- **Cockpit HUD leftovers (task #35 residue, 2026-07-08)** — the reticle + 7 weapon pips are LIVE
|
||||
(see [[gauges-hud]] + `phases/phase-02-dpl2d-reticle.md`), but three pieces remain: (a) the
|
||||
**blx_cop canopy shell** renders BLACK (untextured/unlit in our inside view) so it's hidden by a
|
||||
|
||||
Reference in New Issue
Block a user