> For the complete documentation index, see [llms.txt](https://wiki.retrobat.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.retrobat.org/controllers/supported-controllers/arcade-sticks.md).

# Arcade Sticks

Arcade sticks (fight sticks, hitboxes, arcade panels with a USB encoder) are handled like gamepads in RetroBat. On top of that, RetroBat can reproduce the **original button layout of the arcade cabinet** on your stick, thanks to the **CONTROLLER LAYOUT** option.

## Choose the right mode on your stick

Most recent sticks have a mode switch or a button combination (see your stick's manual): **XInput / PC / X**, **DirectInput / D**, **PlayStation / PS**, **Switch / NS**…

{% hint style="success" %}
**Use XInput mode whenever your stick offers it.** The stick is then recognised as a standard Xbox controller: it is configured automatically, and its buttons match the layouts described below without any setting.
{% endhint %}

<table><thead><tr><th width="216.5">Mode</th><th>Notes</th></tr></thead><tbody><tr><td><strong>XInput</strong> (recommended)</td><td>Automatic configuration. The 8 buttons are A, B, X, Y, LB, RB, LT, RT.</td></tr><tr><td><strong>PlayStation / Switch</strong></td><td>Works too (buttons are handled by position), but XInput remains the simplest.</td></tr><tr><td><strong>DirectInput</strong> (cheap USB encoders, Zero Delay…)</td><td>Must be configured once in <strong>MAIN MENU > CONTROLLER SETTINGS > CONTROLLER MAPPING</strong>. Map the buttons following the reference layout below, so that the layouts work as expected.</td></tr></tbody></table>

**Lever**: if your stick has a **DP / LS / RS** switch, keep it on **DP** (D-pad). Only use **LS** (left stick) for games that need an analog input.

### Mapping a DirectInput stick

When configuring the stick in **CONTROLLER MAPPING**, map the buttons by position, as on a "modern" 8-button panel:

<table><thead><tr><th width="145.5"></th><th width="129.75">Button 1</th><th width="137">Button 2</th><th>Button 3</th><th>Button 4</th></tr></thead><tbody><tr><td><strong>Top row</strong></td><td>WEST</td><td>NORTH</td><td>RIGHT SHOULDER</td><td>LEFT SHOULDER</td></tr><tr><td><strong>Bottom row</strong></td><td>SOUTH</td><td>EAST</td><td>RIGHT TRIGGER</td><td>LEFT TRIGGER</td></tr></tbody></table>

Also map **START**, **SELECT** (used as Coin) and **HOTKEY** (usually the same button as SELECT).

## Choose the layout (CONTROLLER LAYOUT)

The **CONTROLLER LAYOUT** option is located in the system's advanced configuration (or the game's advanced configuration) > **CONTROLS**. It also exists for all systems at once in **GAME SETTINGS > CONTROLS > SPECIAL CONTROLLERS**. It tells RetroBat how the buttons of your stick are laid out, so that each game uses the same buttons as on the original cabinet.

<div align="left"><figure><img src="https://990680527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FexdzL60ZuqPLldz2AYta%2Fuploads%2FUKfa3KqF0bQqKIDH5XiE%2Fimage.png?alt=media&amp;token=17a87e89-478a-45ad-9f27-76505c0c4b8a" alt=""><figcaption></figcaption></figure></div>

The diagrams below show the buttons as **XInput** names them (PlayStation equivalent: X = □, Y = △, A = ✕, B = ○, LB/RB = L1/R1, LT/RT = L2/R2).

| Value                           | Top row         | Bottom row      | For                                                                       |
| ------------------------------- | --------------- | --------------- | ------------------------------------------------------------------------- |
| **CONTROLLER (SNES)** (default) | –               | –               | Gamepads: the mapping is designed for a controller.                       |
| **MODERN 8 BUTTONS**            | X · Y · RB · LB | A · B · RT · LT | Most fight sticks and hitboxes (Hori, Qanba, Mayflash, 8BitDo, Victrix…). |
| **8 BUTTONS ALTERNATIVE**       | X · Y · LB · LT | A · B · RB · RT | Panels whose 3rd and 4th columns are LB/RB and LT/RT.                     |
| **6 BUTTONS**                   | X · Y · LB      | A · B · RB      | 6-button panels (Astro City style).                                       |
| **CLASSIC 8 BUTTONS**           | X · Y · LB      | A · B · RB      | Currently uses the 6 BUTTONS layout.                                      |

{% hint style="info" %}
To find your layout, look at the labels printed on your stick (or press each button in Windows' **Set up USB game controllers**, `joy.cpl`), then pick the line that matches what your top and bottom rows send.
{% endhint %}

Examples (MODERN 8 BUTTONS):

* **3-button game** (e.g. Golden Axe): buttons 1-2-3 on the top row.
* **6-button game** (e.g. Street Fighter II): punches on the top row, kicks on the bottom row, as on the original cabinet.

### Emulators supporting the layouts

<table><thead><tr><th width="340.25">Emulator</th><th>Games</th></tr></thead><tbody><tr><td><strong>MAME</strong> (standalone, HBMAME, GroovyMAME)</td><td>All games, with exact cabinet layouts for the games provided by RetroBat.</td></tr><tr><td><strong>RetroArch - MAME</strong> core</td><td>All games, with exact cabinet layouts for the games provided by RetroBat.</td></tr><tr><td><strong>RetroArch - Flycast</strong>, <strong>Supermodel</strong>, <strong>MAME 2003-Plus</strong> and <strong>Mednafen Saturn</strong> (ST-V) cores</td><td>Games listed in the mapping files.</td></tr><tr><td><strong>FBNeo</strong> (standalone)</td><td>Games listed in the mapping file.</td></tr><tr><td><strong>Flycast</strong> (standalone, Naomi / Atomiswave)</td><td>Games listed in the mapping file.</td></tr><tr><td><strong>Supermodel</strong> and <strong>Model3-Vulkan</strong> (Model 1, 2 and 3)</td><td>Games listed in the mapping file.</td></tr><tr><td><strong>Keisho</strong> (Model 1, 2 and 3)</td><td>All games, with game-specific layouts for Virtua Fighter 3, Fighting Vipers 2 and Spikeout; except the games with a fixed layout (Virtual On, ski games…).</td></tr><tr><td><strong>m2emulator</strong> (Model 2)</td><td>Fighting games and "standard" games of the mapping file.</td></tr><tr><td><strong>TeknoParrot</strong></td><td>Games listed in the mapping file.</td></tr><tr><td><strong>Lindbergh</strong> (linuxloader)</td><td>All games.</td></tr><tr><td><strong>PCSX2x6</strong> (Namco System 246/256)</td><td>All games.</td></tr><tr><td><strong>ArcadeDuck</strong> (PSX Arcade)</td><td>All games, with game-specific layouts when available.</td></tr></tbody></table>

Games that are not listed use the standard RetroBat mapping. You can add or modify game layouts in `user\inputmapping`: see the [Emulator specific controls mapping](/controllers/specific_mapping.md) page.

## Arcade buttons

| Function        | Stick          | Keyboard  |
| --------------- | -------------- | --------- |
| Start (P1 / P2) | START          | `1` / `2` |
| Coin (P1 / P2)  | SELECT         | `5` / `6` |
| Test            | R3             | `0`       |
| Service         | L3             | `9`       |
| Exit the game   | HOTKEY + START | `Esc`     |

{% hint style="info" %}
Most sticks have no L3/R3 buttons: use the keyboard keys `9` / `0` to open the operator menus (Test / Service), or the L3/R3 switch of your stick if it has one.
{% endhint %}

See the [Arcade Guide](/systems-and-emulators/arcade-guide.md) for more details on arcade controls and romsets.

## Sticks recognised as a keyboard (I-PAC2, X-Arcade Tankstick)

Some sticks and encoders are seen by Windows as a **keyboard**. RetroBat provides ready-made configurations for them:

* **RetroArch**: **GAME SETTINGS > RETROARCH OPTIONS > CONTROLS > CONFIGURE SPECIAL KEYBOARD STICK**.
* **MAME**: system advanced configuration > CONTROLS > **CONTROLLER PROFILE** (IPAC2 or X-ARCADE).
* **PCSX2x6**: system advanced configuration > CONTROLS > **CONFIGURE SPECIAL KEYBOARD STICK**.

All the details are on the [Special controllers](/controllers/supported-controllers/gamepads/special-controllers.md) page.

{% hint style="info" %}
If your encoder can work as a gamepad (XInput), prefer this mode: the stick then benefits from automatic configuration and from the layouts above.
{% endhint %}

## Custom stick mapping (RetroArch)

For a stick recognised as a gamepad, you can also force a dedicated RetroArch mapping with the `arcade_sticks.json` file and the **USE CUSTOM ARCADE STICK MAPPING** option: see the [Special controllers page](/controllers/supported-controllers/gamepads/special-controllers.md).

### Gamepads before arcade sticks

When an arcade stick and a gamepad are connected at the same time, the stick can take the player 1 slot. The **GAMEPADS BEFORE ARCADE STICKS** option gives the first slots to gamepads: sticks become the next players. The controller order in EmulationStation is not changed.

The option is set for all systems in **GAME SETTINGS > GLOBAL OPTIONS**, or system by system in the system advanced settings > **GENERAL SETTINGS**:

<table><thead><tr><th width="179">Value</th><th>Effect</th></tr></thead><tbody><tr><td><strong>OFF</strong> (default)</td><td>The EmulationStation order applies everywhere.</td></tr><tr><td><strong>CONSOLES ONLY</strong></td><td>Gamepads come before sticks on consoles and computers; arcade systems (MAME, FBNeo, Model 2, Naomi…) keep the EmulationStation order.</td></tr><tr><td><strong>ALWAYS</strong></td><td>Gamepads come before sticks on all systems.</td></tr></tbody></table>

RetroBat recognizes as an arcade stick:

* XInput sticks that declare themselves as arcade sticks (most recent models);
* devices whose name or USB id is listed in the `system\tools\arcade_sticks.txt` file (Qanba, Hori, Mad Catz, Victrix, Mayflash, hitboxes, Zero Delay encoders, GP2040-CE firmware…).

6-button "fight pad" controllers are not treated as sticks.

{% hint style="info" %}
If your stick is not recognized, start a game with the option on, then open the `emulationstation\emulatorLauncher.log` log: the **Arcade stick check** lines give the name and USB id (`usb:VVVV:PPPP`) of each controller. Add the value to `arcade_sticks.txt` (one rule per line, the syntax is explained at the top of the file).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://wiki.retrobat.org/controllers/supported-controllers/arcade-sticks.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
