Skip to content

Controls: Add controller vibration strength setting (#542) - #563

Closed
jfpaardoo wants to merge 1 commit into
Revivedx:testfrom
jfpaardoo:feat/rumble-strength
Closed

jfpaardoo wants to merge 1 commit into
Revivedx:testfrom
jfpaardoo:feat/rumble-strength

Conversation

@jfpaardoo

Copy link
Copy Markdown

What this changes

Adds an adjustable controller vibration / rumble strength setting, resolving #542.

  • Settings (runtime/settings.h, runtime/settings.c, runtime/control_settings.c):
    • Adds rumble_strength (10% to 100% in 10% steps, default 100%) to Settings.
    • Persists rumble_strength = %d in savagewind.ini with CLAMP(10, 100).
  • Vibration engine (runtime/hle/vibration.c):
    • In vibration_update, scales low and high motor amplitudes proportionally by (float)g_settings.rumble_strength / 100.0f before passing them to SDL_RumbleGamepad.
  • UI (runtime/ui/menu.mm, runtime/ui/game_options.mm):
    • In the F1 overlay menu: displays a "Rumble strength" slider (10% - 100%) whenever Controller rumble is enabled.
    • In the in-game Options menu under Controls: adds a "Rumble strength" choice, automatically greyed out (value_off) when vibration is toggled off.
    • Full translations for "Rumble strength" and "100% is the game's own." across all 13 supported languages (runtime/ui/i18n/*.inc).
  • Tests (tools/test_vibration.c):
    • Added synthetic test assertion verifying that changing rumble_strength (e.g. 50% vs 100%) scales the low and high motor values proportionally.

Fixes #542

How it was tested

  • Ran make test-vibration: passed (HID packets, batching, motors, focus, disconnect and reboot checks passed).
  • Ran make test-pc-controls: passed (settings persistence and separate boot verification).
  • Ran python tools/i18n_check.py: 0 missing strings across all 13 languages.
  • Ran git diff --check: clean formatting and whitespace.
  • Built with make runtime-objs: 100% clean compilation without warnings or errors.

Checklist

  • Based on the latest test and opened against test
  • Built and run locally, and checked in the game
  • No game files, keys, firmware, generated game code or save files in the changes

Copilot AI balanced review requested due to automatic review settings November 7, 2026 21:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

Revivedx added a commit that referenced this pull request Nov 8, 2026
…th, texture sharpness, HUD at edges

Fixes:
- The program and pipeline tables grow at half load: a full table made the render thread loop forever after about
  three hours of play (#565).
- Writable G-buffer aliases can take the feedback path, and duplicate attachments can be attached once, on RADV wall
  corruption. Both are opt-in, by environment switch only, for testing on the affected GPUs (#579).
- The Settings page background meets the tab bar's line (#578).

New:
- PrintScreen saves a screenshot during play (#562).
- Controls > Vibration strength, 10% to 100% (#563).
- Video > Advanced options > Texture sharpness: Default, Sharp, Sharper (#564).
- Video > HUD at edges, for screens taller than 16:9 (#558).

Tested by playing on Windows and with a hidden start, warp and teleport run: no crash and no errors in the log. Not
tested on RADV, nor the HUD at edges on a screen taller than 16:9.

Co-authored-by: amekkaoui <47280181+amekkaoui@users.noreply.github.com>
Co-authored-by: Daniel Barrios <ing.dbarrios@gmail.com>
Co-authored-by: ethanblazkowicz <misscalmm@icloud.com>
Co-authored-by: jfpaardoo <juaparpar@alum.us.es>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Revivedx

Revivedx commented Nov 8, 2026

Copy link
Copy Markdown
Owner

Thanks, this is in test as 94acc5b. Closing since test gets one clean commit per batch; you are credited as co-author.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants