The correlation route is gated on marked-fighter kills, which the pilot manages at about two per five minutes. ob_read.py already reads the counter off the screen, so ob_by_hud.py matches the displayed value against memory directly and needs no kills at all: screenshot, read the digits, keep heap words equal to that value, intersect across readings. Four readings at value 4 narrowed 6156 candidates to 4312, the expected slow drift. Then the HUD read 11 and the intersection collapsed to zero. A word holding this counter must equal 4 at the first four samples and 11 at the last, and none does, so within the entity heap read as big-endian u32 the counter does not exist. It may be u16, u8, little-endian, or outside that region. Both previous hunts assumed big-endian u32 there, so this eliminates the assumption rather than merely failing to find anything. The displayed value also went up, from 4 to 11 over about 340 seconds. A pure countdown of remaining marked targets should not rise, and the deployment work says phase 1 gains no new participants. Three readings are possible and none is tested: the cell being read is not REMAINING OB, the digits are misread, or the counter genuinely counts something that can increase. The two clean readings scored 0.95 to 0.98 against their templates, but 4 and 11 use only digits that are in the strip, which is exactly the selection effect that would hide a wrong reading -- the template set covers 0 1 2 4 8 only, and most samples came back unreadable. Next is widening the scan to u16 and u8 and to little-endian, and beyond the entity heap, which is a change to one function and costs no combat. Extending ob_digits.png with the missing digits would also raise the sample yield, since only two of eleven readings in a 480 s run were usable.
20 lines
840 B
Bash
Executable File
20 lines
840 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -u
|
|
export HOME=/sylph-home/re SDL_AUDIODRIVER=dummy DISPLAY=:98
|
|
export PYTHONPATH=/sylph-home/.local/lib/python3.12/site-packages
|
|
SD="$(cd "$(dirname "$0")" && pwd)"
|
|
pgrep -x xenia_canary >/dev/null || { echo "NO EMULATOR"; exit 1; }
|
|
CFG=/tmp/nav-obhud2.json
|
|
for try in 1 2 3; do
|
|
python3 "$SD/pad.py" set "rt=1" >/dev/null 2>&1 || true; sleep 3
|
|
python3 "$SD/pad.py" clear >/dev/null 2>&1 || true
|
|
if python3 "$SD/entities2.py" self 0x130 "$CFG" >/dev/null 2>&1; then
|
|
SYLPH_HUNT=1 SYLPH_KILL_TURRETS=1 SYLPH_KEEPOUT=1400 SYLPH_PREFER=e010 \
|
|
nohup python3 "$SD/pilot.py" "$CFG" "${1:-400}" </dev/null >/tmp/obhud2-pilot.log 2>&1 &
|
|
P=$!; echo "--- pilot re-attached"; break
|
|
fi
|
|
done
|
|
python3 "$SD/ob_by_hud.py" "${1:-400}" "${2:-25}"
|
|
[ -n "${P:-}" ] && kill "$P" 2>/dev/null
|
|
echo "OBHUD ATTACH DONE"
|