Skip to content

MAME INI Override Files (Batocera) WORK IN PROGRESS!

Rion edited this page Feb 15, 2026 · 1 revision

MAME INI Override Files (Batocera) WORK IN PROGRESS!

This page explains how MAME INI override files work in Batocera, where they are located, and how to use them to apply settings for specific game types (for example vertical/TATE games) without changing your global MAME configuration.

It is written for CRT Script users and Batocera paths, but it also references the official MAME documentation for the underlying INI / multi-config behavior.

Scope

  • This applies to standalone MAME (Batocera’s mame emulator), not the Libretro MAME core inside RetroArch.
  • RetroArch has its own override system (core/game/directory overrides) and limitations around rotation on CRT setups.

Why INI overrides matter on CRT setups

On CRT outputs, certain titles—especially vertical (TATE) games played on a horizontal (YOKO) display—can cause:

  • scrolling / rolling / sync instability
  • mode selection problems when SwitchRes tries to hit a specific refresh rate
  • dotclock constraints that are too strict for your monitor/chassis

INI overrides let you adjust only what’s needed (for example dotclock_min) for a specific category like vertical games, without touching your global defaults.


Batocera paths (important)

In Batocera, MAME INI files are stored here:

  • INI directory: /userdata/system/configs/mame/ini/

Common override files you may see/use:

  • /userdata/system/configs/mame/ini/mame.ini
  • /userdata/system/configs/mame/ini/vertical.ini
  • /userdata/system/configs/mame/ini/horizontal.ini

If the folder or file does not exist, you can create it.

Note: Many MAME guides online show other paths depending on OS.
For Batocera CRT Script users, the paths above are the ones that matter.


How MAME loads multiple INI files (multi-config)

MAME can load more than one INI file for a single game (multi-config).
That means you can keep your global settings in one place, and only override what you need in a more specific INI.

A typical concept (high level) looks like:

  • Global settings → mame.ini
  • Orientation-based settings → vertical.ini / horizontal.ini
  • (Optionally) other category or per-game overrides depending on your setup

For deeper background, see MAME’s official documentation:


Fix attempt #1: Relax dotclock constraints for vertical games

If vertical games roll/scroll on CRT, a common first attempt is to relax the minimum dotclock.

Edit:
/userdata/system/configs/mame/ini/vertical.ini

Add (or set) this line:

dotclock_min              25

Minimal recommended vertical.ini

Keep it clean—only add what you need:

#
# Vertical (TATE) overrides
#
dotclock_min              25

Tip: Avoid copying lots of settings into overrides. Small, targeted overrides are easier to debug.


Fix attempt #2: Force the MAME monitor profile (example: NTSC)

If your CRT chassis can’t handle what the current monitor profile requests for TATE-in-YOKO, you may need to force a different MAME monitor profile (example: ntsc).

Edit:
/userdata/system/configs/mame/ini/vertical.ini

Add:

monitor                   ntsc

Where to place it

Place it anywhere in the file, but it’s cleaner to keep display-related options grouped.

Example:

#
# Vertical (TATE) overrides
#
monitor                   ntsc
dotclock_min              25

If you’re using a different profile (PAL chassis, arcade range, etc.), adjust accordingly.


Important note about RetroArch (Libretro) rotation

RetroArch cannot rotate the entire output display the same way a physically rotated CRT does.
You can rotate the game image, but the output + UI behavior does not become a true “rotated display” environment—this can lead to issues on CRT setups.

So:

  • Standalone MAME may auto-rotate TATE titles.
  • Libretro cores (FBNeo / Libretro MAME) often require rotation via RetroArch settings, and that can be a poor match for CRT timing behavior in some setups.

Best practice: Separate vertical games

If you use Libretro cores (FBNeo, Libretro MAME), the best workflow is often:

  1. Put vertical/TATE games in a dedicated ROM subfolder (example: vertical/)
  2. Apply a RetroArch core directory override for that folder:
    • rotation settings
    • SwitchRes-related overrides (if your setup supports them there)
  3. Keep standalone MAME overrides separate (via vertical.ini)

This prevents global settings from affecting everything else.


Troubleshooting checklist

If the issue persists after dotclock_min 25:

  • Confirm the game is actually being launched with standalone MAME (not Libretro MAME).
  • Confirm your edits are in: /userdata/system/configs/mame/ini/vertical.ini
  • Keep overrides minimal (only dotclock_min / monitor while testing).
  • If you are using RetroArch cores:
    • avoid relying on “rotate display” expectations
    • prefer folder-based overrides and stable super-res workflows

Related CRT Script Wiki pages


Appendix: Example vertical.ini (recommended starting point)

#
# Vertical (TATE) overrides for CRT users
#
monitor                   ntsc
dotclock_min              25

Start with just one change (e.g., dotclock_min 25). If needed, add monitor ntsc next.

Clone this wiki locally