forked from Ports/goldeneye-pc-port
Port-layer only (port/src/input.c, optionsoverlay.c); zero src/game edits. All new knobs off/neutral at default = byte-identical at defaults. New controller input options (CONTROLLER-INPUT-PLAN Wave A): - Input.PadLookSensX/Y: per-axis right-stick look sensitivity (100 = native) - Input.PadSouthpaw: swap fire<->grenade triggers (applied after edge capture, so edge-detection stays consistent) - Input.PadDeadzoneL/R: per-stick deadzone; legacy Input.PadDeadzone key kept registered (no row) + one-time migration in inputInit() seeds any unset L/R from it (C-init sentinel PAD_DZ_UNSET) before the first configSave - Input.PadLookSmooth: 0-10 per-pad EMA low-pass on the natural-pitch look output (default 0 = off), reset on pad hot-unplug - Input.MouseYScale: pre-existing registered key finally gets an INPUT row Verbiage baseline (Turok PC options menu, user-provided verbatim): Mouse horizontal/vertical sensitivity, X axis/Y axis look sensitivity, Look smoothing, Southpaw, Vibration (was "Rumble strength"), Deadzone (left/right stick). GE keeps one flat INPUT section (D356), so the two Invert-look rows retain their (mouse)/(controller) suffixes. Display baseline (Turok scales): sensitivity + deadzone rows render 0-100 with 50 = default (existing calibratedDefault path); look smoothing renders 0-10 via a new dispMax "N/M" row formatter (alongside the existing N/100 and N/255 special cases). Tested on a real pad (Windows build) - all six options behave as intended.