libretro / libretro/RetroArch

[Feature Request] RetroRumble – Rule-Based Rumble System (RetroAchievements-Style)

Open
#18,606 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Feature Request: RetroRumble – Rule-Based Rumble System (RetroAchievements-Style)

Description

This feature request proposes RetroRumble, an optional, rule-based rumble system for RetroArch, inspired by the existing RetroAchievements memory evaluation technology.

RetroRumble triggers controller rumble when defined RumbleRules are fulfilled, such as:

  • Player HP decreases
  • Player takes damage
  • Earthquake / screen shake events
  • Other in-game state changes detectable via RAM

The system is fully data-driven and does not require per-core or per-game hardcoded rumble support.


Core Idea
  • Reuse the RetroAchievements-style memory watching and condition evaluation
  • When a RumbleRule evaluates to true → trigger a rumble event
  • Rumble parameters are configurable per rule:
    • Weak / strong motor
    • Duration
    • Intensity
    • Decay curve
    • Cooldown / debounce
  • Feature is optional and disabled by default

Example:

If memory address 0xC123 (player HP) decreases → trigger strong rumble for 120 ms


RumbleRules as User-Created Content
  • RumbleRules are user-created content, similar to:
    • Cheats
    • RetroAchievements
  • Rules are loaded per game (or per core)
  • Shareable, versioned, and community-maintained
  • Allows adding meaningful rumble feedback to systems that never had native rumble (e.g. Game Boy, NES, SNES)

Technical Overview (High-Level)
  • Leverage existing RetroAchievements memory evaluation pipeline
  • Add a new evaluation output:
    • Instead of unlocking achievements → trigger rumble events
  • Possible rule parameters:
    • Memory address
    • Comparison type (equals, delta, greater/less than)
    • Thresholds
    • Cooldown / minimum retrigger time
    • Rumble motor selection
    • Duration and decay behavior

Why This Fits RetroArch
  • Builds on existing, proven infrastructure
  • No impact on emulation accuracy or determinism
  • Fully optional and non-invasive
  • Strong community-driven extensibility
  • Improves immersion, especially on handheld devices and controllers

Summary

RetroRumble would enable:

  • Modern haptic feedback for retro games
  • A flexible, rule-based rumble system instead of hardcoded solutions
  • Community-created enhancements without modifying original game logic

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by studying RetroArch’s existing RetroAchievements memory evaluation pipeline, which the request identifies as the intended foundation. Define how RumbleRules are represented and evaluated, how matching rules produce rumble events, and how optional loading and cooldown behavior should be tested; the feature is done when those design points have an agreed implementation path.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.