Gamepad-Friendly Input Patterns: Research for D3-TUI

Status: Research complete — ready for spec integration
Agent: codex (UX research scope)
Date: 2026-05-11
Device target: Anbernic RG40XXV (D-pad, A/B/X/Y, L1/R1, Start/Select, Menu)
Resolution: 640×480, integer-scaled 320×240 fallback for small text
Constraint: All patterns must work WITHOUT text input. Text input is fallback only.
Domain context: Turn-based strategy, hex grid, node-traversing agents. Players configure agents, review LLM output, correct mistakes, route context between agents.


Pattern 1: Radial Menus

What It Is

A circular menu centered on the cursor or screen center, where thumbstick/D-pad direction selects an option. Up to 8 slices (4 cardinal + 4 diagonal) without modifiers, up to 32 with L1/R1 tab rings. Selection is instant — push direction, press A to confirm. Advanced variants layer sub-menus (push deeper into a direction to reveal nested choices).

Game Examples

Game System Notes
Secret of Mana (1993) SNES Ring menu — pause, rotate ring with D-pad, select action then target. The canonical 16-bit radial.
Mass Effect (2007) Xbox 360 Dialogue wheel — conversation responses mapped to thumbstick directions, no text reading needed until after selection.
Monster Hunter World (2018) PS4/Xbox Item radial — D-pad + right stick combo. 8 items per ring, multiple rings via L1/R1 tabs.
GTA V (2013) PS3/360 Weapon wheel — hold L1, highlight with stick, release to select.
Persona 5 (2016) PS4 Battle command ring — left / right / up / down correspond to Attack / Persona / Guard / Item.
Doom Eternal (2020) All Weapon wheel — slow-motion radial, color-coded slices, single-frame selection for power users.
Fortnite (2017) All Emote wheel — 8-slice radials, multiple pages via shoulder buttons.

RG40XXV Button Mapping

Without an analog stick, the RG40XXV is limited to 8 directions per ring. This is functionally identical to Secret of Mana's ring system on SNES — a proven, comfortable input model.

Good For

Bad For

Pixel Budget at 640×480

Radial overlay: 320×320px centered (radius ~140px)
8 outer labels: ~120px each, ~10px text height
Selected slice highlight: color-shift + scale-up on slice zone
Tab indicators (L1/R1): 24×24px in upper corners
Sub-radial: same dimensions, offset from parent to show hierarchy
Total screen real estate: ~70% of center (masking background with 50% opacity)
Crisp 1x pixel font usable; no sub-pixel scaling needed.

RG40XXV-Specific Notes


Pattern 2: Mad-Libs / Chips Composition

What It Is

The player builds a "sentence" or command by dropping pre-made tokens ("chips") into slots. Each chip is a single word or short phrase from a constrained vocabulary. The sentence reads left-to-right as <prefix> <subject> <verb> <suffix>. This is exactly how the Oracle Chamber already works on this device — proven in production.

The key insight: chips encode grammar constraints. A chip like "The team" knows it can only be followed by a verb chip ("should scout", "must avoid", "will report"). Invalid next-chips are greyed out or hidden. The player navigates a semantic tree one chip at a time, never typing a letter.

Game Examples

Game System Notes
Oracle Chamber (2025) RG40XXV The reference implementation — chip-based question composition for cartomantic agents. Three-tier: Subject → Action → Target.
Baba Is You (2019) Switch/PC Rule composition — push blocks to form sentences like BABA IS YOU + WALL IS STOP. Chips are physical objects in the world.
Scribblenauts (2009) DS Adjective-noun-object composition — type a single word to spawn it, but the UI scaffolds valid inputs with autocomplete.
Tears of the Kingdom (2023) Switch Fuse system — select base object, then select modifier object. Not strictly sentence building, but the "slot-fill" mental model is identical.
Mario & Luigi: Dream Team (2013) 3DS Luiginary attacks — build attacks by combining elements in a sequence. Slot 1 (what), Slot 2 (how), Slot 3 (target).
Magic: The Gathering Arena (2018) All Resolving effects — "counter target spell" is decomposed into [counter] [target] [spell]. The game auto-fills legal targets.

RG40XXV Button Mapping

Good For

Bad For

Pixel Budget at 640×480

Sentence ribbon: full width (640px), 64-80px tall at bottom of screen
Slot boxes: ~120px × 40px each, 4-5 visible slots side-by-side
Active slot: highlighted border + slight scale-up (44px height)
Chip list popup: 200px × 180px anchored above/below active slot
  - Each chip row: 180px × 36px, ~6 visible without scrolling
  - Scroll indicator if >6 chips available
  - Sub-chip hints: tiny icons or 1-2 char indicators in chip row
