Files
riojoy/README.md
T
CydandClaude Fable 5 edbf3f8340 Hardware docs: board photos, schematic scan, GAL fuse dump
Organize the restoration source material under docs/hardware/:
- 9 board photos (renamed from Signal timestamps, index in README)
- Scans_018-014.pdf: 7-sheet VWE schematic set (RIO_1407 CPU/power/IO,
  PBE_1401 buttons, KEY_1402 keypad, DSP_1408 display, AMP_PLT 1413 amp)
- GAL20v8a_5764.JED: fuse map of the 1407's U7 memory decoder

README documents the board family, the 68HC11 memory map decode path,
the pod-bus signal set and jumper addressing, and cross-links PROTOCOL.md
and rio-firmware/.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 13:27:36 -05:00

55 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RIOJoy
Modern Windows 10/11 interface between the cockpit **RIO** (Remote Input/Output)
board and Windows, as a virtual **joystick / keyboard / mouse** — the successor
to the legacy vJoy-based app, with **no vJoy dependency**.
The RIO has 72 digital inputs and outputs (lighted buttons) and 5 analog axes
(joystick X/Y, throttle, left pedal, right pedal), connected over RS-232 at
9600 8N1. RIOJoy exposes these to games that don't natively know about the
cockpit hardware, with **per-game profiles**. (The native games — Firestorm,
Red Planet — talk to the RIO directly and do not use this app.)
## Repository layout
| Path | Contents |
|------|----------|
| [`src/RioJoy.Core`](src/RioJoy.Core/) | Protocol, profile model, input mapper, HID feeder (class library) |
| [`src/RioJoy.Tray`](src/RioJoy.Tray/) | Background tray application |
| [`tests/RioJoy.Core.Tests`](tests/RioJoy.Core.Tests/) | xUnit tests for the protocol core |
| [`driver/`](driver/) | `RioGamepad` virtual HID driver (KMDF + VHF) — replaces vJoy |
| [`tools/RioJoySmokeTest`](tools/RioJoySmokeTest/) | On-cabinet end-to-end check of the feeder → driver path |
| [`tools/XcfRegionExtract`](tools/XcfRegionExtract/) | Extracts cockpit label regions from `riojoy.xcf``regions.json` |
| [`docs/PLAN.md`](docs/PLAN.md) | Full modernization plan (7 phases) |
| [`docs/PROTOCOL.md`](docs/PROTOCOL.md) | RIO wire format + `iRIO` input-map reference |
| [`docs/hardware/`](docs/hardware/) | Board photos, scanned schematics, GAL fuse dump — the physical RIO board set |
| [`docs/reference/`](docs/reference/) | Cockpit overlay art & the legacy labeling pipeline |
| [`legacy/`](legacy/) | Original C++/vJoy implementation, kept as reference |
## Building
Requires the **.NET SDK** (8.0 or newer) plus the **.NET Framework 4.8
targeting/developer pack**, on Windows. The apps target **.NET Framework 4.8**,
which is in-box on every Windows 10/11 machine — so deployed builds are
framework-dependent and need **no runtime install** on the target. The driver
builds separately with the **WDK** (see [`driver/README.md`](driver/README.md)).
```sh
dotnet build RioJoy.sln -c Release
dotnet test RioJoy.sln
```
## Status
Phases 15 are implemented and tested (241 unit tests). The `RioGamepad` virtual
HID driver is built (KMDF + VHF), **test-signed, installed, and verified**: it
enumerates in `joy.cpl`, and the C# HID feeder (`DeviceIoControl`
`RioGamepad.sys`) drives its axes, buttons, and hat end-to-end (see
[`tools/RioJoySmokeTest`](tools/RioJoySmokeTest/)). The C# side covers the serial
+ RIO protocol core, input mapping + output routing, axis calibration + plasma
display, the tray app + profiles (JSON config, `RIO.ini` importer, three-state
auto-switch), and the HID report packer that matches the driver's wire format.
Remaining work is **on-cabinet** (real RIO serial/axis/plasma/auto-switch
verification) plus packaging (Phase 6) and the profile editor + overlay
generator (Phase 7). See [`docs/PLAN.md`](docs/PLAN.md) for the full roadmap.