diff --git a/docs/PLAN.md b/docs/PLAN.md index 23166fd..5c3e282 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -296,17 +296,17 @@ Replaces the legacy Google-Sheet → `.data` → GIMP → Script-Fu pipeline ### Phase 8 — Windows XP compatibility (dual-target) — planned Bring RIOJoy back to the original XP-era cabinets (x86, XP SP3) **without -regressing Windows 10/11**. Strategy: one codebase, two flavors — modern -machines stay the *authoring* platform (editor + wallpaper maker + packaging); -XP gets the full *runtime* (serial, mapping, vJoy joystick, keyboard/mouse, -lamps, plasma, wallpaper apply). +regressing Windows 10/11**. Strategy: one codebase, two flavors, **one +universal deployment archive**. The mapping editor ships everywhere +(decided); only wallpaper *generation* (SkiaSharp) stays modern-only — +XP consumes pre-rendered wallpapers. | | Windows 10/11 (unchanged) | Windows XP SP3 | |---|---|---| | TFM / arch | net48, x64 | **net40, x86** (.NET 4.0 is XP's ceiling; 4.5+ needs Vista) | | Virtual joystick | ViGEm → RioGamepad → none (unchanged) | **RioGamepadXP.sys** — our own thin WDM HID minidriver (same feeder contract) — full 6-axis/96-button fidelity | | Overlay render | SkiaSharp (generate + apply) | consume pre-rendered wallpaper only (**PNG→BMP** — XP's `SystemParametersInfo` takes BMP only) | -| Editor | full (incl. wallpaper maker) | mapping editor only (pure WinForms/GDI+); wallpaper maker gated (Skia) | +| Editor | full (incl. wallpaper maker) | **mapping editor included** (decided; pure WinForms/GDI+); wallpaper maker gated (Skia) | | JSON | System.Text.Json → **Newtonsoft 13** | Newtonsoft 13 (STJ needs net461+; one serializer for both flavors) | | Install scripts | PowerShell | **.bat only** (XP has no in-box PowerShell) | @@ -348,10 +348,26 @@ lamps, plasma, wallpaper apply). stays (Segoe UI falls back to Tahoma). XP cabinets consume wallpapers pre-rendered on a modern machine (`RioProfile.WallpaperPath` travels with the config). -- **8D — Packaging:** `build-package.ps1 -Flavor XP` → - `RIOJoy-XP-.zip` (net40/x86 publish, RioGamepadXP.sys + INF, - `.bat` install/uninstall, README-DEPLOY-XP: prereqs XP SP3 + .NET 4.0 Full - + KB2468871). Modern zip unchanged; release both to Gitea. +- **8D — Packaging (decided: one universal archive, two install entry + points).** `build-package.ps1` produces a single `RIOJoy-.zip` that + deploys on **both** XP and 10/11: + - Layout: `RIOJoy\app\` (net48 x64) + `RIOJoy\app-xp\` (net40 x86) + + `RIOJoy\vendor\` (ViGEmBus installer for 10/11; RioGamepadXP.sys + INF + for XP; **.NET 4.0 Full + KB2468871 redistributables** so an offline XP + cabinet needs nothing else — adds ~70 MB, XP can't download anymore) + + `VERSION.txt` + README-DEPLOY. + - **`postinstall.bat`** (zip root, unattended): the TeslaConsole/launcher + entry point, as today — detects the OS (`ver` → 5.1 = XP, 10.x = modern), + installs the matching prereqs (ViGEmBus silently via the existing + PowerShell on 10/11; .NET 4.0 + KB2468871 + driver INF on XP), and wires + the matching app flavor. No prompts, idempotent. + - **`install.bat`** (zip root, freestanding computers): same OS detection + and prereq install, plus what a machine without the launcher needs — + Start Menu/desktop shortcut to the right flavor's exe (still no logon + auto-start; starting RIOJoy stays deliberate). Pure cmd.exe on the XP + path; may call PowerShell only on the 10/11 path. + - `pre-uninstall.bat` / uninstall mirror both scenarios. Release the one + zip to Gitea per the established process. - **8E — Verification:** full suite stays net48-hosted (xUnit needs net452+; shared sources are what's tested) + a tiny net40 console self-test for the shims, run on XP. Ladder: net40/x86 binary boots on @@ -359,13 +375,16 @@ lamps, plasma, wallpaper apply). driver needs real/virtualized XP too — vhidmini-class drivers run fine in a VM) → real cabinet (joy.cpl shows 6 axes + 96 buttons, SendInput into a game, lamps, plasma, auto-switch yield, BMP wallpaper). -- **To confirm before starting:** (1) keep the mapping editor on XP or ship - runtime-only? (2) which XP cabinets / how do files get onto them (drives - the .bat installer shape)? - *Decided:* the Xbox 360 pad (ViGEm) remains the preferred controller on - Windows 10/11 whenever ViGEmBus is present. **No third-party virtual - joystick drivers** (vJoy/PPJoy are unmaintained) — XP gets our own - RioGamepadXP.sys instead. +- **All open decisions resolved:** + 1. The Xbox 360 pad (ViGEm) remains the preferred controller on + Windows 10/11 whenever ViGEmBus is present. + 2. **No third-party virtual joystick drivers** (vJoy/PPJoy are + unmaintained) — XP gets our own RioGamepadXP.sys. + 3. The **mapping editor ships in all instances**, XP included. + 4. **Both install scenarios** in one archive: `postinstall.bat` + (TeslaConsole/launcher, unattended) and `install.bat` (freestanding + computers, adds shortcuts); the single dist zip carries everything + needed for both XP and 10/11, including offline redistributables. ---