#152: the real hole -- glass/RIO rigs had NO torso-centre control; wire pod button 0x42
The reported "torso no longer recentres on its own" decomposed into two parts:
the auto-recentre in Mid/Adv was never authentic (it was the stuck-centerCommand
bug acting as a phantom feature since ~674 -- analysis on the ticket, awaiting
Oracle's 1995-memory verdict), but underneath it sat a REAL defect: with the
phantom gone, a glass/RIO player had no way to recentre the torso at all.
WHY. The only centerCommand writer lived inside the desktop key-bridge block,
which is OFF whenever a RIO/PadRIO is present -- glass and the pod both. The
pod's dedicated CENTER button (0x42, "the shipped .RES name", UP arrow via
bindings.txt) reached nothing: benched two scripted 0x42 holds on the RIO path,
ctrCmd=0 throughout, twist parked forever. (Keyboard X/NumPad5 recentred only
as a side effect of ALL-STOP -- you could not recentre without stopping.)
FIX, two pieces, both existing patterns:
* L4PADRIO::EmitButton -- the documented single chokepoint every button
source funnels through -- publishes the 0x42 HOLD state
(gBTTorsoCenterHeld), exactly the 0x3F ReverseThrust precedent.
* mechmppr gains ONE unified centerCommand writer, deliberately OUTSIDE the
key-bridge gate (the same placement lesson as the mode-cycle hook):
hold = torsoCenter(@0x154 databound) OR gBTTorsoCenterHeld(0x42) OR the
one-frame X pulse; asserts while held, clears on release. Single writer
== the sources can never stomp each other's clear.
BENCHED (scratchpad/night14/center42.sh, RIO path, bridge off):
before: ctrCmd=0 in all samples across two 0x42 holds; twist parked at 1.478
after: hold -> ctrCmd=1 recen=1, twist slews 2.22->0.44 at the authored
0.87 rad/s; twist input DURING the hold cancels sim-side (authentic);
release clears; no button -> aim holds (authentic Std/Vet).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018SgmXGNMXavXiafKXf9MDC
This commit is contained in:
co-authored by
Claude Opus 5
parent
aa250c4e22
commit
2b6b0276fd
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# #152: is the AUTHENTIC torso-CENTER button (0x42) alive on the RIO/glass path
|
||||
# (key bridge OFF)? Cycle to Standard, deflect/release the twist axis, and
|
||||
# hold 0x42 during release windows. ctrCmd=1 while held + twist slewing to 0
|
||||
# = route works (ticket becomes player education). ctrCmd stuck 0 = the
|
||||
# streamed 0x42 route is dead on glass and needs the forward implemented.
|
||||
set -x
|
||||
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
||||
cd /c/git/bt411/content || exit 1
|
||||
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
||||
sleep 2
|
||||
rm -f c42_a.log
|
||||
bt_expert_egg MP.EGG C42.EGG
|
||||
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" C42.EGG
|
||||
( export BT_MODECYCLE_EVERY=400 BT_TWIST_PULSE=150
|
||||
export BT_BTNTEST=0x42,900,1150 BT_BTNTEST2=0x42,1500,1750
|
||||
export BT_TORSO_LOG=1 BT_KEY_NOFOCUS=1 BT_KEY_BRIDGE=0
|
||||
bt_launch c42_a.log C42.EGG 0x03 )
|
||||
sleep 130
|
||||
bt_kill_ours; sleep 2; taskkill //F //IM btl4.exe > /dev/null 2>&1; sleep 3
|
||||
echo "============ RESULT ============"
|
||||
grep -a "\[mode\] control mode" c42_a.log | head -4
|
||||
echo "--- ctrCmd seen (want some =1 during the 0x42 holds) ---"
|
||||
grep -ao "ctrCmd=[01]" c42_a.log | sort | uniq -c
|
||||
echo "--- twist trajectory around the first hold ---"
|
||||
grep -aE "twistpulse|ctrCmd=1" c42_a.log | head -8
|
||||
Reference in New Issue
Block a user