mame.app

CRT-Shader und Scanlines in MAME einstellen

Bild & Tuning 10. Februar 2026 · 6 Min. Lesezeit

CRT-Shader und Scanlines in MAME einstellen KI-generiert

Kurz gesagt

Über das BGFX- oder HLSL-Backend aktivierst du in MAME CRT-Shader mit Scanlines, Maske und Krümmung, die auf höher auflösenden Displays deutlich besser wirken.

Inhalt
  1. Warum das Standardbild flach wirkt
  2. BGFX, HLSL, D3D und OpenGL im Überblick
  3. CRT-Shader per BGFX aktivieren
  4. Scanlines, Maske und Krümmung justieren
  5. HLSL als Alternative feinjustieren
  6. Leistungskosten und 4K-Empfehlung
  7. Pro-Spiel-Presets speichern

Ein Original-Automat mit Pac-Man oder Street Fighter II sah nie so aus wie das flache Bild, das MAME dir per Default auf den Monitor wirft. Auf einer Röhre verschmolzen die Pixel, Scanlines gaben dem Bild Tiefe, und die Lochmaske streute jede Farbe leicht in ihre drei Subpixel. Dein LCD zeigt stattdessen ein hartes, gleichmäßiges Raster. Ein CRT-Shader baut diesen Look nach, und MAME bringt dafür gleich zwei Systeme mit: BGFX und HLSL.

Warum das Standardbild flach wirkt

Ein LCD leuchtet jeden Pixel gleichmäßig aus. Es gibt keine dunklen Lücken zwischen den Bildzeilen, keine RGB-Phosphortriaden, kein Nachglühen an hellen Kanten. MAME skaliert im Auslieferungszustand das niedrig aufgelöste Originalbild (bei Pac-Man etwa 224 mal 288 Pixel) einfach per Nearest-Neighbor hoch. Aus jedem Quellpixel wird ein großer, gleichförmiger Block.

Eine echte Röhre erzeugte den Eindruck von Schärfe und Tiefe durch mehrere Effekte gleichzeitig: sichtbare horizontale Scanlines, die Schattenmaske oder Streifenmaske vor den Phosphoren, ein leichtes Halation-Leuchten und eine minimale Wölbung der Glasscheibe. Ein guter Shader rechnet genau diese vier Dinge zurück ins Bild. Der wichtigste Punkt vorweg: Maske und Scanlines brauchen viele Ausgabepixel pro Quellpixel, sonst kann der Shader sie gar nicht sauber zeichnen. Deshalb entscheidet deine Displayauflösung mehr über das Ergebnis als jeder einzelne Regler.

BGFX, HLSL, D3D und OpenGL im Überblick

Welches Backend MAME zum Zeichnen nutzt, steuerst du in der mame.ini über die Option video. Die vier relevanten Werte:

  • bgfx: der moderne, plattformübergreifende Renderer. Läuft unter Windows, macOS und Linux und arbeitet mit sogenannten Shader-Chains. Für neue Setups die erste Wahl.
  • d3d: der klassische Direct3D-9-Pfad. Nur unter Windows, aber der einzige, der die originalen HLSL-Shader ausführt.
  • opengl: der OpenGL-Renderer, technisch fähig zu GLSL-Effekten, aber weniger gepflegt und ohne die fertigen Chains von BGFX.
  • gdi oder soft: reine Notlösungen ohne Shader-Unterstützung.

Wichtig gegen ein verbreitetes Missverständnis: BGFX bringt selbst eine Chain namens hlsl mit, die den HLSL-Look nachbildet. Du brauchst den Direct3D-Pfad also nicht zwingend, um ein HLSL-artiges Bild zu bekommen. In der Praxis liefern BGFX mit crt-geom-deluxe und HLSL mit voller Maske ein fast identisches Ergebnis. HLSL ist der ältere, extrem tweakbare Weg, BGFX der aktuelle und plattformoffene.

CRT-Shader per BGFX aktivieren

Falls du noch keine Konfigurationsdatei hast, erzeugst du sie einmalig mit mame -createconfig. Das legt die mame.ini an. Öffne sie und setze:

video              bgfx
bgfx_backend       auto
bgfx_screen_chains crt-geom-deluxe

Für bgfx_screen_chains kennt MAME unter anderem default, unfiltered, crt-geom, crt-geom-deluxe, hlsl und lcd. crt-geom (ursprünglich der CRT-Geom-Shader von cgwg) ist die leichte Variante und läuft schon auf 1080p ordentlich. crt-geom-deluxe legt eine echte Maske, Halation und Scanline-Bloom obendrauf und will dafür deutlich mehr Bildpunkte, also idealerweise 1440p oder 4K.

Die Maskentextur steuerst du über bgfx_shadow_mask (Standard ist slot-mask.png im bgfx-Ordner). Starte danach ein Spiel. Zum Feinjustieren öffnest du mit der Tab-Taste das MAME-Menü und gehst in die Slider Controls. Dort schiebst du die CRT-Parameter live, während das Bild läuft. Die Chain selbst wechselst du dagegen in der mame.ini und startest neu.

Scanlines, Maske und Krümmung justieren

Drei Regler entscheiden über Erfolg oder Matsch, und sie hängen zusammen:

  • Scanline-Stärke: Wie dunkel die Lücken zwischen den Zeilen werden. Zu stark, und das Bild wird düster; zu schwach, und man sieht keinen Effekt. Bleib moderat.
  • Maske: Das RGB-Muster vor den Phosphoren. Genau dieser Teil frisst Auflösung. Auf 1080p sind die Maskenzellen zu grob, das Bild wirkt dunkel und unruhig, also nimmst du die Maskenstärke zurück oder eine einfachere Maske. Auf 4K zeichnet sie sich sauber durch.
  • Krümmung: Tonnenverzerrung plus abgerundete Ecken und Vignette. Ein kleiner Hauch wirkt authentisch, zu viel schadet der Lesbarkeit und erzeugt Skalierungsartefakte an den Rändern.

