-
Notifications
You must be signed in to change notification settings - Fork 15
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
mameemulator), not the Libretro MAME core inside RetroArch.- RetroArch has its own override system (core/game/directory overrides) and limitations around rotation 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.
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.
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:
- Multi-config overview: https://docs.mamedev.org/advanced/multiconfig.html
- MAME docs index: https://docs.mamedev.org/index.html
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 25Keep it clean—only add what you need:
#
# Vertical (TATE) overrides
#
dotclock_min 25Tip: Avoid copying lots of settings into overrides. Small, targeted overrides are easier to debug.
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 ntscPlace it anywhere in the file, but it’s cleaner to keep display-related options grouped.
Example:
#
# Vertical (TATE) overrides
#
monitor ntsc
dotclock_min 25If you’re using a different profile (PAL chassis, arcade range, etc.), adjust accordingly.
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.
If you use Libretro cores (FBNeo, Libretro MAME), the best workflow is often:
- Put vertical/TATE games in a dedicated ROM subfolder (example:
vertical/) - Apply a RetroArch core directory override for that folder:
- rotation settings
- SwitchRes-related overrides (if your setup supports them there)
- Keep standalone MAME overrides separate (via
vertical.ini)
This prevents global settings from affecting everything else.
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/monitorwhile testing). - If you are using RetroArch cores:
- avoid relying on “rotate display” expectations
- prefer folder-based overrides and stable super-res workflows
- SwitchRes overrides (general guide):
https://github.com/ZFEbHVUE/Batocera-CRT-Script/wiki/switchres.ini-override
#
# Vertical (TATE) overrides for CRT users
#
monitor ntsc
dotclock_min 25Start with just one change (e.g., dotclock_min 25). If needed, add monitor ntsc next.