- Axes now span the hardware windows from RIOJoy's calibrator instead of
the full 14-bit wire range: throttle rests at 0 and travels to -800
(forward runs negative, matching the ratchet math), spring-loaded
pedals rest at 0 and press to +500, stick covers +/-80 around center
(new RioAxisRange in VRio.Core documents the provenance).
- Stick X sign flipped: RIOJoy maps negative samples to the high half of
its output axis, so dragging right now lowers raw X.
- Removed the Rz mix bar - the real RIO has no such indicator.
- Wire log: newest entries on top with the bound trimming the oldest
lines, and fixed the anchoring bug that let the box grow past the
window edge (the panel got its height only after children snapshotted
their anchors), which also hid the Clear log button.
- Tighter layout: axis readout sits under the status lines, encoder
strip shrunk to fit the gauges, and the window sizes itself to the
canvas + control strip.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Speaks the device side of the RIO serial protocol (per riojoy's
PROTOCOL.md) on a COM port, behind an interactive replica of the
profile editor's cockpit panel: click cells to press buttons/keys,
drag the encoder gauges to move the five analog axes, and watch
host-commanded lamp states (incl. flash modes) light the cells.
Device behavior grounded in the real v4.2 firmware dump: version 4.2,
4-retry NAK budget ending in RESTART, and an optional emulation of the
analog reply-wedge latch leak for exercising host recovery watchdogs.
Verified: 33 unit tests, plus an interop harness driving RIOJoy's
actual RioSerialLink against VRioDevice over an in-memory transport
(version/check/analog/lamp/button/keypad/reset all round-trip).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>