Files
TeslaRel410/emulator/render-bridge/riostreak.sh
T
CydandClaude Fable 5 8b9c2e6b11 BT410 5.3.70: the full direct-mapping contract audited; the fault is not fully dead
The canopy-eye confirming run (5th post-Torso-fix run with vRIO live) faulted
with the old signature during the load drain -- four clean runs then one
fault.  The two-runs rule keeps earning its keep.

The BT_MAP_LOG audit now prints the whole resolved contract, not just NULLs.
The L4 list carries 13 direct mappings: mapper stick/throttle/reverse/looks
(ids 3/4/6/10-12), Torso torsoCenter (id 14, matching the donor), and
TriggerState (id 19 = the known 0x13 binding) on six weapons.  Every
destination resolves and every size is right -- the 8-byte joystick write
lands in an 8-byte ControlsJoystick, buttons are ints into ints.

One type wart noted, not fixed: MechWeapon binds TriggerState onto
fireImpulse, a Scalar -- a ButtonGroup direct writes an int bit-pattern, so a
real trigger press stores 1.4e-45f.  Size-safe, but the fire FSM will never
read a real button press as a pull; fire worked in tests only via the
BT_FORCE_FIRE hook, which writes a proper float.  The RIO trigger needs an
int home for TriggerState.

Surviving fault theories, in current order: an emulator/DPMI-host serial-IRQ
interaction whose probability guest timing merely modulates (the fault's
constants -- fixed host EIP, fixed cr2, always during the load drain -- fit
this better than the corruption story ever did, since the smash point never
moved across builds where our BSS moved); a second corruption source outside
the direct mappings; sampling noise.  riostreak.sh is measuring the post-fix
rate over four consecutive runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 15:34:31 -05:00

15 lines
637 B
Bash

#!/bin/bash
# Four consecutive RIO-live runs; count faults. Each run ends at launch or fault.
cd /c/VWE/TeslaRel410/emulator/render-bridge
RESULTS=""
for i in 1 2 3 4; do
bash podrun.sh pod_render_rec streak$i > /dev/null 2>&1
until grep -q "Turning Plasma" podlog.txt 2>/dev/null || grep -qE "illegal address|page you don't own" podlog.txt 2>/dev/null; do sleep 10; done
if grep -q "page you don't own" podlog.txt; then R=FAULT; else R=CLEAN; fi
T=$(grep -o "ticks=[0-9]*" podlog.txt | tail -1)
RESULTS="$RESULTS run$i=$R($T)"
echo "run$i: $R $T"
done
taskkill //F //IM dosbox-x.exe > /dev/null 2>&1
echo "STREAK RESULT:$RESULTS"