Font: 14px in chip boxes, 12px in chip list
Total screen real estate: ~15% at bottom (ribbon + popup)
Background remains usable for game view above the ribbon.

RG40XXV-Specific Notes


Pattern 3: Multiple Choice Branching Interviews (Dialogue Trees)

What It Is

Instead of the player expressing intent directly, the system asks a series of narrow multiple-choice questions. Each answer narrows the possibility space. After 3-5 questions, the system has enough information to act. This is functionally identical to RPG dialogue trees — the player doesn't type "I want to romance Liara" — they choose "I care about you" → "More than a friend" → "Stay together" across three dialogue prompts.

The branching structure can be flat (all paths same depth) or deep (some branches go 2 levels, others 5). Flat is easier to navigate; deep is more expressive.

Game Examples

Game System Notes
Phoenix Wright: Ace Attorney (2001) GBA/DS Press / Present / Move — three verbs, context-dependent outcomes. The interview IS the gameplay.
Mass Effect trilogy (2007-2012) Xbox 360 Dialogue wheel + investigation branches. "Investigate" opens a sub-tree of neutral questions that never advance the conversation state.
Hades (2020) Switch/PC Boon selection — presented 3 options from a pool of 20+. The trio constraints create meaningful choice without overwhelming the player.
Slay the Spire (2019) Switch/PC Card rewards — choose 1 of 3 cards after each encounter. Same "curated shortlist from large pool" pattern.
Disco Elysium (2019) PC/Switch Skill checks + branching dialogue. Some options are "locked" (visible but grey) if you lack a skill — transparency without option overload.
Persona 5 Royal (2019) PS4 Confidant dialogue — key conversations offer 2-3 responses, each producing different affinity gains. Low cognitive load, high replay value.
Her Story (2015) PC/iOS Video clip search — type keywords, but the system suggests related clips. Not purely branching, but demonstrates how constrained retrieval can feel exploratory.

RG40XXV Button Mapping

Good For

Bad For

Pixel Budget at 640×480

Interview prompt area: 640×120px at bottom of screen (question text)
Choice list: 3-5 options stacked vertically, 560×180px overlay on lower-center
  - Each choice row: 540×44px with icon (32×32) + text
  - Active choice: highlighted background bar
Breadcrumb trail: 640×24px bar at very top of screen ("Config > Agent > Scout > Priority")
Progress indicator: mini dots or segments, 48×12px in corner
"Investigate" / "Back" buttons: anchored to bottom corners, 80×40px each
Total screen real estate: ~35% (lower third for choices + top bar for breadcrumbs)
Background: game view remains visible in upper ~50% — partially dimmed for focus.

RG40XXV-Specific Notes


Pattern 4: T9-Style / Predictive Text

What It Is

When text IS needed (naming an agent, writing a custom prompt, searching for a specific item), use a grid-based letter picker. The classic mobile phone T9 layout maps 26 letters + space + backspace onto a 3×4 grid (A-C on 1, D-F on 2, etc.). The player navigates the grid with D-pad, taps A to enter the highlighted letter. Predictive completion suggests words as you type, reducing keystrokes by 60-80%.

Modern variants (Steam Deck keyboard, PS5 text entry) add dual-stick input and motion control, but the RG40XXV has neither. The T9 grid is the right constraint fit.

Game Examples

Game System Notes
Steam Big Picture Mode (2015) Steam Deck/PC Dual-stick keyboard — left stick selects zone, right stick selects key within zone. Predictive completion bar. Gyro fine-tuning.
Xbox Virtual Keyboard (2013+) Xbox One/Series D-pad grid navigation, predictive suggestions on Y button. Slow but functional — deliberately NOT the primary input mode.
Nintendo Switch Keyboard (2017) Switch Touch screen primary, but D-pad navigation as fallback. Predictive completion at top.
Animal Crossing: New Horizons (2020) Switch Touch keyboard for letters/designs, predictive for in-game chat. Simplified key set (no caps distinction in most contexts).
EarthBound (1994) SNES "Don't Care" naming — the game auto-suggests names if you leave the field blank. The player CAN type, but doesn't have to. Canonical "opt-out" pattern.
Phantasy Star Online (2000) Dreamcast Soft keyboard — 3 pages of characters (hiragana/katakana/romaji), switchable via L/R. Character-by-character entry, slow but complete.
Elite Dangerous (2014) PC/consoles Galaxy map search — type system name via D-pad grid + predictive. Only fallback — most navigation is via map cursor and filters.

