Android MAME vertical-screen tutorial / 2026-08-05

Rotate vertical MAME games on Android without mirroring the controls

Separate MAME machine rotation, a right-or-left adjustment, pivot-screen automation, Android activity orientation, and accidental mirroring.

9 minute display-orientation guideOfficial MAME 0.289 rotation behavior as exposed by an Android port; phone, tablet, foldable, external-display, and wrapper orientation policies vary

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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 resultLikely layerDecision
Only one vertical game is sidewaysMAME relative rotationTry one of ror or rol
Game is readable but controls feel reversedOverlay or input map did not rotateRepair the input layer separately
Image is mirroredflipx or flipyReset flips; rotation is not reflection
Whole app is locked or letterboxedAndroid activity or wrapperInspect 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.

First-party sources

Related guides