Weil Maske und Scanlines Licht schlucken, hebst du Helligkeit oder Gamma leicht an, damit das Bild nicht abgesoffen aussieht. crt-geom-deluxe gleicht einen Teil davon über sein Halation-Leuchten aus, das helle Flächen wieder aufhellt. Eine knappe Checkliste für den Alltag:

  • Vollbild und native Displayauflösung nutzen
  • Bilineare Vorfilterung aus (filter 0), die Glättung übernimmt der Shader
  • Scanline-Stärke moderat halten, sonst wird das Bild zu dunkel
  • Maskenstärke an die Auflösung anpassen, auf 1080p zurückhaltend bleiben
  • Helligkeit oder Gamma leicht anheben, um die Abdunklung auszugleichen
  • Krümmung sparsam einsetzen oder ganz weglassen

HLSL als Alternative feinjustieren

Unter Windows lohnt sich der klassische HLSL-Weg, wenn du jeden Parameter selbst in der Hand haben willst. Er braucht den Direct3D-Pfad:

video       d3d
hlsl_enable 1

HLSL liest seine Einstellungen aus der mame.ini. Die Scanline-Gruppe umfasst unter anderem scanline_alpha, scanline_scale, scanline_height und scanline_bright_scale. Die Maske steuerst du über shadow_mask_alpha, shadow_mask_texture (Standardvorlage ist shadow-mask.png) sowie shadow_mask_x_count und shadow_mask_y_count. Für die Geometrie gibt es distortion und cubic_distortion, dazu round_corner, vignetting und reflection.

Die genauen Optionsnamen unterscheiden sich zwischen den MAME-Versionen. Verlass dich deshalb nicht auf Anleitungen aus dem Netz, sondern auf die frisch mit mame -createconfig erzeugte mame.ini, denn die enthält exakt die Namen deiner Version. Live tunen kannst du auch hier über die Slider Controls im Tab-Menü, die für HLSL Dutzende Regler anbieten. Den vollständigen Parametersatz beschreibt die offizielle MAME-Dokumentation.

Leistungskosten und 4K-Empfehlung

Die Emulation der alten Arcade-Hardware selbst kostet kaum Rechenzeit, die Titel sind niedrig aufgelöst. Teuer wird der Shader. crt-geom ist leichtgewichtig und läuft auf praktisch jeder GPU. crt-geom-deluxe und HLSL mit voller Maske plus Bloom belasten die Grafikkarte spürbar, vor allem in 4K.

Der Grund, warum sich der Sprung auf eine hohe Auflösung lohnt: Erst mit ungefähr drei bis vier Ausgabepixeln pro Quellpixel hat die Maske genug Platz, um echte RGB-Triaden und dünne Scanlines zu zeichnen, ohne das Bild dabei abzudunkeln. Auf 4K greift das sauber, auf 1080p bleibst du besser bei crt-geom oder einer schwächeren Maske. In HLSL hilft zusätzlich die Option prescale, die intern in höherer Auflösung rendert.

Achte darauf, dass die Skalierung gerade aufgeht, sonst wandern die Scanlines ungleichmäßig über das Bild. Wie du das sauber einstellst, steht im Guide zu Seitenverhältnis und Integer-Scaling. Ein CRT-Shader kostet übrigens nur GPU-Zeit, keinen zusätzlichen spürbaren Verzögerungspuffer. Wenn du parallel die Reaktionszeit optimieren willst, etwa mit GroovyMAME und Frame-Delay, hilft der Guide zu Input-Lag reduzieren.

Pro-Spiel-Presets speichern

Ein und dasselbe Preset passt selten für alle Spiele. Vertikale Titel wie Pac-Man wollen eine andere Masken- und Scanline-Ausrichtung als horizontale Beat-em-ups, und Vektorspiele wie Asteroids sollten gar keine Lochmaske bekommen, sondern höchstens ein sanftes Glühen. MAME löst das über gestaffelte INI-Dateien im ini-Ordner.

Du kannst dort spielspezifische Dateien wie pacman.ini ablegen, aber auch Klassen-Dateien, die MAME automatisch passend lädt: vertical.ini und horizont.ini für die Bildschirmlage, dazu raster.ini, vector.ini und lcd.ini für die Anzeigeart. Ein vertikales Spiel zieht sich seine Werte selbstständig aus vertical.ini, ein Vektorspiel aus vector.ini. So richtest du deinen CRT-Look einmal pro Geräteklasse ein, statt ihn für jedes einzelne Spiel neu zu setzen. Wie diese Staffelung und die Pfade genau funktionieren, erklärt der Guide zu mame.ini einstellen.

Fang mit crt-geom und moderaten Werten an, prüfe das Bild an einem hellen Titel wie einem Shmup und an dunklen Szenen, und schraub die Maske erst hoch, wenn deine Auflösung sie trägt. Dann sitzt der Röhren-Look, ohne dass du in jeder Session nachjustieren musst.

MAMECRT-ShaderBGFXHLSLScanlines

mame.app ist unabhängig und erhält für Empfehlungen kein Geld. Angaben zum Recht sind eine allgemeine Einordnung, keine Rechtsberatung. Software und Rechtslage können sich ändern.


Passende Guides