Routing Sub-Menu UX Design
Status: Complete | Agent: PERISCOPE (UX Design) | Timestamp: 2026-05-11 14:30 UTC Target: Anbernic RG40XXV (640Γ480, D-pad + A/B/X/Y, L1/R1, START/SELECT) Game: Turn-based strategy, hex-node traversal
1. Flow Overview
NODE OUTPUT VIEW β [Route] β CONTENT SELECTION β METHOD SELECTION
β
TARGET SELECTION (Grid)
β
CONFIRMATION DIALOG
β
EXECUTION / ANIMATION
2. Entry Point β Node Output View
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ HEX 14: DESIGN ββββββββββββββββββββββββββββ [B:Back] β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β OUT: "Tile Dimensions & Hex Grid Layout" β β
β β β β
β β Β§1 Grid Philosophy (120w) β β
β β Β§2 Tile Dimensions (340w) β highlighted β β
β β Β§3 Viewport Constraints (180w) β β
β β Β§4 Future Considerations (90w) β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β [A:Route] [Y:View Raw] [X:Chain View] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
640Γ480 β 32px border, 14px mono font, 4-color palette
Entry trigger: Select a node that has produced output, press A to open output view, then press A again on "Route."
3. Screen 1 β Content Selection
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ ROUTE FROM HEX 14 βββββββββββββββββββββββ [B:Cancel] β
β β
β WHAT TO ROUTE? β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β ENTIRE OUTPUT (4 sections, 730w) β β
β β β β
β β β SPECIFIC SECTION β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Β§1 Grid Philosophy β β β
β β β Β§2 Tile Dimensions β selected β β β
β β β Β§3 Viewport Constraints β β β
β β β Β§4 Future Considerations β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β β CURATED SUBSET (agent filters) β β
β β Agent reads source β extracts what target needs β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββ [A:Confirm] [Y:Next] βββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Controls: - D-pad ββ: Navigate radio buttons / section list - A: Select / toggle radio - B: Back to output view - Y: Accept and proceed to method selection
State: Radio + optional sub-list (shown only when "Specific Section" selected).
4. Screen 2 β Method Selection
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ DELIVERY METHOD ββββββββββββββββββββββββ [B:Back] β
β β
β CONTENT: Β§2 Tile Dimensions (340w) β
β β
β HOW TO DELIVER? β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β CURATED β β
β β Agent reads source, filters for relevance to β β
β β target's prompt thrust. Target receives a β β
β β distilled, context-optimized version. β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Reduces context window pressure β β β
β β β β Target gets only what matters β β β
β β β β Adds agent latency (1β3s) β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β β POINTER β β
β β Target gets a read-only pointer to source. β β
β β Can inspect it but it's NOT injected into β β
β β target's context unless explicitly requested. β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Zero latency, no context cost β β β
β β β β Target checks on-demand β β β
β β β β Requires target to actively pull β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββ [A:Confirm] [X:Toggle] [Y:Next] βββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Controls: - D-pad ββ: Select curated or pointer - A: Confirm choice - X: Toggle between options (fast swap) - B: Back to content selection - Y: Accept and proceed to target selection
5. Screen 3 β Target Selection (Hex Grid Routing Mode)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ ROUTING MODE βββββββββββββββββββββββββββ [B:Cancel] β
β β
β ββββββββββββββββββββββββββββββββββββββββββ PREVIEW: β
β β β β
β β ⬑βββ⬑βββ⬑βββ⬑ β Route: H14βH22β
β β β± β² β± β² β± β² β± β² β Content: Β§2 β
β β ⬑βββ⬑βββ⬑βββ⬑βββ⬑ β Grid β Method: CURATEDβ
β β β² β± β² β± β² β β² β± β² Cursor: β β β
β β ⬑βββ⬑βββββββ⬑βββ⬑ Selected: β β PRESS A TO β
β β β² β± β² β± β² β± β² β± Source: β β SELECT HEX 22 β
β β ⬑βββ⬑βββ⬑βββ⬑ β β
β β β β
β β β = H14 (DESIGN) SOURCE β [X] Method β
β β β = H22 (DEVELOP) CURSOR β [Y] Scope β
β β β [L1/R1] Chains β
β ββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Routing Mode Controls: | Button | Action | |--------|--------| | D-pad | Navigate hex grid cursor | | A | Select highlighted hex as target | | B | Cancel β back to method selection | | X | Toggle method: Curated β Pointer | | Y | Toggle content scope: Entire β Section β Curated Subset | | L1/R1 | Cycle through pending routing chains | | START | Execute all pending routes immediately |
Visual states:
- β = Source node (pulsing highlight)
- β = Already-confirmed target (solid)
- β = Current cursor position (blinking)
- ⬑ = Empty / unselected hex
- Valid targets glow green on hover; invalid (already targeted, offline) glow red
Info panel (right side): Shows live preview of the routing action as player navigates.
6. Screen 4 β Confirmation Dialog
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ CONFIRM ROUTE βββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β SOURCE: HEX 14 (DESIGN) β β
β β TARGET: HEX 22 (DEVELOP) β β
β β METHOD: CURATED β β
β β CONTENT: Β§2 Tile Dimensions (340w) β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β "Tile dimensions are set at 64Γ56px per β β β
β β β hex, with a 2px gutter. The grid uses β β β
β β β axial coordinates (q,r). Viewport is β β β
β β β 640Γ480 with a 32px HUD margin..." β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Agent will read source, filter for target β β β
β β β prompt thrust, and inject curated context. β β β
β β β Est. latency: 2.1s β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββ [A:EXECUTE] [B:CANCEL] [Y:EDIT] βββββββββββββ β
β [X:Add to chain] [SELECT:Edit source] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Controls: - A: Execute the route - B: Cancel β back to target selection - Y: Edit β go back through the flow (content β method β target) - X: Add to chain (queue this route, stay in routing mode for next hop) - SELECT: Edit source node β re-enter target selection with different source
Content preview: Shows first ~200 characters of selected content, truncated with "β¦"
7. Screen 5 β Execution Feedback
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β β
β β
β ββββββββββββββββ β
β β ROUTINGβ¦ β β
β β β β
β β H14 βββ H22 β β
β β βββββββ β β
β ββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββ β
β β Agent is curating Β§2 for DEVELOP β β
β β prompt thrust: "implement hex β β
β β grid renderer" β β
β ββββββββββββββββββββββββββββββββββββββ β
β β
β [B:HALT] [SELECT:Skip animation] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Progress bar: Fills over ~2s (curated) or instant (pointer).
Controls during execution: - B: Halt β immediately stops the routing action (confirmation: "Halt routing? [A:Yes] [B:No]") - SELECT: Skip animation β jump to completion message
8. Screen 6 β Completion
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β β
β β
β β ROUTED β
β β
β H14 (DESIGN) βββββββ H22 (DEVELOP) β
β Β§2 Tile Dimensions β
β Method: CURATED β
β β
β ββββββββββββββββββββββββββββββββββββββββββ β
β β HEX 22 can now access HEX 14's β β
β β output in its context. β β
β β β β
β β Multi-hop chain: β β
β β H14 β H22 β β β
β β β β
β β [A:View target] [Y:Route again] β β
β ββββββββββββββββββββββββββββββββββββββββββ β
β β
β [B:Return to grid] [X:Chain next] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Controls: - A: Jump to target node's output view - B: Return to hex grid - X: Chain next β start routing from H22 to another node - Y: Route again β start new route from same source
9. Multi-Hop Chain View
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ ROUTING CHAINS βββββββββββββββββββββββββββββββββ β
β β
β ACTIVE CHAIN: CHAIN 1/2 [L1/R1:Cycle chains] β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β H14 βββ H22 βββ H28 βββ ? β β
β β DESIGN DEVELOP TEST (select next target) β β
β β Β§2 Β§2 Β§2 β β
β β CURATED CURATED CURATED β β
β β β β
β β PENDING ROUTES IN THIS CHAIN: β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β H14βH22 (executed) β β β
β β β β H22βH28 (executed) β β β
β β β β H28β? (pending β select target) β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β OTHER CHAINS: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β CHAIN 2: H08 β H15 (1 hop, executed) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ [A:Continue chain] [X:New chain] [Y:Clear chain] β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Controls: - L1/R1: Cycle through active chains - A: Continue chain (enter routing mode for next hop) - X: Start new chain - Y: Clear current chain (confirmation required) - B: Return to grid
10. Clear / Halt / Clarify β Interruption States
10a. Clear (Dismiss pending route)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β CLEAR PENDING ROUTE? β β
β β β β
β β H14 β H22 (CURATED, Β§2) β not yet executed β β
β β β β
β β [A:Clear route] [B:Keep it] β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Triggered by pressing B on the confirmation screen, or Y on the chain view.
10b. Halt (Stop in-progress routing)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β ββββββββ HALTINGβ¦ β β
β β β β
β β Routing H14βH22 was interrupted. β β
β β No context was injected. β β
β β β β
β β [A:Retry] [B:Dismiss] [Y:Change method] β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Triggered by B during the "Routingβ¦" progress screen.
10c. Clarify (Redo selection)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββββ WHAT NEEDS FIXING? ββββββββββββββββββββββ [B:Nevermind]β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β WRONG SOURCE NODE (Hex 14 β pick new) β β
β β β β
β β β WRONG CONTENT SECTION (Β§2 β pick new) β β
β β β β
β β β WRONG TARGET NODE (Hex 22 β pick new) β β
β β β β
β β β WRONG METHOD (CuratedβPointer) β β
β β β β
β β β DON'T WANT TO ROUTE AT ALL (dismiss) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββ [A:Select] [B:Back] βββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Triggered by holding SELECT for 0.5s on any routing screen, or by pressing Y on the confirmation screen.
Each option redirects: - "Wrong source" β back to hex grid, pick new source node - "Wrong content" β back to content selection - "Wrong target" β back to routing mode grid - "Wrong method" β back to method selection - "Don't want to route" β dismiss everything, return to grid
11. Complete Button Map Reference
| Button | Context | Action |
|---|---|---|
| D-pad ββ | All menus | Navigate options / sections |
| D-pad ββββ | Routing mode | Move hex grid cursor |
| A | Menu | Select / confirm current item |
| A | Routing mode | Select hex under cursor as target |
| A | Confirmation | Execute route |
| B | Any screen | Back one step |
| B | Execution | Halt routing in progress |
| B (hold 0.5s) | Any screen | Open Clarify menu |
| X | Routing mode | Toggle method (Curated β Pointer) |
| X | Confirmation | Add to chain (queue, don't execute) |
| X | Completion | Chain next (route from target onward) |
| Y | Content select | Accept and proceed |
| Y | Routing mode | Toggle content scope (Entire β Section β Curated) |
| Y | Confirmation | Edit (go back through flow) |
| Y | Completion | Route again (new route from same source) |
| L1 | Any routing screen | Previous pending chain |
| R1 | Any routing screen | Next pending chain |
| START | Any routing screen | Execute all pending routes |
| SELECT | Confirmation | Edit source node |
| SELECT (hold) | Any routing screen | Open Clarify menu |
| SELECT | Execution | Skip animation |
12. State Machine
βββββββββββββββ
β GRID VIEW β
ββββββββ¬βββββββ
β [A on node with output]
βΌ
βββββββββββββββββ
β OUTPUT VIEW β
βββββββββ¬ββββββββ
β [A:Route]
βΌ
βββββββββββββββββ
βββββΆβ CONTENT βββββ
β β SELECTION βββββ
β βββββββββ¬ββββββββ β [Y:Edit from confirm]
β β [Y:Next] β
β βΌ β
β βββββββββββββββββ β
β β METHOD ββββββ
β β SELECTION β
β βββββββββ¬ββββββββ
β β [Y:Next]
β βΌ
β βββββββββββββββββ
β β TARGET βββββββββββββ
β β SELECTION β β
β βββββββββ¬ββββββββ β
β β [A on hex] β
β βΌ β
β βββββββββββββββββ β
β β CONFIRMATION ββββ[Y:Edit]β
β βββββββββ¬ββββββββ
β β
β βββββββββ΄ββββββββ
β β β
β βΌ βΌ
β [X:Chain] [A:Execute]
β β β
β β βΌ
β β βββββββββββββββββ
β β β EXECUTION ββββ[B:Halt]βββΆ HALTED
β β βββββββββ¬ββββββββ
β β β
β β βΌ
β β βββββββββββββββββ
β β β COMPLETION β
β β βββββββββ¬ββββββββ
β β β
β β βββββββββββΌββββββββββ
β β β β β
β β βΌ βΌ βΌ
β β [B:Grid] [X:Chain] [Y:Route again]
β β β
ββββββ β
[Chain loops back to target selection
with previous target as new source]
13. Design Principles
-
One thumb, four buttons. Every critical action maps to A/B/X/Y within thumb reach. No D-pad + button combos required for primary flow.
-
Preview before commit. The confirmation screen shows everything: source, target, method, content snippet, estimated latency. No surprises.
-
Undo is cheap. B always goes back. Clarify always offers granular correction. Clear always has a confirmation step.
-
Chains are first-class. L1/R1 cycle chains everywhere. START executes all pending. Multi-hop isn't an afterthought β it's built into the core loop.
-
Latency is visible. During curated routing, the progress bar + status text make the wait feel intentional, not broken. Pointer method is instant for impatient players.
-
640Γ480 economy. Every pixel counts. No wasted chrome. ASCII-art borders are 1 character wide. Info panels share screen real estate with the grid. Content previews truncate at ~200 chars.
-
Color as state, not decoration. Source nodes pulse. Valid targets glow green. Invalid targets glow red. Confirmed routes show chain lines. Color carries information β nothing is purely decorative.
14. Edge Cases
| Case | Behavior |
|---|---|
| Target node has no prompt yet | Warn: "HEX 22 has no active prompt. Route will be stored until prompt is set." Confirm or cancel. |
| Target already has a route from same source | "HEX 22 already has a route from HEX 14. Overwrite? [A:Yes] [B:No]" |
| Target == Source | Cursor skips source hex. Grid shows source as β, not selectable. |
| Chain loop (AβBβA) | Detect and warn: "This creates a circular route. Continue? [A:Yes] [B:No]" |
| Agent offline (Curated method) | "Agent unavailable. Use Pointer method instead?" Fallback offered. |
| Output has no sections (empty) | "HEX 14 has no output to route." Only "Entire output" shown (with "(empty)" note). |
| Max chain length (10 hops) | "Chain limit reached (10). Execute or start new chain." |
| Routing to off-grid / deleted node | Node removed from valid target list. If already targeted, clear with warning. |
15. Accessibility Notes
- All actions available via D-pad + A/B/X/Y (no simultaneous multi-button)
- Hold duration for Clarify is configurable (default 500ms)
- Color-only states have secondary indicators (pulse animation, border style)
- Text size: 14px minimum, high-contrast palette (4-color: bg, fg, accent, dim)
- Audio cues: optional click on grid move, chime on completion, buzz on error