Rotate vertical MAME games on Android without mirroring the controls
Keep MAME's normal `rotate` behavior enabled first: it already presents horizontal and vertical machines in their intended orientation. If an Android port shows a vertical game sideways, change exactly one relative direction—`ror` or `rol`—and leave `flipx` and `flipy` off. Use `autoror` or `autorol` only for a display that physically pivots in one direction. If the whole app remains letterboxed or locked, that is an Android or wrapper orientation boundary, not another MAME rotation to stack.
Do this in order
- 01
Record the Android port and upstream MAME revision, machine short name, physical device orientation, active display, wrapper orientation setting, and a screenshot-free description of the wrong result.
- 02
Restore MAME `rotate` to its default on state and clear `ror`, `rol`, `autoror`, `autorol`, `flipx`, and `flipy` so the machine's native orientation is the only input.
- 03
Launch one authorized vertical game and one authorized horizontal control game; if both are rotated together, inspect the Android or wrapper orientation before adding a per-machine option.
- 04
If only the vertical game is sideways, apply either `ror` or `rol`, never both, then verify text direction, joystick direction, touch overlay, and external controller mapping.
- 05
Use `autoror` or `autorol` only when a physical display pivots in one supported direction; do not use them as generic phone auto-rotate switches.
- 06
Save the narrowest machine or display-specific setting, cold-relaunch both control games, and repeat after an Android, wrapper, display, renderer, or MAME revision change.
Decision and diagnostic table
| Visible result | Likely layer | Decision |
|---|---|---|
| Only one vertical game is sideways | MAME relative rotation | Try one of ror or rol |
| Game is readable but controls feel reversed | Overlay or input map did not rotate | Repair the input layer separately |
| Image is mirrored | flipx or flipy | Reset flips; rotation is not reflection |
| Whole app is locked or letterboxed | Android activity or wrapper | Inspect app orientation and window policy |
Normal rotation and relative rotation are separate
MAME enables `rotate` by default so each system follows its declared normal orientation. `ror` and `rol` then add a clockwise or counter-clockwise adjustment relative to that result. Stacking guesses can turn one quarter-turn error into a half-turn error.
Mirroring is not a rotation fix
MAME applies `flipx` and `flipy` after rotation. A reflected score or reversed text means a flip is active; changing the joystick map to compensate would preserve the wrong picture and create a second fault.
Android owns the app window
An Android activity can request portrait, landscape, sensor, user, or locked behavior, while large screens and multi-window modes can letterbox or override requests. An Android port may expose only a wrapper control, so its own help and behavior are the authority for the final window orientation.
Display rotation does not authorize game data or presentation assets. Test with lawful content and do not publish ROMs, BIOS files, CHDs, screenshots, cabinet art, overlays, music, or private device details with an orientation report.