RG40XXV Button Mapping

Grid layout options:

OPTION A: Standard T9 (3×4 grid, 12 cells)
  1: ABC    2: DEF    3: GHI
  4: JKL    5: MNO    6: PQRS
  7: TUV    8: WXYZ   9: .,!?
  DEL: <--   0: space    OK: done

OPTION B: Alphanumeric grid (4×7, 28 cells) — faster but smaller targets
  Full alphabet in a QWERTY-like 4-row grid.
  Works at 640×480 if cells are tight (40px each, 280px wide).
  Predictive bar replaces the need for many keys.

Good For

Bad For

Pixel Budget at 640×480

T9 grid overlay (Option A): 240×160px centered (3 columns × 4 rows, cells ~72×36px)
  - Numbers: top label in each cell (9px, bold)
  - Letters: smaller text below (7px, regular)
  - Active cell: bright border + background fill
Predictive bar: 540×40px above the grid (3 suggestions, ~140px each)
  - Suggestion #1 (top): highlighted, 14px bold
  - Suggestions #2-3: 12px regular
Current text display: 540×32px above suggestions (shows typed text so far)
Toggle label (X): 64×20px in lower-right ("abc"/"123"/"ABC")
Grid + predict + text = ~250px tall, centered on screen
Total screen real estate: ~50% (full modal overlay with dimmed background)
Integer scale note: grid lines should be 2px instead of 1px to avoid shimmer

RG40XXV-Specific Notes


Pattern 5: Tag / Preset Selection

What It Is

The player applies pre-written tags or presets from a curated list. Unlike chips (which compose into sentences), tags are standalone modifiers or commands. Think: - Dark Souls messages: "Try finger, but hole" — the player picks words from a fixed list, not a keyboard. The vocabulary IS the game's expression system. - Apex Legends ping system: "Enemy spotted", "Looting here", "Defending this position" — context-aware presets mapped to a single button. - Mario Maker stamp system: pre-drawn stamps you place on levels rather than freehand drawing.

Tags are curated, context-aware, and designed to cover 80%+ of what players want to say. The remaining 20% uses T9 fallback.

Game Examples

Game System Notes
Dark Souls / Elden Ring (2011-2022) All Message system — fixed template slots: [Conjunction] [Subject] [Predicate]. Player fills each slot from a curated word list. Limited vocabulary, near-infinite expressive combinations.
Apex Legends (2019) All Ping system — hold R1 to open ping wheel, select from 8 context-sensitive options. "Enemy here" / "I'll defend" / "Let's go here." Context changes available pings (aiming at enemy = "enemy spotted" ping, aiming at loot = "item here" ping).
Mario Maker 1+2 (2015/2019) Wii U/Switch Stamp tool — pick from categories (enemies/items/terrain/gizmos) and stamp on level. No drawing, no text. Pure selection.
Portal 2 Co-op (2011) All Ping + gesture — point at object, press ping button, partner sees "Look here" with a countdown overlay. Single-button expression.
Helldivers 2 (2024) PS5/PC Communication wheel — 8 callouts (Follow me, Sorry, Thank you, Supplies, etc.) with contextual variants. No text chat needed for combat coordination.
FFXIV (2013) All Auto-translate dictionary — "Hello!" "Good game!" "Pull please" — pre-translated phrases for cross-language play. Functional tag system dressed as a phrasebook.
Street Fighter 6 (2023) All Battle Hub stamps — emoji + short text combos. Pre-made reactions to battles ("Nice combo!", "Close one!"). Zero typing.

RG40XXV Button Mapping

Tag category suggestions for D3-TUI:

CORRECTIONS:
  [Too vague] [Too long] [Too short] [Wrong facts] [Bad tone]
  [Retry] [Summarize] [Expand section ___] [Redo step ___]
  [Skip this] [Send to expert]

