Skip to content

How to CRT Script Configuration

NTG edited this page May 31, 2026 · 5 revisions

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.


Step 1: Select Your CRT Output Port

When the script asks: "Enter the number of the output you like to use for CRT output"

What This Means

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.

Common Output Names

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

How to Choose

  1. If you already have your CRT plugged in: Select the output where your CRT cable is connected
  2. If you're using a temporary display (HDMI/DVI-D): Select the output where your CRT will be connected after installation
  3. If unsure which port is which: You can physically trace cables from the GPU to each monitor
  4. 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.

What Happens After Selection

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.


Step 2: Select Your Monitor Profile

When the script asks: "Make your choice for monitor type"

What This Means

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.

Understanding Monitor Profile Categories

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

How to Choose Your Monitor Profile

Consumer CRTs and BVM/PVMs — recommended testing order:

If you have a consumer CRT, broadcast monitor (BVM/PVM), or unmarked display and aren't sure which profile fits, try profiles in this order:

  1. arcade_15 — try this first
  2. generic_15 — if arcade_15 doesn't look right
  3. ntsc — if still not correct
  4. pal — only if your CRT is limited to PAL modes (very rare)

Tip

Most users find arcade_15 works on the first try. Only move down the list if you have display issues.

1. If you know your monitor's brand/model:

  • Find your monitor in the list (e.g., ms929 for Nanao, k7000 for Wells Gardner)
  • Select that profile number

2. If you have a generic consumer CRT (home arcade, jamma cab, or unmarked):

  • Use the testing order above: arcade_15generic_15ntscpal

3. If you have a multisync arcade monitor (supports multiple frequencies):

  • Use arcade_15_25, arcade_15_31, or arcade_15_25_31 depending 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, or vesa_1024
  • VESA profiles support higher resolutions (800×600+) typical of PC monitors

Profile Descriptions

Generic 15 KHz Profiles

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.

Arcade Fixed Frequency Profiles

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.

Multisync Arcade Profiles

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-Specific Profiles

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.

What Happens After Selection

Once you select a monitor profile, the script:

  1. Loads that profile's timing standards from the Switchres database
  2. Uses those timings to generate a list of available EDID resolutions (next step)
  3. 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.


Step 3: Select Your CRT Resolution (EDID Resolution)

When the script asks: "Make your choice for the EDID Resolution"

What This Means

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.

Understanding the Resolution Format

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)

Common v43 EDID Resolutions

15kHz CRTs (Arcade/Consumer Arcade-Style Displays)

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

31kHz CRTs (PC/VGA Monitors)

Resolution Refresh Rate Aspect Use Case
640×480 60Hz 4:3 Standard PC VGA mode
800×600 60Hz 4:3 Higher resolution VGA

How to Choose

  1. Start with 640×480 @ 60Hz — most compatible across emulators and games
  2. Use 768×576 @ 50Hz if you have a PAL-compatible display or want more horizontal pixel detail
  3. 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.

Theme Support

Current Batocera themes officially support:

  • 640×480 ✅ (best support)
  • 768×576 ✅ (good support)

240p boot/ES is not supported and cannot be used.


Step 4: Select Your Monitor Rotation

When the script asks: "Make your choice for the sens of your rotation screen"

What This Means

Some CRTs can be physically rotated. This setting tells Batocera and emulators how your monitor is oriented and how to handle vertical games.

Rotation Options

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)

Emulation Station Orientation Names

The script maps your choice to EmulationStation orientation settings:

Your Choice ES Orientation Degrees Use For
None NORMAL Horizontal games on horizontal screen
Clockwise TATE270 270° / -90° Vertical games (rotated clockwise)
Counter-Clockwise TATE90 90° Vertical games (rotated counter-clockwise)

How to Choose

  1. If your CRT is in landscape (wider than tall): Choose None
  2. If your CRT is in portrait (taller than wide): Choose Clockwise or Counter-Clockwise depending on which direction matches your physical setup
  3. If unsure: Start with None — this is the default

