Commit Graph
5 Commits
Author SHA1 Message Date
CydandClaude Opus 5 23453667d2 profiles: Descent 3 runs a blank greeting
Synced from the canonical copy in the game's repo: the pod display stays dark
from activation until the game sends the pilot's callsign.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:23:39 -05:00
CydandClaude Opus 5 63bdb2c1da pod bundle: explicit app-level config, and the registry profile catches up
The portable config a bundle shipped carried only Profiles, so every app-level
setting - ports, baud, poll rate - rode whatever that build of RIOJoy compiled
in. That matched today and would drift invisibly the day a default changes or
the FastRIO path moves AnalogPollMs. The generated config now writes them out,
so a bundle says what it runs with. Verified by building the Descent 3 bundle
and parsing the result.

profiles/descent3.json was a pre-cockpit draft: old button layout, no explicit
ports, no overlay labels. Replaced verbatim with the flown-and-confirmed Tesla
profile from the game's own repo (Descent3 venue/riojoy/tesla.riojoy.json,
which pack-dist feeds to build-pod and is the canonical copy) - explicit
COM1/COM2, the 30-mapping layout, afterburner on the thumb.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 20:59:17 -05:00
CydandClaude Fable 5 5befd1d511 profiles: Descent 3 starting profile (derived from the D1X layout)
Same cockpit axis strategy (throttle RightThumbY unipolar, pedal-mix rudder
on RightThumbX, triggers left free for fire) and the D1X button/keypad map
as a starting point pending on-pod tuning in the editor. Triggers cover the
open-source port (Descent3) and the retail launcher (d3); plasma greeting
DESCENT 3. Pod bundle builds clean from it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 22:21:38 -05:00
CydandClaude Fable 5 2f2438717a core: per-profile ViGEm axis routing with unipolar output mode
RioProfile gains a nullable AxisRouting section mapping each calibrated
axis (X/Y/Z/Rx/Ry/Rz) to a pad target (thumbs, triggers, or None) with a
Centered or UnipolarPositive conversion; the default reproduces the old
hardcoded routing exactly, so existing profiles are untouched. Routing
resolution lives in a pure, ViGEm-free AxisRouter for testability; the
sink neutralizes the pad on routing change so stale trigger state cannot
leak across profile switches.

Motivation: Descent reads the pad via SDL GameController, where the
triggers are its stock fire axis-buttons - the old fixed routing put
throttle on LeftTrigger (fires) and detent would have read as full
reverse. descent-d1x.json now routes Z->RightThumbY (UnipolarPositive,
detent = center) and Rz->RightThumbX, triggers untargeted; guarded by
tests that parse the shipped JSON through the real deserializer and
byte-compare the dxx-rebirth reference copy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 09:00:09 -05:00
CydandClaude Fable 5 d904f739d0 profiles: add canonical Descent (D1X-Rebirth) pod profile
First profile for a non-native game shipped in-repo (profiles/ is new -
profiles previously lived only inside config.json's Profiles array).
Matches d1x-rebirth; buttons map to synthesized DXX default keys with the
kiosk never-map list honored; ViGEm pad carries stick/throttle/pedals and
twitch actions. Worksheet + rationale: dxx-rebirth repo
docs/pod-input-map.md. Known work items before Phase-2 exit there: fixed
axis routing sends throttle/rudder to the trigger axes, and
AxisCalibrationConfig has no detent-to-center field yet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 22:43:13 -05:00