REACTIONS:
  [Good work] [Interesting] [I don't understand] [Proceed]
  [Hold / pause] [Abort] [Run again]

ROUTING:
  [Send to Navigator] [Send to Oracle] [Send to Builder]
  [Broadcast to all] [Route to Mozart] [Archive in SG0]

CONTEXT TAGS:
  [Priority: High] [Priority: Low] [Urgent] [Background task]
  [Stealth mode] [Aggressive] [Defensive] [Scout only]
  [Report back] [Silent run] [Test mode]

CUSTOM:
  [Player-defined tag 1] ... [Player-defined tag 8]
  (Filled from user's most-used T9 inputs over time)

Good For

Bad For

Pixel Budget at 640×480

Tag palette: 480×320px centered overlay (semi-transparent background)
Category tabs: 640×40px across top (6-8 categories, ~60px each)
Tag grid: 3 columns × 3 rows of tag chips, ~140×44px each
  - Tag text: 14px bold inside chip
  - Active chip: bright border + subtle fill
  - Applied chips: checkmark indicator in corner
Tag description bar: 540×28px below grid (shows help text for highlighted tag)
Context indicator: 200×24px in upper-left ("Target: Last LLM output")
Apply button: 120×40px in lower-right ("Apply" or "A: Apply")
Total screen real estate: ~55% (modal overlay)
Tags render cleanly as rounded rects with 2px borders — no sub-pixel artifacts.

RG40XXV-Specific Notes


Pattern 6: Thumbs Up/Down + Refinement (Binary → Drill-Down)

What It Is

The player gives a thumbs-up (good) or thumbs-down (bad) on the most recent agent output, then optionally drills down to explain why. This is: 1. One-button feedback — instant, zero cognitive load 2. Optional detail — if the player wants to be more specific, the system asks a single follow-up question (~3 choices) 3. Learning over time — the system notices that thumbs-down on economic reports is always followed by "too optimistic" and auto-suggests that as the default

This pattern comes from Netflix ("thumbs up/down" on content → genre preferences), YouTube ("Not interested" → "Tell us why"), and Tinder (swipe → "it's a match" → optional chat).

Game Examples

Game System Notes
Netflix (2017+) All Thumbs up/down replaces star ratings. Simpler, higher engagement. "We think you'll like this because you liked X."
YouTube (2018+) All "Not interested" on recommendations → "Why?" (Already watched / Don't like channel / Don't recommend). Optional drill-down.
Tinder (2012) iOS/Android Swipe right (like) / left (nope) → Match → Chat. Binary decision → optional interaction.
Hades (2020) Switch/PC Keepsake selection — thumbs-up / thumbs-down on which god to pursue, then drill into specific boon preference.
Darkest Dungeon 2 (2021) PC Relationship system — binary positive/negative interactions between heroes build affinity. Good = buffs, Bad = stress.
Fire Emblem: Three Houses (2019) Switch Tea time — pick a topic, NPC reacts (positive/neutral/negative). Binary feedback loop that builds support points.
Ubisoft post-game surveys (various) All "Did you enjoy this mission?" → Yes/No → "What could be better?" (4 options). 30-second feedback loop, high completion rate.

RG40XXV Button Mapping

Drill-down flow example:

1. Agent output appears on screen.
2. Player presses B (thumbs down).
3. System: "What needs fixing?" → 3 options appear:
   - [Too vague / need specifics]
   - [Wrong information]
   - [Format / presentation issue]
4. Player selects "Too vague / need specifics"
5. System auto-adjusts the agent's prompt to be more specific and re-runs.
   Total interaction: B → Down → A. Three inputs, ~2 seconds.

Progressive learning:

Session 1: Player thumbs-downs economic reports 8 times, always drills to "too optimistic"
Session 2: Player thumbs-downs economic report → system auto-offers "Too optimistic?" as pre-selected drill-down
Session 3: System detects pattern and adjusts default prompt for economic reports to be "conservative estimates"
Player never had to configure this explicitly — it emerged from binary feedback.

Good For

Bad For

Pixel Budget at 640×480

Feedback bar: 640×64px anchored at bottom of screen (always visible during review)
  Thumbs-up icon: 48×48px, left side, green tint
  Thumbs-down icon: 48×48px, center, red tint
  Skip icon: 32×32px, right side, grey tint
  Button labels: "A: Good", "B: Bad", "X: Skip" below icons (10px text)
Drill-down popup: 300×180px centered (appears after B press if not yet drilled)
  "What needs fixing?" header + 3-4 options
  Option rows: 260×36px with radio-button indicator
Learning indicator: small dot + counter in upper-right ("+12 signals today")
Total screen real estate: ~12% (feedback bar only, persistent)
  Drill-down popup: ~30% (temporary overlay, auto-dismisses after selection)
Extremely lightweight — designed to be ambient, not interruptive.

RG40XXV-Specific Notes


Pattern Comparison Matrix

Pattern Input speed Expressiveness Learning curve 80%+ coverage? Good at scale? Fatigue profile
1. Radial menus Very fast (1-2 inputs) Low (4-8 options) Instant (visual) Only for known vocab Excellent (muscle memory) Very low
2. Chips composition Fast (3-6 inputs) High (combinatorial) Moderate (learn vocab) Yes (if vocab covers domain) Good (auto-pilot after learning) Low
3. Branching interviews Medium (4-12 inputs) Medium-High (deep trees) Low (guided) Yes (narrowing covers edge cases) Medium (re-runs feel slow) Medium
4. T9 predictive text Slow (8-30 inputs/sec) Very High (unbounded) Low (everyone knows T9) Yes (it's text!) Very Low (avoid at scale) High
5. Tags / presets Fast (2-3 inputs) Medium (curated list) Instant (read labels) Yes (if tags match 80% use case) Excellent (one-tap) Very low
6. Thumbs ± drill-down Very fast (1 input) Low (binary) Instant Yes (coarse filter) Excellent (Tinder-scale) Near zero

Recommended Composite Pattern for D3-TUI

Based on this research and the existing Oracle Chamber implementation, the recommended composite pattern is:

PLAYER WORKFLOW:

1. REVIEW PHASE
   → Thumbs up/down (Pattern 6) for quick-scanning agent output
   → Drill-down via chips (Pattern 2) or tags (Pattern 5) when detail needed

2. CONFIGURATION PHASE  
   → Branching interview (Pattern 3) for new/unfamiliar setups
   → Tags (Pattern 5) for on-the-fly configuration tweaks
   → Radial menu (Pattern 1) for in-combat quick actions

3. CORRECTION PHASE
   → Tags (Pattern 5) as first-class correction verbs
   → Chips (Pattern 2) for structured "redo with these constraints"
   → Branching interview (Pattern 3) for complex/novel corrections

4. ROUTING PHASE
   → Radial menu (Pattern 1) for agent selection (8 agents or fewer)
   → Chips (Pattern 2) for prepending routing metadata

5. TEXT FALLBACK (escape hatch only)
   → T9 predictive (Pattern 4) — hidden behind "Custom..." in every pattern
   → Mozart bridge routing for long-form input (off-device)

PRIMARY PATTERNS (always visible): Tags + Thumbs feedback bar
SECONDARY PATTERNS (one button away): Chips + Radial
TERTIARY (hidden): Branching interview (setup wizard only)
ESCAPE HATCH: T9 text (behind "Custom..." in all patterns)

Button Allocation Budget (7 physical buttons + D-pad)

Button Primary context Secondary context (hold + press)
D-pad Navigate menus/lists/grids —
A Confirm / thumbs-up —
B Cancel / thumbs-down —
X Skip review / neutral Toggle text modes (T9 layer)
Y Open tag palette Hold for tooltip on current item
L1 Previous tab/category Thumbs-up + archive / previous agent
R1 Next tab/category Thumbs-down + retry / next agent
Start Pause / main menu —
Select Map / strategic view —
Menu (RG button) System menu (save/quit) —

Design Principles from Research

  1. D-pad is a discrete selector, not a pointer. Don't design free-cursor UIs for a D-pad. Everything should snap to grid points, list rows, or radial slices.

  2. "See it, move to it, press A" is the atomic interaction. Fitts' Law applies differently to D-pad: the cost is number of button presses, not pixel distance. A 3×3 grid is 1-4 presses to any cell. A 10-item list is 1-5 presses to any item. Optimize for minimum D-pad presses to reach the 80th percentile option.

  3. The right thumb does double duty. D-pad for navigation, then A/B/X/Y for action. The thumb physically moves between them. Patterns that require rapid alternation between D-pad and face buttons (like fighting game combos) cause fatigue on the RG40XXV's stiff D-pad membrane. Use hold-to-continue and sticky selection where possible.

  4. Always show the exit path. B = back/undo/cancel must be universally available. Players explore UIs more when they know they can retreat for free. This is the "dark pattern inverse" — make it safe to press buttons.

  5. Curate, don't demand. Every pattern should cover ≥80% of likely inputs without text. The remaining 20% should be reachable but not prominent. If more than 20% of player actions require text, redesign the patterns, not the text input.

  6. Teach through use, not through tutorial. The first time a player uses radial, show overlay labels. After 3 uses, fade labels to 0% opacity — the positions are muscle memory now. Same pattern for chips (sorted by recency then frequency, not alphabetically).


Research compiled 2026-05-11 by codex. Sources: game design analysis of 30+ console/handheld titles from SNES era to present, existing Oracle Chamber reference implementation, and D-pad-centric input ergonomics literature. Ready for UI spec integration.