Files
riojoy/deploy
CydandClaude Fable 5 52712f8409 Phase 8B: RioGamepadXP.sys — WDM HID minidriver for Windows XP
The XP flavor of our own virtual joystick (no third-party driver), built
with WDK 7.1.0 to x86/subsystem-5.01. Exposes the identical Public.h
contract as the modern KMDF+VHF driver — same GUID, IOCTL_RIO_SUBMIT_REPORT,
25-byte report, VID/PID — so HidFeederJoystickSink drives both.

Design (driver/RioGamepadXP/rioxp.c):
- WDM HID minidriver via HidRegisterMinidriver presenting the 6-axis/hat/
  96-button joystick. POLLED mode (DevicesArePolled=TRUE): hidclass paces
  IOCTL_HID_READ_REPORT and we complete each synchronously from a cached
  report — no pending-IRP or cancel-routine machinery (the usual crash
  surface in a virtual HID driver).
- Named sideband control device (\Device\RioGamepadXP + \DosDevices symlink)
  takes IOCTL_RIO_SUBMIT_REPORT and updates the cache under a spinlock.
- hidclass overwrites our CREATE/CLOSE/DEVICE_CONTROL during registration;
  we save its pointers and reinstall wrappers that route the control device's
  IRPs to us and forward the HID FDO's to hidclass.

Packaging/install:
- Root-enumerated, so install uses devcon (built from the same WDK) —
  InstallHinfSection can't create the devnode. install-core.bat runs
  "devcon install RioGamepadXP.inf root\RioGamepadXP"; unsigned is fine
  (XP x86 enforces no kernel signing). Bundled into vendor\xp\.
- net40 feeder opens the driver by name (\.\RioGamepadXP); XP can't put a
  device interface on a bare control device (no PDO) — the one nuance.

Static build only: compiles clean but runtime bring-up (joy.cpl enumeration,
report flow) needs a real XP target — that's 8E. 275 tests still green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 14:01:16 -05:00
..

RIOJoy - cockpit interface for the VWE pods
============================================

This package installs RIOJoy, the program that connects the cockpit's RIO
hardware (joystick, throttle, pedals, 96 lighted buttons, plasma display)
to games that don't know about the cockpit. It works on two kinds of
Windows:

  * Windows 10 / 11 (64-bit)  - full app, appears to games as an Xbox 360
                                controller (ViGEmBus driver, included)
  * Windows XP SP3 (32-bit)   - full runtime + mapping editor; all
                                prerequisites are included for offline
                                install (.NET 4.0 + its async update)

The installer detects which Windows it is running on and installs the
right pieces automatically. Everything needed is inside this package -
no internet connection is required.


WHICH FILE DO I RUN?
--------------------

  install.bat      <-- RUN THIS on a normal, standalone computer.
                       Right-click -> "Run as administrator" (on XP, log
                       in as an Administrator user first). It installs
                       the prerequisites and puts RIOJoy shortcuts in the
                       Start Menu and on the desktop. RIOJoy does NOT
                       auto-start with Windows - launch it from the
                       shortcut when you want the cockpit active.

  postinstall.bat  --  Used by the arcade cabinet's launcher software
                       (TeslaConsole). It runs automatically after the
                       cabinet extracts this package; you do not need to
                       run it by hand. (It also deletes install.bat and
                       this README so the cabinet's games folder stays
                       clean.)


WHAT GETS INSTALLED
-------------------

  RIOJoy\app\      the program for Windows 10/11
  RIOJoy\app-xp\   the program for Windows XP
  RIOJoy\vendor\   third-party prerequisites (ViGEmBus for 10/11;
                   .NET 4.0 + KB2468871 + the RioGamepadXP joystick
                   driver for XP)

After installing, start RIOJoy and look for its icon in the system tray
(near the clock). Right-click the icon to pick a profile, edit button
mappings, or send commands to the cockpit hardware. Full deployment
notes for cabinet operators are in RIOJoy\README-DEPLOY.txt.


REMOVING RIOJOY
---------------

Run RIOJoy\pre-uninstall.bat as administrator, then delete the folder
you extracted. On a standalone computer also delete the RIOJoy shortcuts
from the Start Menu and desktop.