Important Emulator Notes

Different emulators handle rotation differently:

Emulator Horizontal Games Vertical Games Notes
MAME (GroovyMAME) ✅ Works ✅ Works Automatically detects and rotates vertical games
FBNeo ✅ Works ⚠️ Varies Manual rotation needed for some vertical games
Libretro cores ✅ Works ⚠️ Limited Some TATE modes may have issues
Standalone emulators ✅ Works ⚠️ Limited 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.


Step 5: Advanced Configuration (Optional)

Warning

⚠️ AT YOUR OWN RISK

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?"

What This Means

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

Advanced Options Breakdown

1/3: Minimum Dotclock Configuration

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

1b/3: MAME Monitor Dotclock (Optional)

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

2/3: Interlace Force Even Configuration

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

3/3: Switchres Advanced Options

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.


Step 6: GunCon2 Lightgun Calibration (Optional - Lightgun Users Only)

When the script asks: "Configure the resolution for calibrating your GunCon2 lightgun"

What This Means

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.

GunCon2 Configuration Options

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 3 (640×480 or 768×576).

Default Calibration (Recommended)

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.

Custom Calibration (Experimental)

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:

  1. Enter horizontal resolution (e.g., 640)
  2. Enter vertical resolution (e.g., 480)
  3. Enter refresh rate (e.g., 60)

Common GunCon2 Resolutions

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

GunCon2 Setup & Configuration

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

After Configuration: What Happens Next

Once you've completed the configuration steps (output, resolution, rotation, and optionally advanced settings & GunCon2), the script will:

  1. Generate an EDID (monitor firmware) for your CRT using Switchres
  2. Create modelines for safe CRT output
  3. Configure system settings for your chosen output and resolution
  4. Prompt you to reboot to apply all changes

First Boot After Installation

On first boot after rebooting:

  1. Emulation Station should appear on your CRT in your chosen resolution
  2. The UI should be readable and properly sized
  3. All menus should respond to controller input
  4. Go to MAIN MENU > SYSTEM SETTINGS > HARDWARE to verify VIDEO OUTPUT and VIDEO MODE are set correctly (the script sets these automatically; you should not need to configure them manually)

If you see:

  • Black screen: See troubleshooting in X11 Exclusive Installation or Dual-Boot Installation
  • 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

Changing Configuration Later

You can rerun the CRT Script at any time to change these settings:

/userdata/system/Batocera-CRT-Script/Batocera_ALLINONE/./Batocera-CRT-Script-v43.sh

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


Troubleshooting Configuration Choices

"I selected the wrong output port"

→ Rerun the script and select the correct port. The configuration will update automatically.

"My CRT shows the correct image, but it looks stretched or oversized"

→ Your EDID resolution may not match your CRT's native display size. Try a different resolution from the list.

"The image is too small or takes up only part of the screen"

→ 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).

"Text is hard to read; everything is cramped"

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

"I moved my CRT to a different port and now it's black screen"

→ Rerun the script and select the new port number. The configuration will update automatically.

"I'm not sure which resolution I actually need"

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.

"I want to rotate my games but I'm not sure which rotation option to pick"

→ 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 Configuration Steps Summary

v43 includes these interactive configuration steps:

  1. Output Selection — Choose your CRT output port
  2. Monitor Profile Selection — Select your CRT type (arcade_15, ms929, etc.)
  3. EDID Resolution Selection — Pick from predefined CRT-safe resolutions
  4. Monitor Rotation — None, Clockwise, or Counter-Clockwise
  5. Advanced Configuration — Optional; skip for defaults
  6. GunCon2 Calibration — Optional; only if you have a lightgun

v43-Specific Notes

What changed from v42:

  • v43 automatically disables 240p boot resolutions due to lack of official Emulation Station theme support
  • v43 automatically sets VIDEO OUTPUT and VIDEO MODE during installation, so you no longer need the manual post-installation steps that were required in v42 (verify only)

Clone this wiki locally