NSO Controllers
The Nintendo Switch Online wireless retro pads — N64, SNES, NES, and Genesis — all work in RetroArch on Mac. The Vault writes the right driver and button map for each, automatically, at every launch. (The wireless GameCube pad is a special case — see its own page.)
⚠️ Pair over Bluetooth, never USB
Over USB, macOS doesn't surface these pads' input. Always connect them over Bluetooth.
The pads at a glance
| Controller | RetroArch driver | Hotkey modifier | Notes |
|---|---|---|---|
| N64 | mfi | Select-equiv. | C-buttons mapped to the right stick. Full hotkey scheme via the mfi config. |
| SNES | mfi | Select | Full hotkey scheme. |
| NES | mfi | Select | Full hotkey scheme. |
| Genesis / Mega Drive | hid | Mode | Not readable over mfi — uses the hid driver. |
| GameCube (wireless) | DSU bridge | Capture | See the GameCube page — Dolphin, full analog + rumble. |
The hotkey scheme
Every pad that supports hotkeys uses the same layout — hold its modifier (Select on NES/SNES, Mode on Genesis) and press:
| Combo | Action |
|---|---|
| Modifier + R | Save state |
| Modifier + L | Load state |
| Modifier + ▲ / ▼ | Next / previous slot |
| Modifier + Start | Quit to library |
Genesis is the exception: its pad has no usable shoulder buttons, so Save and Load use B and A here instead of R and L (the slot and Start-to-Quit combos are unchanged). Every other pad — including N64 — uses the R / L scheme above.
Why it needs a per-platform swap
RetroArch's mfi driver reports every NSO pad generically as "mFi Controller" and reads one shared profile file — so The Vault swaps in the correct pad's mapping before RetroArch launches. You never touch RetroArch's input menus, and you should never use RetroArch's "Save Controller Profile" for these pads (it silently re-indexes the buttons). The Vault hand-maintains the master mappings instead.
💡 One modifier per controller
Each pad has a different natural "modifier" button (Select, Mode, Capture, Create…). The Vault maps the same universal hotkeys onto whatever that pad's modifier is — so the muscle memory carries across every controller.