Files
Syplheed-Reborn/tools/re-capture/lock_probe.sh
claude-re ab8f5307ff docs/re: in-flight control mapping, and why lethality is an aim-dwell problem
Probed rather than assumed: hold each pad input and photograph the HUD ammo
counters. RB = nose gun (NOSE BM 6000->5956 in 4 s, ~11 rounds/s, HEAT rises),
Y = main mount (MAIN MPM 300->299), d-pad = tactical map overlay, and
LB/X/B/A/LS/RS move neither counter.

No target-cycle input exists. The green TARGET marker is already up with nothing
pressed, so the game selects for us and a guided missile's lock is a
time-on-target mechanic, not a button. That closes the lethality question: it is
not target choice (escort weighting), not ballistics (now from the confirmed
Shell records), and not the mapping — the steering loop simply never holds the
nose on one contact long enough to lock. Aim dwell is the next lever.

Also records two things the reimplementation needs: two weapons with separate
ammo pools and HUD counters, and a HEAT bar that fills while the gun fires
(cap and cool-down not yet measured).
2026-07-30 18:49:16 +00:00

35 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Which input SELECTS a target, and does a lock then build?
#
# 98 guided missiles produced 2 kills. A guided missile with nothing to guide to
# flies straight, so the suspicion is that the loop has never selected a target
# at all: the HUD carries a `TARGET` marker and a lock reticle, and no button in
# pilot.py has ever touched them. fire_probe.sh already showed LB/X/B/A/LS/RS do
# not discharge a weapon — but "does not fire" says nothing about "does not
# select", so sweep them again watching the RETICLE instead of the ammo.
#
# Captures the centre of the screen (reticle + lock brackets) and the right-hand
# target panel, so a selection or a building lock is visible either way.
set -u
export HOME=/sylph-home/re SDL_AUDIODRIVER=dummy DISPLAY=:98
SD="$(cd "$(dirname "$0")" && pwd)"
SHOTS=/sylph-home/re/shots
HOLD="${1:-3}"
shot(){ screenshot "$SHOTS/lock-$1.png" >/dev/null 2>&1; echo " shot $1"; }
"$SD/launch_mission.sh" fly || { echo "BOOT FAILED"; exit 1; }
sleep 3
shot "00-idle"
# tap, not hold: a select is an edge, and holding a cycle button would just spin
# through every contact. Two taps each, so a cycle that lands on nothing the
# first time still shows on the second.
for b in RS LS LB B X A Y; do
vgamepad tap "$b" 200; sleep 0.4; vgamepad tap "$b" 200; sleep "$HOLD"
shot "tap-$b"
done
vgamepad reset
shot "99-final"
echo "PROBE DONE"