-
Notifications
You must be signed in to change notification settings - Fork 15
How to CRT Script Configuration
This guide provides detailed information about each step in the Batocera CRT Script v43 configuration process. Use this when you need to understand what each option means or troubleshoot configuration choices.
When the script asks: "Enter the number of the output you like to use for CRT output"
Your GPU has multiple video output connectors. The script scans for available outputs via xrandr and presents them as a numbered list. You need to select the port where your CRT is (or will be) connected.
| Output Type | Example Names | Notes |
|---|---|---|
| VGA (D-Sub) |
VGA-1, VGA-2
|
Analog-only; best for CRT (15kHz capable) |
| DVI-I |
DVI-I-1, DVI-D-1
|
DVI-I supports analog (CRT-capable); DVI-D is digital-only |
| DisplayPort |
DP-1, DP-2, eDP-1
|
Requires a DP-to-VGA DAC for CRT output; eDP-1 is embedded/laptop screen |
| HDMI |
HDMI-1, HDMI-2
|
Digital-only; NOT suitable for direct CRT connection |
- If you already have your CRT plugged in: Select the output where your CRT cable is connected
- If you're using a temporary display (HDMI/DVI-D): Select the output where your CRT will be connected after installation
- If unsure which port is which: You can physically trace cables from the GPU to each monitor
-
If the output you need isn't listed: Press R to rescan outputs once via
xrandr
Tip
You can always rerun the script later and select a different output if you change your setup or move the CRT to a different port.
The script configures that specific output port and creates a monitor configuration file (10-monitor.conf) specifically for that port. If you later move your CRT to a different port, rerun the script and select the new port—it will update automatically.
When the script asks: "Make your choice for monitor type"
After selecting your CRT output port, the script presents a categorized list of monitor profiles. A monitor profile is a pre-configured set of timing standards (modelines) specific to different CRT types. Selecting the correct profile ensures the script generates safe, compatible video modes for your specific CRT hardware.
The script groups profiles into these categories:
| Category | Profiles | Best For |
|---|---|---|
| Generic CRT standards 15 KHz |
generic_15, ntsc, pal
|
Standard consumer CRTs without a specific manufacturer profile |
| Arcade fixed frequency 15 KHz |
arcade_15, arcade_15ex
|
Arcade monitors locked to 15 KHz (Jamma cabinets, arcade displays) |
| Arcade fixed frequency 25/31 KHz |
arcade_25, arcade_31
|
Arcade monitors locked to 25 KHz or 31 KHz |
| Arcade multisync 15/25/31 KHz |
arcade_15_25, arcade_15_31, arcade_15_25_31
|
Arcade monitors that support multiple frequencies (flexible) |
| VESA GTF |
vesa_480, vesa_600, vesa_768, vesa_1024
|
PC GTF (General Timing Formula) compliant monitors |
| PC monitor 120 Hz |
pc_31_120, pc_70_120
|
High-refresh PC monitors (rare in retro setups) |
| Hantarex |
h9110, polo, pstar
|
Hantarex-brand arcade monitors |
| Wells Gardner |
k7000, k7131, d9200, d9400, d9800
|
Wells Gardner arcade monitor models |
| Makvision | m2929 |
Makvision arcade monitors |
| Wei-Ya | m3129 |
Wei-Ya arcade monitors |
| Nanao |
ms2930, ms929
|
Nanao arcade monitor models (common in arcades) |
| Rodotron | r666b |
Rodotron arcade monitors |
1. If you know your monitor's brand/model:
- Find your monitor in the list (e.g.,
ms929for Nanao,k7000for Wells Gardner) - Select that profile number
2. If you have a generic consumer CRT (home arcade, jamma cab, or unmarked):
- Look for a 15 KHz frequency marking on the monitor's rear panel
- If marked
15 KHz: Usearcade_15(most common) - If marked
31 KHz: Usegeneric_15or a VESA profile - If you can't find markings: Start with
arcade_15(safest default for most arcade setups)
3. If you have a multisync arcade monitor (supports multiple frequencies):
- Use
arcade_15_25,arcade_15_31, orarcade_15_25_31depending on which frequencies your monitor supports - If unsure, start with
arcade_15(most emulators default to 15 KHz)
4. If you have a PC/VESA monitor:
- Use one of the VESA profiles:
vesa_480,vesa_600,vesa_768, orvesa_1024 - VESA profiles support higher resolutions (800×600+) typical of PC monitors
| Profile | Use Case |
|---|---|
| generic_15 | Basic 15 KHz CRT; works with most arcade games and consoles |
| ntsc | 15 KHz optimized for NTSC (North American) color timing |
| pal | 15 KHz optimized for PAL (European) color timing |
Choose ntsc if you're in North America or have an NTSC-aligned CRT; choose pal if you're in Europe or have a PAL CRT; otherwise use generic_15.
| Profile | Frequency | Use Case |
|---|---|---|
| arcade_15 | 15 KHz only | Standard arcade cabinet; most compatible |
| arcade_15ex | 15 KHz (extended) | Extended 15 KHz variant for specific hardware |
| arcade_25 | 25 KHz only | Some arcade monitors (less common) |
| arcade_31 | 31 KHz only | Some arcade monitors (less common) |
Most arcade enthusiasts use arcade_15 because it's the most common arcade frequency.
| Profile | Frequencies | Use Case |
|---|---|---|
| arcade_15_25 | 15 KHz + 25 KHz | Flexible arcade monitor |
| arcade_15_31 | 15 KHz + 31 KHz | Flexible arcade monitor |
| arcade_15_25_31 | 15 KHz + 25 KHz + 31 KHz | Most flexible; supports all common frequencies |
If your monitor is multisync, choose the profile that matches its supported frequencies. If unsure, start with arcade_15 (defaults to 15 KHz).
| Manufacturer | Profiles | Notes |
|---|---|---|
| Nanao |
ms2930, ms929
|
Popular in arcade communities; very reliable |
| Wells Gardner |
k7000, k7131, d9200, d9400, d9800
|
Professional arcade monitors; widely used |
| Hantarex |
h9110, polo, pstar
|
European arcade monitors |
| Makvision | m2929 |
Soviet-era arcade monitors (rare) |
| Wei-Ya | m3129 |
Soviet-era arcade monitors (rare) |
| Rodotron | r666b |
Specialized arcade monitor (uncommon) |
If you have a manufacturer-specific monitor, use the matching profile for best compatibility.
Once you select a monitor profile, the script:
- Loads that profile's timing standards from the Switchres database
- Uses those timings to generate a list of available EDID resolutions (next step)
- Only resolutions that are safe for your chosen profile will appear in Step 3
The profile determines which resolutions are available—different profiles support different resolution options.
Tip
If you're unsure which profile to use, start with arcade_15. It's the most universal 15 KHz profile and works with the vast majority of arcade monitors and setups. You can always rerun the script later if you find a better match.
When the script asks: "Make your choice for the EDID Resolution"
The script presents a list of predefined resolution options that match common CRT display types. These resolutions determine:
- The horizontal and vertical pixel count
- The refresh rate (Hz)
- Whether the signal is interlaced (i) or progressive (p)
This is NOT a freeform text entry—you must pick from the numbered list provided.
Resolutions are shown as: HORIZONTALxVERTICAL@REFRESHRATE Hz
Example: 640x480@60Hz means:
- 640 = horizontal pixels (width)
- 480 = vertical pixels (height)
- 60Hz = refresh rate (60 times per second)
| Resolution | Refresh Rate | Aspect | Use Case |
|---|---|---|---|
| 640×480 | 60Hz | 4:3 | Most compatible; standard arcade |
| 768×576 | 50Hz | 4:3 | PAL region arcade; higher horizontal pixels |
| Resolution | Refresh Rate | Aspect | Use Case |
|---|---|---|---|
| 640×480 | 60Hz | 4:3 | Standard PC VGA mode |
| 800×600 | 60Hz | 4:3 | Higher resolution VGA |
- Start with 640×480 @ 60Hz — most compatible across emulators and games
- Use 768×576 @ 50Hz if you have a PAL-compatible display or want more horizontal pixel detail
- For 31kHz monitors, choose 640×480 or 800×600
Important
240p is NOT supported as a boot/Emulation Station resolution. The script automatically disables all 240p options because Batocera themes do not have official support for 240p vertical display. 240p can only be used for in-game resolution switching via Switchres, not for boot or EmulationStation UI.
Current Batocera themes officially support:
- 640×480 ✅ (best support)
- 768×576 ✅ (good support)
240p boot/ES is not supported and cannot be used.
When the script asks: "Make your choice for the sens of your rotation screen"
Some CRTs can be physically rotated. This setting tells Batocera and emulators how your monitor is oriented and how to handle vertical games.
| Option | Physical Setup | Aspect Ratio | Use Case |
|---|---|---|---|
| None (Default) | Landscape (wider than tall) | 4:3 | Standard horizontal setup; 99% of users |
| Clockwise (90°) | Portrait (taller than wide), rotated clockwise | Vertical (rotated) | Vertical arcade cabinets |
| Counter-Clockwise (270°) | Portrait (taller than wide), rotated counter-clockwise | Vertical (rotated) | Vertical arcade cabinets (alternate) |
The script maps your choice to EmulationStation orientation settings:
| Your Choice | ES Orientation | Degrees | Use For |
|---|---|---|---|
| None | NORMAL | 0° | Horizontal games on horizontal screen |
| Clockwise | TATE270 | 270° / -90° | Vertical games (rotated clockwise) |
| Counter-Clockwise | TATE90 | 90° | Vertical games (rotated counter-clockwise) |
- If your CRT is in landscape (wider than tall): Choose None
- If your CRT is in portrait (taller than wide): Choose Clockwise or Counter-Clockwise depending on which direction matches your physical setup
- If unsure: Start with None — this is the default
Different emulators handle rotation differently:
| Emulator | Horizontal Games | Vertical Games | Notes |
|---|---|---|---|
| MAME (GroovyMAME) | ✅ Works | ✅ Works | Automatically detects and rotates vertical games |
| FBNeo | ✅ Works | Manual rotation needed for some vertical games | |
| Libretro cores | ✅ Works | Some TATE modes may have issues | |
| Standalone emulators | ✅ Works | Horizontal on rotated screens works; vertical may have bugs | |
| Future Pinball | ✅ Works | ✅ Works | Works correctly in both orientations |
Note
Default behavior: By default, emulators run in horizontal mode (no rotation). Only MAME/GroovyMAME automatically detects vertical games and rotates them. For other emulators, you may need to manually configure rotation per game or system.
Warning
Advanced configuration options should ONLY be used if you:
- Understand technical GPU concepts like pixel clock, dotclock, and modelines
- Are experiencing specific hardware compatibility issues
- Have consulted CRT community resources or support for guidance
Incorrect settings can result in: black screens, unstable video modes, or hardware detection issues. If unsure, always press ENTER to skip and use defaults. Defaults work for 99% of users.
When the script asks: "Do you want to enter the advanced configuration menu?"
Advanced configuration is for experienced users who need to fine-tune hardware-specific settings. Press ENTER to skip and use defaults (recommended for most users).
What it is: The lowest pixel clock (MHz) your GPU can use when generating video modes.
Default behavior (0 MHz): Works for almost all users. AMD and modern NVIDIA (Maxwell and newer) GPUs support 0 MHz by design.
When to adjust:
- You're experiencing black screen on launch in specific emulators (NES, PC Engine, etc.)
- You have an older NVIDIA GPU that needs a higher minimum
- You know your hardware's specific limitations
Dotclock Options:
| Option | Value | Use Case |
|---|---|---|
| Low | 0 MHz | Default; recommended for most users |
| Mild | 6 MHz | Older hardware compatibility |
| Medium | 12 MHz | GPU stability issues |
| High | 25 MHz | Very old/restricted GPUs |
| CUSTOM | 0–25 MHz | Enter your own value if known |
What it is: A separate minimum dotclock setting specifically for MAME/GroovyMAME emulator.
When this appears: Only if you configured a specific monitor profile for MAME during installation.
Default behavior: Uses the same dotclock as your main monitor (press ENTER to keep it).
What it is: Fine-tuning for how the script handles interlaced video signals.
Default behavior (unchecked): Recommended; uses Switchres defaults.
When to enable:
- You're experiencing display stability issues with interlaced resolutions
- You have specific CRT compatibility needs
- Advanced troubleshooting for vertical arcade cabinets
What it is: Direct control over Switchres modeline generation parameters.
Default behavior: Uses Switchres recommended settings.
When to use: Only if directed by CRT community experts or troubleshooting guides.
When the script asks: "Configure the resolution for calibrating your GunCon2 lightgun"
If you have a GunCon2 lightgun (arcade light gun controller), this step lets you set the calibration resolution for the lightgun only. This resolution is used only for GunCon2 calibration scripts and has NO effect on your boot or Emulation Station resolution.
Important
GunCon2 calibration resolution is completely separate from your main boot resolution. Changing this does NOT affect your boot/ES display at all. Your boot resolution remains whatever you chose in Step 2 (640×480 or 768×576).
Press ENTER to use: 320×240 @ 60Hz
Works best for:
- AMD/ATI GPUs
- NVIDIA Maxwell and newer GPUs
- Most standard setups
When to use: Default choice. Calibration accuracy is best at 320×240p for lightgun use.
Choose YES to:
- Test alternative resolutions (640×480, 768×576, etc.)
- Troubleshoot calibration issues on specific hardware
- Optimize for your GPU's dotclock settings
If you choose custom:
- Enter horizontal resolution (e.g., 640)
- Enter vertical resolution (e.g., 480)
- Enter refresh rate (e.g., 60)
| GPU Type | Recommended Resolution | Why |
|---|---|---|
| AMD/ATI | 320×240 @ 60Hz | Calibration standard; best accuracy |
| NVIDIA (Maxwell+) | 320×240 @ 60Hz | Calibration standard; best accuracy |
| Older NVIDIA (dotclock_min=25 MHz) | 640×480 @ 60Hz | May be required for compatibility |
After the script completes, you'll have:
-
GunCon2_Calibration.sh— calibration script in/crt/folder - GunCon2 shader & plugin files installed for GroovyMAME
- udev rules for lightgun device detection
You can recalibrate at any time by running:
/userdata/system/scripts/1_GunCon2.shOnce you've completed the configuration steps (output, resolution, rotation, and optionally advanced settings & GunCon2), the script will:
- Generate an EDID (monitor firmware) for your CRT using Switchres
- Create modelines for safe CRT output
- Configure system settings for your chosen output and resolution
- Prompt you to reboot to apply all changes
On first boot after rebooting:
- Emulation Station should appear on your CRT in your chosen resolution
- The UI should be readable and properly sized
- All menus should respond to controller input
- Go to MAIN MENU > SYSTEM SETTINGS > HARDWARE to verify VIDEO OUTPUT and VIDEO MODE are set correctly
If you see:
- Black screen: See troubleshooting in main Batocera v43 CRT Script Installation Guide ‐ Wired Or Wireless Connection guide
- Stretched/distorted image: Your resolution may not match your CRT's native capability
- Wrong rotation: Go back through the script or run it again to select a different rotation
You can rerun the CRT Script at any time to change these settings:
/userdata/system/Batocera-CRT-Script/Batocera_ALLINONE/./Batocera-CRT-Script-v43.shWhen you rerun it, you can:
- Select a different output port
- Choose a different EDID resolution
- Adjust rotation
- Reconfigure everything from scratch
After rerunning and making selections, reboot to apply changes.
→ Rerun the script and select the correct port. The configuration will update automatically.
→ Your EDID resolution may not match your CRT's native display size. Try a different resolution from the list.
→ Your CRT's underscan may be set too aggressively. This is typically a hardware setting on your CRT monitor (look for Size, Position, Overscan buttons on the monitor itself).
→ Alternative: Try a higher resolution if available (e.g., 768×576 instead of 640×480).
→ You may be using too low a resolution. Switch to 768×576 @ 50Hz for more screen real estate and better readability.
→ Note: 240p is not supported for boot/Emulation Station.
→ Rerun the script and select the new port number. The configuration will update automatically.
→ Start with 640×480 @ 60Hz — it's the most compatible and well-supported across all games and emulators. It also has the best Batocera theme support.
→ If games look cramped or you want more detail, try 768×576 @ 50Hz next.
→ Unless you have a physically rotated CRT (portrait orientation), choose None.
→ If you do have a portrait CRT, test with Clockwise first. If it looks wrong, rerun the script and try Counter-Clockwise.
v43 includes these interactive configuration steps:
- ✅ Output Selection — Choose your CRT output port
- ✅ Monitor Profile Selection — Select your CRT type (arcade_15, ms929, etc.)
- ✅ EDID Resolution Selection — Pick from predefined CRT-safe resolutions
- ✅ Monitor Rotation — None, Clockwise, or Counter-Clockwise
- ❓ Advanced Configuration — Optional; skip for defaults
- ❓ GunCon2 Calibration — Optional; only if you have a lightgun
Differences from v42:
- v43 uses EDID resolution selection (numbered list) instead of freeform text entry
- v43 includes Advanced Configuration menu for dotclock and Switchres tuning
- v43 includes GunCon2 calibration setup (not in v42)
- v43 automatically disables 240p boot resolutions due to lack of official Emulation Station theme support
- v43 features improved hardware detection for AMD Sea Islands GPUs and other chipsets
- Return to Batocera v43 CRT Script Installation Guide ‐ Wired Or Wireless Connection to continue with installation
- For hardware-specific questions, see HowTo_Handheld_Devices.md
- For adapter chain details, see HowTo_Handheld_Devices.md
- Report configuration issues to Discord: ##crt-x86_64