Files
RP412/docs/CONTROLS.md
T
CydandClaude Fable 5 00cb87907c Controls map: docs/CONTROLS.md, shipped with the dist
Written from the default bindings.txt so it matches what the game
actually writes. Covers the Xbox pad (ASCII diagram plus a table of
every button and its RIO address), the keyboard - numpad flight
cluster diagram, the Shift/Ctrl/Alt throttle and reverse modifiers,
Alt+Q abort - and the panel button banks, showing how the number and
letter rows map onto the five MFD clusters exactly as printed on the
pod board, with the G/B gap keys and the F-key Secondary/Screen
columns. Also notes the keypads being deliberately unbound, the RGB
lamp mirror, and how to rebind with worked examples.

pack-dist copies it to the dist as CONTROLS.txt, flattened to ASCII so
it reads correctly in Notepad while the markdown source keeps its
typography. README links it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 20:24:43 -05:00

6.8 KiB
Raw Blame History

Red Planet 4.12 — controls map

Generated from the default bindings.txt (the file the game writes beside the exe on first run). Everything here is rebindable: edit that file and restart, or delete it to get these defaults back.

Grammar reminder, from the file's own header:

key <name>      button <addr> [toggle]
key <name>      axis <axis> deflect <n>      # held, springs back
key <name>      axis <axis> rate <n>         # walks per second, sticks
pad <button>    button <addr> [toggle]
padaxis <src>   axis <axis> [invert] [deadzone <d>] [rate <n>]

Xbox controller

              ( LB )  Panic                Throttle / reverse  ( RB )
             ( LT )  Left pedal              Right pedal  ( RT )
        ______________________________________________________
       /                                                      \
      /    [Back]                                  [Start]     \
     |     config 2                                config 1      |
     |                                                           |
     |        ,--.                                    (Y)        |
     |       ( L  )  stick X / Y                   Upper         |
     |        `--'                            (X)       (B)      |
     |                    +---+              Pinky     Middle    |
     |     D-pad  -->     |hat|                  (A)             |
     |                    +---+                 Main             |
     |                                                           |
     |                              ,--.                         |
     |                             ( R  )  throttle (Y axis)     |
      \                             `--'                        /
       \____________________________________________________ _/
Control Does RIO address
Left stick Joystick X / Y (inverted, deadzone 0.24 — pod convention) axes
Right stick Y Throttle, as a rate: hold to wind it up or down, position sticks axis
Left / right trigger Left / right pedal (deadzone 0.12) axes
A Main trigger 0x40
B Middle 0x46
X Pinky 0x45
Y Upper 0x47
LB Panic 0x3D
RB Throttle button — reverse thrust 0x3F
D-pad Hat: up / back / left / right (look) 0x42 0x41 0x44 0x43
Start Config 1 0x37
Back Config 2 0x36

Start and Back are not extra buttons: 0x37/0x36 are the first two buttons of the Upper Right MFD's top row, which is where the config buttons live on the real board — so the 9 and 0 keys do the same thing.


Keyboard

Flight cluster — the number pad

                    +-----+-----+-----+
                    |  7  |  8  |  9  |     7 / 9  left / right pedal
                    | Lped| fwd |Rped |     8 / 2  stick forward / back
                    +-----+-----+-----+     4 / 6  stick left / right
                    |  4  |  5  |  6  |     0      main trigger
                    | left|     |right|
                    +-----+-----+-----+
                    |  1  |  2  |  3  |
                    |     | back|     |
                    +-----+-----+-----+
                    |     0     |  .  |
                    |  trigger  |     |
                    +-----------+-----+

   Shift  throttle up      Ctrl  throttle down      Alt  reverse thrust
   (both throttle keys walk the axis and it holds where you leave it)
Key Does
NumPad 8 / 2 Stick forward / back
NumPad 4 / 6 Stick left / right
NumPad 7 / 9 Left / right pedal
NumPad 0, Space Main trigger (0x40)
Shift / Ctrl Throttle up / down (position holds)
Alt Reverse thrust (0x3F)
Arrow keys Hat — look up / back / left / right
Alt + Q Abort the mission (score banked, back to menu or lobby)

Panel buttons — the letter and number rows

The rest of the keyboard is the pod's button board, laid out as it is printed on the panel. Each MFD has 8 buttons (a 4-wide top row and a 4-wide bottom row); the keyboard rows run left to right across the three upper MFDs, then the two lower ones.

  UPPER MFDs      Left MFD          Middle MFD         Right MFD
   top row     1   2   3   4  |  5   6   7   8  |  9   0   -   =
   bottom row  Q   W   E   R  |  T   Y   U   I  |  O   P   [   ]
                 0x2F..0x2C       0x27..0x24        0x37..0x34
                 0x2B..0x28       0x23..0x20        0x33..0x30

  LOWER MFDs      Left MFD                            Right MFD
   top row     A   S   D   F        (G unbound)     H   J   K   L
   bottom row  Z   X   C   V        (B unbound)     N   M   ,   .
                 0x0F..0x0C                            0x07..0x04
                 0x0B..0x08                            0x03..0x00

  COLUMNS beside the map
   Secondary   F1  F2  F3  F4  F5  F6        0x10..0x15
   Screen      F7  F8  F9  F10 F11 F12       0x18..0x1D

G and B are deliberately unbound: they are the physical gap between the Lower Left and Lower Right MFD clusters on the real board.

Every one of these buttons is also clickable on screen — the red strips around each MFD and the amber strips beside the map are the same addresses, and they light up when the game commands their lamps.

Not bound by default

The pilot keypad (0x500x5F) and external operator keypad (0x600x6F) have no keys assigned — the game never reads them. They remain bindable if you want them (they arrive as arcade RIO key events).


RGB keyboard lighting

If the machine has a Dynamic Lighting keyboard, bound panel keys mirror the pod's lamps: red for the MFD banks, amber/yellow for the Secondary and Screen columns, blinking in step with the on-screen buttons. Unbound keys go dark. Set RP412KEYLIGHT=0 in environ.ini to switch it off.


Rebinding

bindings.txt sits beside the exe, written with the full default layout and its own documentation on first run. Change a line, restart the game. Delete the file to restore these defaults — worth doing after an update, since an existing file is never overwritten.

Examples:

key J       button 0x40        # main trigger on J as well
pad X       button 0x40        # move the trigger to the X button
key NumPadAdd    axis Throttle rate 0.75    # throttle on numpad +/-
key NumPadSubtract axis Throttle rate -0.75
padaxis LeftStickX axis JoystickX deadzone 0.15   # drop 'invert' to flip X

Addresses: 0x000x47 are the lamp buttons above, 0x500x6F the keypads. Axis names: Throttle, LeftPedal, RightPedal, JoystickX, JoystickY. Key names follow the .NET Keys naming (AZ, D0D9 for the digit row, F1F12, NumPad0NumPad9, Up, Down, Left, Right, Space, Return, Shift, Ctrl, Alt, OemMinus, Oemplus, Oemcomma, OemPeriod, OemOpenBrackets, OemCloseBrackets, …).