Files
BT411/scratchpad/night10/legwalk.sh
T
Joe DiPrimaandClaude Fable 5 440cee1e4f #87 dig closure: host response is linear (raw decomp re-read); the pixel curve was div-card firmware
Re-read the material damage watcher RAW (@004573e4 ctor / @00457784
change-push): 16 floats snapshotted, damaged = pristine x 0.1 (literal at
the MakeMechRenderables call site, watching zone+0x158), linear lerp, 13
floats written back, then FUN_0048d4d4 -- which is "flush_material": a dpl
command-stream marshal (opcode 100) to the i860 division card. The
material->ramp->texel response curve was CARD firmware and is not in
BTL4OPT.EXE; logged as an open question (ask: firmware/DIV docs/period
screenshots).

Field reconciliation, measured live: one 25-pt hit (ERLG class) snaps a
77-pt arm 0 -> 0.3247 in a frame -- "a single missile leaves visible
armor damage" holds under the linear curve for heavy hits; 2-pt ERS creep
(the leg-audit weapon) is the invisible case.

Bench additions: BT_WALK_ZONES=<name-list> walker filter (concentrated
per-region audits, scratchpad/night10/legwalk.sh) + BindArmourDamage
ORPHAN inventory under BT_ARMOR_LOG (proved every drawn op is
zone-claimed on the full tree).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 13:10:00 -05:00

35 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# LEG/FOOT AUDIT -- the zone-walk restricted to the six leg/foot zones
# (BT_WALK_ZONES name filter), so repeated passes concentrate fire and the
# victim's ARMOR DAMAGE doll movement is unmistakable. Node B captures its
# OWN screen every ~10 s (zwB_*.png) -- the doll's climb is in the pixel
# record; node A's captures (zwA_*.png) record the hull darkening the
# observer now receives (the fe48acc level-crossing send).
# READ: python scratchpad/night10/digest_walk.py (zw_a/zw_b logs as usual)
set -x
. /c/git/bt411/scratchpad/night6/bench_common.sh
cd /c/git/bt411/content || exit 1
bt_assert_player_env
taskkill //F //IM btl4.exe > /dev/null 2>&1
sleep 2
rm -f zw_a.log zw_b.log zwA_*.png zwB_*.png
bt_expert_egg MP.EGG ZW.EGG
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; 0,/^vehicle=.*/s//vehicle=madcat/" ZW.EGG
# TARGET first (right/back window): spins, logs every damage application,
# films its own cockpit (the doll is bottom-center of every zwB frame).
BT_SPIN_SELF=15 BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \
BT_SHOT_EVERY=300 BT_SHOT_PREFIX=zwB \
bt_launch zw_b.log ZW.EGG 0x0C -net 1601
sleep 2
# SHOOTER second (foreground -- owns the pick focus): legs + feet only,
# 5 s per zone => a full 6-zone cycle every ~30 s.
BT_ZONE_WALK=5 BT_WALK_ZONES=leg,foot BT_PICK_LOG=1 \
BT_GOTO=enemy BT_GOTO_STOP=90 BT_KEY_NOFOCUS=1 \
BT_DMG_LOG=1 BT_RANGE_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \
BT_ARMOR_LOG=1 BT_SHOT_EVERY=300 BT_SHOT_PREFIX=zwA \
bt_launch zw_a.log ZW.EGG 0x03 -net 1501
sleep 5
python ../tools/btconsole.py ZW.EGG 127.0.0.1:1501 127.0.0.1:1601 > zw_relay.log 2>&1 &
sleep 3600 # session stays up for observation