Release 4.12.7

Flight sticks, HOTAS throttles, twist grips and rudder pedals, none of
which the game could see before: they arrive through DirectInput rather
than XInput, and PadRIO only read XInput.

joyconfig.bat is the setup: the wizard asks you to move each control in
turn and derives the sign convention from the direction of the move,
then writes the joystick rows of bindings.txt between marker lines,
leaving anything you have edited yourself alone.

Confirmed on the Logitech Extreme 3D: a full pass wrote all four axes,
six buttons and the hat, with X and the throttle lever inverted to match
the pod's convention and Y left alone - and the deadzone on the twist
grip was then hand-tuned from 0.08 to 0.18 in the file, which is the
workflow the marker section exists for.

Version strings bumped in RPL4.CPP, pack-dist.ps1 and the controls page
that ships in the zip.

Built clean, packed, zipped (1004 entries, nothing loose at the root)
and smoke-tested from the dist: boots reporting 4.12.7, virtual RIO up,
and no DirectInput enumeration at all on a default bindings.txt - the
joystick layer only opens when the profile asks for it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-08-05 10:18:43 -05:00
co-authored by Claude Opus 5
parent 91420b5cb2
commit 52da65bc0d
4 changed files with 18 additions and 6 deletions
+12
View File
@@ -75,6 +75,18 @@ Winners Circle camera is framed off the award stand itself rather than
off whoever is standing on it, so the shot is the same one for every
player at every head count.
[v4.12.7](https://gitea.mysticmachines.com/VWE/RP412/releases/tag/v4.12.7)
is about sticks. Anything that is not an Xbox-class pad — a flight stick,
a HOTAS throttle, a twist grip, rudder pedals, a wheel — comes in through
DirectInput rather than XInput, and the game could not see any of it.
Now it can, and `joyconfig.bat` sets it up: the wizard asks you to move
each control in turn, works out which device and axis answered and which
way round it reads, and writes the joystick rows of `bindings.txt`,
leaving anything you have edited yourself alone. A twist grip or rudder
bar drives both pedals through one signed `Pedals` axis, and a real
throttle lever owns its channel outright rather than nudging a position
the way a spring-centred stick has to. Ported from the sibling BT411.
## Playing
Grab the release zip (or run `pack-dist.ps1` on a build). Single player:
+1 -1
View File
@@ -188,7 +188,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
fclose(file);
}
DEBUG_STREAM << "Red Planet 4.12.6" << std::endl << std::flush;
DEBUG_STREAM << "Red Planet 4.12.7" << std::endl << std::flush;
DEBUG_STREAM << "L4CONTROLS=" << getenv("L4CONTROLS") << std::endl << std::flush;
#ifdef RP412_STEAM
+3 -3
View File
@@ -1,4 +1,4 @@
<title>Red Planet 4.12.6 — Controls</title>
<title>Red Planet 4.12.7 — Controls</title>
<style>
:root {
@@ -754,7 +754,7 @@
<div class="wrap">
<header class="masthead">
<p class="eyebrow">Virtual World Entertainment · Tesla pod · RP 4.12.6</p>
<p class="eyebrow">Virtual World Entertainment · Tesla pod · RP 4.12.7</p>
<h1>Red Planet<br>Controls Map</h1>
<p class="lede">
Every input the pod answers to, on the gamepad and the keyboard. The
@@ -1197,7 +1197,7 @@
</section>
<footer>
<span>Red Planet 4.12.6</span>
<span>Red Planet 4.12.7</span>
<span>gitea.mysticmachines.com/VWE/RP412</span>
<span>docs/CONTROLS.md · CONTROLS.txt ships with the game</span>
<span>RGB keyboards mirror the pod lamps · RP412KEYLIGHT=0 to disable</span>
+2 -2
View File
@@ -396,7 +396,7 @@ set RP412JOYCONFIG=
"@
Set-Content -Path "$dist\README.txt" -Encoding ascii -Value @"
Red Planet 4.12.6
Red Planet 4.12.7
=================
Run start-fullscreen.bat for borderless over the whole monitor, or
@@ -466,7 +466,7 @@ $size = (Get-ChildItem $dist -Recurse | Measure-Object Length -Sum).Sum
Write-Host ("dist ready: {0:N1} MB" -f ($size / 1MB))
if ($Zip) {
$zipPath = Join-Path $root 'RedPlanet-4.12.6.zip'
$zipPath = Join-Path $root 'RedPlanet-4.12.7.zip'
Write-Host "zipping to $zipPath..."
# Everything lives under a single RP412\ folder inside the zip, so