The controls map becomes the handbook

It stopped being a controls map somewhere around the display arrangement
and the joystick wizard, and a page called CONTROLS.html is the wrong
place to look for what a file in the game folder does. So:
docs/rp412-controls.html is now docs/rp412-handbook.html and ships as
HANDBOOK.html, titled to match.

The new section answers the question the page could not: what is in the
game folder and which of it is yours. Four files are - environ.ini,
bindings.txt, pilot.cfg, mfd_layout.cfg - and only the first ships, so a
fresh unzip has none of the others and deleting one simply starts that
part over. A second table covers the shipped engine data, which nobody
should edit but everybody eventually wonders about: which INI the gauge
canvas comes from, why there are audio mixer tables for hardware that has
not existed since 1995, and that JOYSTICK.INI is the legacy path rather
than anything the new joystick support reads.

The callout carries the two that actually catch people, both of which
have caught us during this work: environ.ini is applied OVER the
environment, so a variable set in a shell loses to an uncommented line in
the file; and bindings.txt is never overwritten once it exists, which is
what protects a player's edits and also why an update's new defaults do
not appear until it is deleted.

CONTROLS.txt keeps its name. It is the controls half in plain text for
Notepad, which is still exactly what it is, and the README now says so
rather than describing the two as the same thing.

Verified by rendering the packed HANDBOOK.html headless: both tables and
the callout sit in the page's own components, the footer names the new
file, and the version stamp still flows through - the shipped copy reads
4.12.96 from the build it was packed with.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-08-05 14:25:34 -05:00
co-authored by Claude Opus 5
parent a1d2de591c
commit 72bb3b394f
2 changed files with 117 additions and 21 deletions
@@ -1,4 +1,4 @@
<title>Red Planet 4.12.7 — Controls</title>
<title>Red Planet 4.12.7 — Handbook</title>
<style>
:root {
@@ -755,12 +755,13 @@
<header class="masthead">
<p class="eyebrow">Virtual World Entertainment · Tesla pod · RP 4.12.7</p>
<h1>Red Planet<br>Controls Map</h1>
<h1>Red Planet<br>Handbook</h1>
<p class="lede">
Every input the pod answers to, on the gamepad and the keyboard. The
keyboard is the pod's button board: the letter and number rows are the
MFD banks laid out as they are printed on the panel, and flight moved to
the number pad so the board stays free.
Every input the pod answers to, on the gamepad and the keyboard, and
every file it keeps beside the exe. The keyboard is the pod's button
board: the letter and number rows are the MFD banks laid out as they are
printed on the panel, and flight moved to the number pad so the board
stays free.
</p>
<p class="provenance">Generated from the default <code>bindings.txt</code> · all of it rebindable</p>
</header>
@@ -1312,10 +1313,90 @@
</div>
</section>
<section>
<h2>Files beside the exe</h2>
<p class="sub">
Four files in the game folder are yours. Only one of them ships — the
game writes the other three when it first needs them, so a fresh unzip
has none of them and nothing is lost by deleting one.
</p>
<div class="tbl-scroll">
<table>
<caption>Yours to edit</caption>
<tbody>
<tr>
<th class="mono">environ.ini</th>
<td>
Every engine option, commented in place — displays, renderer,
Steam, the podium, the lot. The only one that ships, and the one
to read first.
</td>
</tr>
<tr>
<th class="mono">bindings.txt</th>
<td>
Every key, pad button, axis and joystick row. Written with the
full documented default layout the first time the game runs.
</td>
</tr>
<tr>
<th class="mono">pilot.cfg</th>
<td>
Your callsign and loadout, saved on the way out of the setup
screen so they are there next time.
</td>
</tr>
<tr>
<th class="mono">mfd_layout.cfg</th>
<td>
Where you dragged the windows, and the <code>,noframe</code>
flag. Only written when <code>RP412MFDLAYOUT=save</code>.
</td>
</tr>
</tbody>
</table>
</div>
<div class="callout">
<p>
<strong>Two that catch people out.</strong>
<code>environ.ini</code> is applied <i>over</i> the environment, so a
variable you set in a shell loses to an uncommented line in the file —
comment the line out rather than fighting it. And
<code>bindings.txt</code> is never overwritten once it exists, which
is what protects your edits: after an update, <b>delete it</b> to pick
up new default bindings.
</p>
</div>
<h3>The rest of the folder</h3>
<p class="sub">
Shipped data the engine reads. Nothing here is meant to be edited, but
it is worth knowing what is what.
</p>
<div class="tbl-scroll">
<table>
<caption>Engine data</caption>
<tbody>
<tr><th class="mono">RPDPL.INI</th><td>Renderer and scene configuration. Named by <code>L4DPLCFG=</code>, so it can be swapped.</td></tr>
<tr><th class="mono">GAUGE\L4GAUGE.INI</th><td>Gauge canvas pages. <code>L4GAUGE=</code> picks one by name — a name that is not in here switches the MFDs off entirely.</td></tr>
<tr><th class="mono">GAUGE\L4GAUGE.CFG</th><td>The gauge layout data that page points at.</td></tr>
<tr><th class="mono">AUDIO\AUDIO.INI</th><td>Sound banks. <span class="mono">AUDIOMR.INI</span> is the mission-review twin.</td></tr>
<tr><th class="mono">JOYSTICK.INI</th><td>The 1995 single-stick calibration, for the legacy <code>L4CONTROLS=DIJOYSTICK</code> path only. Modern sticks are configured in <code>bindings.txt</code> — see above.</td></tr>
<tr><th class="mono">*.CFG <span style="color:var(--ink-quiet);font-family:var(--sans)">in AUDIO\</span></th><td>Pod audio-hardware mixer tables. Dead weight on a desktop; kept because the arcade path still reads them.</td></tr>
<tr><th class="mono">RPL4.RES</th><td>Resource blob, not text.</td></tr>
<tr><th class="mono">steam_appid.txt</th><td>Steam runs under Spacewar (480) until Red Planet has its own AppID.</td></tr>
</tbody>
</table>
</div>
</section>
<footer>
<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>docs/rp412-handbook.html · HANDBOOK.html ships with the game</span>
<span>RGB keyboards mirror the pod lamps · RP412KEYLIGHT=0 to disable</span>
</footer>
</div>