XMAME/XMESS DOKUMENTATION: Xmame häufig gestellte Fragen

Weiter Zurück Inhalt

## 3. XMame häufig gestellte Fragen (FAQ)

## 3.1 Was ist Mame?

Mame ist ein Emulator für die Arcade-Maschinen aus den Spielhallen. Nicola Salmoria begann 1997 mit Mame. Es entstand aus einer ganzen Reihe Emulatoren, die für jeweils nur ein Spiel geschrieben worden waren. Diese Einzelemulatoren wurden kombiniert zu einem "Multispiele Emulator". Dies ist die aktuelle Form von Mame, kein Projekt eines Einzelnen, sondern es arbeiten über 100 Personen daran.
Mame wurde geschaffen von Nicola Salmoria.

Siehe auch das offizielle Mame Readme (readme.mame)

## 3.2 Was ist Mess?

Mess ist, wie Mame, ein Emulator für virtuelle Maschinen. Im Unterschied zu Mame emuliert Mess Computer und Konsolen.
Sieh auch das offizielle Mess Readme (readme.mess)

## 3.3 Was sind XMame/XMess?

Xmame/Xmess sind die Unix/X11-Portierungen des Mame- und Messprojektes. Somit sind Mame/Mess verfügbar auf *ix-Maschinen, die XWindows X11R6 unterstützen (ebenfalls SVGAlib/ggi/XF86-DGA/OpenGL/SDL).
Die erste Mame-Konvertierung stammt von Allard Van Der Bas, Dick the Ridder, Juan Antonio Marmnez und Hans de Goede..
XMame/XMess wird zur Zeit gepflegt von Lawrence Gold.

## 3.4 Was sind die Unterschiede zwischen Mame/Mess and XMame/XMess?

Keine wesentlichen.

Xmame/Xmess basieren auf dem Sourcecode von Mame/Mess. Aus technischen Gründen, die den Rahmen dieses Dokuments sprengen würden, kann der Mame/Mess-Sourcecode nicht unter Unix übersetzt werden. Deshalb existiert das Xmame/Xmess-Projekt. Jedes mal, wenn Mame/Mess upgedatet wird, wird das Coding unter Unix getestet (und gepatched, falls dies nötig ist). Somit sind die Xmame-/Xmess-Releases immer auf dem selben Stand, wie die Originale.
Es existieren keinerlei Pläne für eine unabhängige Entwicklung von Xmame/Xmess.

## 3.5 Welche Hardware und welche Betriebssysteme werden unterstützt ?

XMame läuft auf Low-End und auf High-End CPU's, benutzt aligned Integer-Zugriff wenn nötig und ist auch compatibel mit 64-bit CPU's. Die aktuelle Liste der unterstützten CPU's im Makefile ist:

- i386 + gnu-asm
- i386 no asm
- Alpha
- ia64 (merced)
- m68k
- generic risc (PowerPC, Sparc, HPPA, IBM)
- generic risc, lsb-first (RISC (Ultrix Maschinen))
- mips (generic risc + SGI compiler bug workarounds)

Das Hinzufügen von Unterstützung anderer CPU's (falls nötig) sollte einfach sein.
Die folgenden Unix-Plattformen werden im Speziellen unterstützt:

- Linux
- FreeBSD
- NetBSD
- Solaris (SunOS)
- OpenStep (nur noasm auf i386)
- IRIX mit Sound bei Verwendung des dmedia Paketes oder des neuen al Paketes (Sound funktionert derzeit noch nicht)
- AIX (Sound funktioniert derzeit nicht)
- generic Unix, kein Sound

Der Eintrag "generic unix" sollte für jedes Standard Unix funktionieren, aber kein Sound, da derzeit kein einziger Standard für Sound unter Unix existiert.

Auf allen Plattformen wird nun zlib benötigt, weil die DOS-Version dies nun auch benutzt. Wenn Du die zlib nicht hast, dann kannst Du die mitgelieferte benutzen. Es müssen nur die betreffenden Zeilen im Makefile auskommentiert werden.
Die folgenden Anzeigearten werden unterstützt, wobei X11 als Einzige auf allen Plattformen läuft, ausser OpenStep, wo nur die OpenStep Bitmaps funktionieren:

- X11 (X-Window System)
- SVGAlib
- GGI (Generic Graphics Interface)
- OpenGL mit X11 für die Eingabe
- Glide mit X11 für die Eingabe (3DFX)
- Glide mit SVGAlib für die Eingabe (3DFX)
- OpenStep Bitmaps
- SDL (Simple Direct Medialayer)

Die folgenden Kombinationen aus Architektur/BS/Anzeige werden derzeit aktiv unterstützt. Bitte an den jeweils Zuständigen Mailen, wenn Probleme mit einer bestimmten Kombination aus Architektur/BS/Anzeige beim Übersetzten oder anderen Problemen auftreten. Eine Mail an Lawrence `gold@aros.net` bei allgemeinen Problemen (z.B. X11).

- i386/linux/x11 (+DGA) -> Lawrence `<gold@aros.net>`
- i386/linux/svgalib -> Lawrence `<gold@aros.net>`
- i386/linux/xgl -> Sven Goethel `<sgoethel@jausoft.com>`
- i386/linux/xfx -> Lawrence `<gold@aros.net>`
- i386/linux/svgafx -> Lawrence `<gold@aros.net>`
- i386/linux/ggi -> Christian `<cpg@aladdin.de>`
- alpha/linux/x11 -> Christian `<cpg@aladdin.de>`
- alpha/digital unix/x11 * -> Leandro `<ldardini@usl4.toscana.it>`
- powerpc/linux/x11 -> Andreas `<sid@skater.htu.tuwien.ac.at>`
- powerpc/linux/svgalib -> Andreas `<sid@skater.htu.tuwien.ac.at>`
- i386/freebsd/x11 -> Jacob A. Hart `<c9710216@studentmail.newcastle.edu.au>`
- i386/netbsd/x11 -> Dave `<dave@dtsp.co.nz>`
- alpha/netbsd/x11 -> Christian `<cpg@aladdin.de>`
- Sparc/Solaris/x11 -> Mathis `<rosenhau@mailserv.sm.go.dlr.de>`
- i386/Unixware7/x11 * -> Richard `<xmame@frogface.ddns.org>`
- i386/openstep -> Pete French `<pete@toybox.twisted.org.uk>`
- Sparc/SunOs -> Saga `<jolletx@cybercable.fr>`
- mips/irix/x11 -> Dingus Family `<ddingus@uswest.net>`

* Dies wird bei der Benutzung des Eintrages "generic unix" im Makefile unterstützt und bietet keinen Sound.

Wir suchen immer nach Leuten, die neue Kombinationen aus Architektur/BS/Anzeigeart testen und auch aufkommende Fragen dazu beantworten können. Dies kostet nicht viel Zeit und kann anderen Leute enorm weiterhelfen. Wenn Du Interesse hast, dann eine Mail an Lawrence `gold@aros.net`.

## 3.6 Mein Betriebssystem wird unterstützt, aber XMame/XMess bringen Fehler und brechen ab. Warum ?

Xmame/Xmess sollten laufen in einem 8bpp Pseudo-Farben-Display und in einem 16, 24 oder 32bpp True Color Display. Wenn der X-Server keine dieser "Displays" unterstützt, dann wird Xmame/Xmess auch nicht funktionieren.
Um herauszufinden, was der X-Server unterstützt, kann man das Tool xdpyinfo benutzen. Mehr Info auf der Manpage von xdpyinfo.

## 3.7 Wozu brauche ich die Dateien xmamerc/xmessrc ?

Ein Aufruf von Xmame/Xmess kann so aussehen:
xmame pacman -sound -nojoy -frameskip 2 -heightscale 3 \
-widthscale 2

Meist wird man die gleiche Einstellung für jedes Spiel nutzen. Xmame/Xmess liest diese Datei für die Grundeinstellungen der Parameter, die gesetzt werden können. Auf diese Weise müssen nur die Parameter beim Aufruf angegeben werden, die überschrieben werden sollen.
Ein anderer Grund für xmamerc/xmessrc ist die Umbelegung von Tasten. Einige Unix-Tastaturen weichen stark von PC-Tastaturen ab. Um dies abzufangen, kann man in xmamerc/xmessrc Tasten belegen/umbelegen, die auf Unix-Tastaturen nicht vorhanden sind.

## 3.8 Was ist die Syntax in den Dateien xmamerc/xmessrc ?

Die Syntax ist recht einfach:
"Schlüsselwort Wert"

Siehe auch in xmamerc.dist für die meisten der Schlüsselwörter. Fast alle Kommandozeilen-Optionen können als Schlüsselwörter (ohne das -) benutzt werden, benutze einfach den Wert 0 oder 1 für Kommandozeilen-Optionen, die als Gegenstück die verneinende Option (-no[option]) haben. Üblicherweise beginnen Kommentarzeilen mit einem "#".
Du kannst natürlich eine Konfigurationsdatei erstellen mit allen Einstellungen. Eine Vorlage kann erzeugt werden mit

       xmame -showconfig > ~/.xmame/xmamerc

## 3.9 Wo müssen roms, images, samples, highscores, configfiles, usw. hin?

### Roms/Samples

Xmame/Xmess suchen in einem durch ":" getrennten Pfad nach Roms/Samples/Artwork.

Der Defaultpfad ist XMAMEROOT und wird während des Compilierens gesetzt im Makefile.

Dieser Pfad kann durch einen beliebigen Pfad in xmamerc/xmessrc überschrieben werden. Dies kann wiederum durch die Kommandozeilen-Option -rompath überschrieben werden.
Xmame/Xmess durchsuchen jedes Verzeichnis in dieser Pfadangabe nach Roms/Samples auf folgende Weise:

        <dir>/spielname.zip              (enthält Dateiname.ext)
        <dir>/spielname/dateiname.ext
        <dir>/spielname/dateiname.ext.gz (enthält Dateiname.ext)
        <dir>/spielname/dateiname.zip    (enthält Dateiname.ext)

Ein Beispiel: es wird nach der Datei rom0001.1 gesucht, die ein Teil des Spiels Pacman ist. Xmame/Xmess suchen in jedem Verzeichnis des Suchpfades nach:

        <dir>/pacman.zip               (enthält rom0001.1)
        <dir>/pacman/rom0001.1
        <dir>/pacman/rom0001.1.gz      (enthält rom0001.1)
        <dir>/pacman/rom0001.zip       (enthält rom0001.1)

Bemerkung: Wenn Deine NeoGeo-Spiele die Datei neogeo.rom nicht finden, dann kopiere es in ein Verzeichnis namens neogeo im Suchpfad nach Roms oder packe es in die Datei neogeo.zip im Suchpfad nach Roms.

### Lesen/Schreiben von Disketten-Images

Diese Sektion betrifft nur XMess, dass das Lesen/Schreiben auf Disketten-Images unterstützt und dabei versucht das Image zum Lesen/Schreiben zu öffnen.

XMess sucht zuerst nach den Images mit dem Namen, der in der Kommandozeile eingegeben wurde:

        <path>/image.ext

Dabei ist path der Pfad zu dem Image. Auf diesem Weg können auch absolute und relative Dateinamen benutzt werden von der Kommandozeile aus, die nicht im Suchpfad nach Images sind.
Dann sucht XMess jedes Verzeichnis im Suchpfad für roms/samples auf folgende Art und Weise:

        <dir>/image.ext

Bemerkung: beim Lesen/Schreiben von Images darf das Image nicht gepackt sein.

### Rom Cartridges/Read Only Disketten Images

XMess beginnt die Suche nach Cartridges/Disketten vom aktuellen Verzeichnis aus folgendermaßen:

        <path>/image.ext
        <path>/image.ext.gz            (enthält image.ext)
        <path>/image.zip               (enthält image.ext)

Dabei ist path der Pfad zu dem Image. Auf diesem Weg können auch absolute und relative Dateinamen benutzt werden von der Kommandozeile aus, die nicht im Suchpfad sind.
Dann durchsucht XMess jedes Verzeichnis im Suchpfad für Cartridges/Images auf folgende Art und Weise:

        <dir>/image.ext
        <dir>/image.ext.gz             (enthält image.ext)
        <dir>/image.zip                (enthält image.ext)

Abschließend sucht XMess im Rompfad wie oben beschrieben mit dem Systemtyp nach dem Spielenamen.

Beispiel: Wir wollen mario.nes spielen mit der NES Emulation von XMess. Wir würden dann eintippen: "xmess nes mario.nes". XMess beginnt die Suche im aktuellen Verzeichnis nach

        mario.nes
        mario.nes.gz                   (enthält mario.nes)
        mario.zip                      (enthält mario.nes)

Danach sucht Xmess in jedem Verzeichnis Deines Rompfades nach

        <dir>/mario.nes
        <dir>/mario.nes.gz             (enthält mario.nes)
        <dir>/mario.zip                (enthält mario.nes)

Abschließend sucht XMess in jedem Verzeichnis Deines Rompfades nach

        <dir>/nes.zip                  (enthält mario.nes)
        <dir>/nes/mario.nes
        <dir>/nes/mario.nes.gz         (enthält mario.nes)
        <dir>/nes/mario.zip            (enthält mario.nes)

Da XMess zuerst im aktuellen Verzeichnis nach Cartridges/Disketten sucht, kann auch eine Cartridge/Diskette angegeben werden, die nicht im Rompfad ist. Beispielsweise:

        "xmess nes ../mario.nes"

XMess sucht nach

        ../mario.nes
        ../mario.nes.gz                (enthält mario.nes)
        ../mario.zip                   (enthält mario.nes)

und wird ebenfalls den gesamten Rompfad wie oben beschrieben nach ../mario.nes als Dateiname durchsuchen. Aber das ist nicht sonderlich hilfreich.

### Artwork

XMame/XMess durchsuchen jedes Verzeichnis im Rompfad nach Artwork auf folgende Art und Weise:

        <dir>/artwork.png
        <dir>/artwork.png.gz           (enthält artwork.png)
        <dir>/artwork.zip              (enthält artwork.png)

Dann suchen XMame/XMess im Rompfad wie bei Roms/Samples.

Beispiel: Wir wollen foo spielen, dass bar.png nutzt. XMame/XMess beginnen die Suche in jedem Verzeichnis des Rompfades nach

        <dir>/bar.png
        <dir>/bar.png.gz               (enthält bar.png)
        <dir>/bar.zip                  (enthält bar.png)

Danach suchen XMame/XMess in jedem Verzeichnis des Rompfades nach

        <dir>/foo.zip                  (enthält bar.png)
        <dir>/foo/bar.png
        <dir>/foo/bar.png.gz           (enthält bar.png)
        <dir>/foo/bar.zip              (enthält bar.png)

### XMame Configuration

Xmame sucht nach den folgenden Konfigurationsdateien und wertet jede, die gefunden wird, aus. Somit kann eine später ausgewertete Konfigurationsdatei die Optionen einer früher gelesenen überschreiben:

        XMAMEROOT/xmamerc
        XMAMEROOT/xmame-DISPLAY_METHODrc
        ${HOME}/.xmame/xmamerc
        ${HOME}/.xmame/xmame-DISPLAY_METHODrc
        ${HOME}/.xmame/rc/<gamename>rc

`XMAMEROOT` wird während des Übersetzens gesetzt, siehe Makefile.

`ANZEIGE_METHODE (DISPLAY_METHOD), für die XMame übersetzt wurde, dies kann sein: x11, svgalib, ggi, xgl, xfx, svgafx, openstep oder SDL.`

Für XMess natürlich einfach XMame durch XMess ersetzen ;-)

### Spiele Configuration

Die Dateien zur Spiele-Konfiguration werden benutzerabhängig abgelegt in:

        ${HOME}/.xmame/cfg/<game>.cfg resp
        ${HOME}/.xmess/cfg/<game>.cfg

### Game Status

Die Dateien zum Spielestatus werden userabhängig abgelegt in:

        ${HOME}/.xmame/sta/<game>.sta resp
        ${HOME}/.xmess/sta/<game>.sta

### NVram

NVram Dateien werden benutzerabhängig gespeichert unter:

        ${HOME}/.xmame/nvram/<game>.nv resp
        ${HOME}/.xmess/nvram/<game>.nv

### Memory Cards

Memory Cards werden benutzerabhängig gespeichert in

        ${HOME}/.xmame/mem/<filename>.mem resp
        ${HOME}/.xmess/mem/<filename>.mem

Wobei <filename> durch den Spieletreiber vorgegeben ist.

### Screenshots

Screenshots können erzeugt werden durch Drücken von F12 und werden im PNG-Format im aktuellen Arbeitsverzeichnis gespeichert (cwd), also das Verzeichnis, von dem aus XMame/XMess aufgerufen wurde.

Dies kann abgeändert werden durch den Eintrag screenshotdir in xmamerc/xmessrc.

Dies kann wiederum abgeändert werden durch die Kommandozeilen-Option `-screenshotdir`.

Die Bilder werden gespeichert als:

        <screenshotdir>/<game>xxxx.png
        Dabei ist xxxx eine Zahl.

### Highscores

Die Highscores werden gespeichert in XMAMEROOT, definiert im Makefile beim Compilieren. Dieses Spooldirectory kann überschrieben werden durch den Eintrag in xmamerc bzw. xmessrc. Dieser Eintrag kann wiederum überschrieben werden durch die Kommandozeilen-Option `-spooldir`.

Somit einfach die Berechtigung des Spoolverzeichnisses setzen auf

        drwxrwsr-x root games <spooldir>

mittels chown. Dann noch ein setgid xmame/xmess auf game und schon funktioniert es. (Bei Verständnisproblemen die Manpage von chown und setgid lesen !!!!)

Man kann auch die Group-ID bei xmame/xmess mittels chgrp game xmame.x11 (für die X11-Version) setzen. Dies funktioniert aber NICHT bei der SVGAlib und XF86-DGA Version. Diese benötigen suid root !! Verbesserungsvorschläge willkommen.
Für diese Versionen einfach ${HOME}/.xmame oder ${HOME}/.xmess als spooldir in xmamerc/xmessrc angeben.
Anmerkung: Damit Hiscores funktionieren, muss XMame natürlich die Datei hiscore.dat finden können.

###
hiscore.dat

Wenn Du die Hiscores nutzen willst, dann muss XMame die Datei hiscore.dat laden können, um an die Informationen heranzukommen.
Der Standard ist hierbei `XMAMEROOT`/hiscore.dat . XMAMEROOT wird während des Compilieren gesetzt, siehe hierzu im Makefile. Dies kann neu gesetzt werden durch den Eintrag hiscorefile in der Datei xmamerc, falls vorhanden. Dies kann natürlich auch wieder neu gesetzt werden durch die Kommandozeilen-Option `-hiscorefile` beim Start von XMame.
Die Datei `hiscore.dat` ist verfügbar auf der Mame-Homepage: http://www.mame.net

###
cheat.dat

Wenn Cheats benutzt werden sollen, dann muß Mame die Datei cheat.dat laden, um die Informationen zu haben.

Voreingestellt ist XMAMEROOT/cheat.dat . XMAMEROOT wird während des Compilierens gesetzt, siehe Makefile. Diese Einstellung kann überschrieben werden durch den Eintrag cheatfile in xmamerc, wenn vorhanden. Wiederrum kann dies ersetzt werden durch die Kommandozeilen-Option `-cheatfile`.
Die Datei `cheat.dat` ist verfügbar auf der Mame-Homepage: http://www.mame.net

###
history.dat

Wenn Du einige nette Hintergrundinformationen zu den Spielen willst, dann muß xmame die Datei history.dat laden.

Voreingestellt ist XMAMEROOT/history.dat . XMAMEROOT wird während des Übersetzens gesetzt, siehe hierzu im Makefile. Dies kann überschrieben werden durch den Eintrag historyfile in der xmamerc. Dieses kann wiederrum überschrieben werden durch den Schalter `-historyfile` beim Aufruf von Xmame.
Die Datei `history.dat` ist verfügbar auf der Mame-Homepage: http://www.mame.net

###
Aufzeichnen der Eingaben (Input Logs)

Aufzeichnungen von den Eingaben werden unter dem Dateinamen gespeichert, der hinter den Schaltern `-record / -playback` angegeben wird, immer relativ zum aktuellen Pfad.

### XMame/XMess findet immer noch nicht Dateien / Highscores werden nicht gespeichert

`"xmame/xmess -showconfig | more"` eintippen und prüfen, ob der angezeigte Pfad zu den Roms und der Pfad zum spooldir korrekt ist und ob dort auch die Berechtigung zum Lesen und Schreiben vorhanden ist. Andererseits noch einmal xmamerc/xmessrc prüfen.
Und nicht vergessen, xmess durchsucht auch das aktuelle Verzeichnis.

## 3.10 Wie starte ich XMame/XMess ?

Um XMame zu starten:

        xmame [Optionen] <gamename> [weitere Optionen]

Für XMess:

        xmess [Optionen] <systemname> [weitere Optionen] \
        <disk/romimage(s)> [weitere Optionen]

Alle Optionen sind sozusagen optional ;-))

Xmame/Xmess unterstützt die meisten Kommandozeilenoptionen der MSDOS-Version (näheres siehe in readme.mame / readme.mess) und natürlich ein paar eigene. Tippe xmame -help | more für die komplette Liste ein.
Bei Xmess benötigen einige Systeme nicht disk/romimage, die meisten jedoch schon.

## 3.11 Was sind die Kommandozeilen Parameter für XMame/XMess?

Für eine Liste der verfügbaren Parameter einfach

        /usr/games/xmame -help | more

eintippen (falls xmame in /usr/games zu finden ist)
Xmame/Xmess unterstützt die meisten Parameter der MSDOS-Version und natürlich ein paar eigene.
In der Datei readme.mame / readme.mess ist mehr über die Parameter nachzulesen.

## 3.12 Welche Tasten benutzen XMame/XMess use?

Xmame/Xmess benutzen die selben Tasten wie die DOS-Version: die folgenden Tasten funktionieren in allen Emulatoren:

        `  oder ~    Einstieg in das OnScreen Display für Lautstärkeänderungen,
                     Helligkeitsregelung, ...
        Tab          Einstieg ins Configurationsmenü. Tab oder ESC drücken, um zurück
                     zur Emulation zu gelangen
        P            Pause
        F3           Reset
        F4           Zeigt die Spielegrafik an. Mit den Cursor Tasten können die Farben
                     geändert werden.
                     F4 oder Esc um zurück zu kommen.
        F8           Frame Skip reduzieren (Bilder auslassen)
        F9           Frame Skip erhöhen
        F10          Throttle an oder aus
        F10 + shift  Idle Sleeping an oder aus
        F11          Anzeige der Frames an oder aus
        F11 + shift  Profiler Anzeige an oder aus
        F12          Bildschirminhalt speichern (snapshot)
        ESC          Emulator verlassen.

XMame hat zwei verschiedene Algorithmen für auto frameskipping, diese können mit der Option -frameskipper ausgewählt werden, und mit folgenden Tatenkombinationen:

        Tastenkombination:     Wirkung:
        STRG-Links + Einfügen  Standard DOS Frameskipper
        STRG-Linux + POS1      Frameskipper William Barath

Die Anzeigeskalierung von XMame kann im laufenden Betrieb mit folgenden Tastenkombinationen geändert werden:

        Tastenkombination:     Ergebnis:
        SHIFT-Links + Einfg    Breite erhöhen
        SHIFT-Links + Entf     Breite verringern
        SHIFT-Links + Pos1     Höhe vergrößern
        SHIFT-Links + Ende     Höhe verringern
        SHIFT-Links + Bild auf Anzeige vergrößern
        SHIFT-Links + Bild ab  Anzeige verkleinern

Unter X11 kann XMame zwischen verschiedenen Anzeigemodi während "des laufenden Betriebes" wechseln:

        Tastenkombination:     Bringt Dich zu:
        ALT-Links + Einfg      Normales Fenster
        ALT-Links + Pos1       DGA Fullscreen Modus

Unter SDL kann XMame zwischen den verschienden Modi zur Laufzeit wechseln:

        Tastenkombination:     Ergebnis:
        ALT-Links + Return     Schaltet zwischen Fenster- und Fullscreenmodus um

Unter X11 in einem Fenster kann man nun auch die Maus aktivieren, um sie zum Spielen benutzen zu können. Drücke dazu Alt-Links und Bild-Ab um die Maus zu aktivieren und drücke die Tastenkombination nochmals, um die Maus wieder zu deaktivieren.

## 3.13 Warum haben manche Spiele keinen Sound ?

- Zuerst einmal prüfen, ob Soundunterstützung überhaupt funktioniert.
- Prüfen, ob das gewünschte Spiel überhaupt Soundunterstützung bietet. Nicht alle Spiele haben derzeit Sound.
- Bei Xmame einen Blick in gameslist.mame werfen. Wird Sound für das Spiel emuliert ?
- Bei Xmess einen Blick in readme.mess werfen, ob für das System Sound überhaupt emuliert wird.
- Prüfen, ob Xmame/Xmess auf dem verwendeten System überhaupt Soundunterstützung bietet. Siehe dazu weiter oben in den FAQ's.

## 3.14 Meine Soundausgabe ist verzögert / ist abgehackt. / Was bewirkt -bufsize?

Mit dem Parameter `-bufsize` (als Kommandozeilen-Option) oder als Schlüsselwort in der Konfigurationdatei (xmamerc) kann man die Anzahl Frames von Audio zum Buffer angeben. Die Grundeinstellung ist 2 frames.

Dieser Wert sollte bei Jedem passen, aber wenn immer noch Probleme auftreten, dann weiterlesen.

Wenn die Buffergröße zu klein ist, dann wird der Buffer gezwungen, sich zwischen den Frames zu Leeren, was dann zu verzögerter Soundausgabe oder zu abgehacktem Sound führen kann. In diesem Fall kann das Erhöhen des Wertes der Buffergröße auf beispielsweise 2.5 helfen.

Wenn jedoch die Buffergröße zu gross ist, dann werden so viele Audiodaten gepuffert, dass die Soundausgabe verzögert klingt. Z.B. ist das Einwerfen einer Münze erst nach 0.5 Sekunden zu Hören, nachdem die Taste "Insert Coin" gedrückt wurde. In diesem Fall verringere den Werte bei der Buffergröße auf beispielsweise 1.5.

Bitte lasst mich wissen, wenn ein Ändern dieser Werte notwendig ist, weil es geplant ist diesen Parameter in einer zukünftigen Version von XMame wieder zu entfernen.

## 3.15 Warum funktioniert ein Spiel nicht ?

- Sind die richtigen Roms vorhanden oder treten beim Starten Prüfsummenfehler auf ?
- Xmame Version 0.34 und höher benötigt PROM-Dateien, die nicht in den ROM-Files enthalten sind vor der Version 0.34. Siehe auch die nächste Frage über PROMs.
- Bei Xmame in der Datei gamelist.mame nachsehen, ob das Spiel überhaupt spielbar ist. Wenn ein Spiel in der Liste enthalten ist bedeutet es nicht automatisch, daß es schon spielbar ist.
- Bei Xmess in der Datei readme.mess nachsehen. Vielleicht wird das System noch nicht komplett emuliert.
- Einige Spiele benötigen Soundunterstützung. Wenn bei Deinem Unix-System keine Soundunterstützung vorhanden ist oder Xmame/Xmess dafür keine Soundunterstützung bietet, dann den Parameter `-fakesound` benutzen.

## 3.16 Was sind PROMs?

PROMs enthalten spezielle Informationen für Spiele. Diese waren in Mame-Versionen < 0.34 in Mame selbst enthalten. Diese Informationen wurden wieder aus Mame entfernt und sind in den neueren Versionen der ROM-Files, die so etwas benötigen, schon enthalten.

Wenn Du Deine vorhandenen ROMs nutzen willst, dann können die PROMs in einer einzigen Datei gefunden werden unter:

http://mame.retrogames.com/

## 3.17 Warum sind XMame/XMess so langsam ?

Xmame/Xmess ist ein übersetztes C-Programm, dass Hardware emuliert. Software, die Hardware emuliert, ist nun mal nicht so schnell. Hier sind nun einige Tipps für höhere Geschwindigkeit:

- den Parameter -frameskip benutzen
- während des Spieles F8 drücken, um die Framerate zu erhöhen
- throttle abschalten durch den Parameter -nothrottle oder durch drücken von F10 während Xmame/Xmess schon läuft.
- wenn Xmame/Xmess läuft, dann F11 drücken um die aktuelle Geschwindigkeit von Xmame/Xmess zu prüfen.Wenn niemals 100% auftauchen, dann muß wohl ein schnellerer Computer her.

Du kannst natürlich auch versuchen, XMame/XMess mit mehr optimierten Einstellungen neu zu übersetzen. Die folgenden Ratschläge können nicht funktionieren oder können auf einigen Maschinen oder einigen Installationen nicht möglich sein. Natürlich kann, in den Fällen wo es funktioniert, eine merklich bessere Performance bei XMame/XMess eintreten.
Um diese "Verbesserungen" einsetzen zu können, muss nur die Datei Makefile editiert werden. Diese Datei ist bei XMame mit dabei. Anschließend muss der Sourcecode neu übersetzt werden. Wenn der Sourdecode zum zweiten mal übersetzt wird, dann muss nach dem Editieren von makefile.unix

        make clean
        make
        make install

ausgeführt werden, um die neuen Einstellungen zu aktivieren.

### SPEEDUP # 1 - Compilieren mit Inline

Versuche beim Übersetzen inline zu aktivieren und entferne/füge den Kommentar bei diesen beiden Zeilen hinzu:

        # IL    = '-DINLINE=static inline'
        IL     = -DINLINE=static

### SPEEDUP # 2 - Direct Graphics Access (DGA)

Für einen gehörigen "Schub" versuche DGA zu aktivieren und entferne den Kommentar bei folgender Zeile

        DGA = 1

Starte dann XMame als Benutzer root und drücke "CursorLinks-ALT-EINFG" um in den DGA-Modus zu wechseln. Dies sollte um Einiges schneller sein und benötigt/nutzt nicht xsync ;-)
Um in den Fenstermodus zurückzukommen ohne das Spiel zu verlassen drücke ALT-Links + Einfg.

Der Vorteil von DGA ist, dass es Direct Grafics Access ist und somit direkt in den Framebuffer schreibt (Denke an DircetX und GDI unter Windows). So sollte es einen Tick schneller sein, unabhängig davon, ob Du einen wirklichen guten beschleunigten X-Server hast, was genauso schnell sein könnte. Drücke F11 um die aktuelle Framerate anzuzeigen, obwohl es meist schwer festzustellen ist (meist nur wahrnehmbar), es sollte doch eine kleine Geschwindigkeitserhöhung vorhanden sein.
Nebenbei schaltet DGA automatisch in den richtigen Modus entfernt jeglichen "Müll" der Fenstermanager, aber das kann auch ohne DGA erreicht werden (es wird ein solches Feature möglicherweise später geben, weil es ganz leicht Fullscreen erlaubt, ohne dass man dazu root sein muss).
Füge den Modus 320x240 hinzu, der eine nette Fullscreen-Anzeige beim Scaling scale = 1 möglich macht ;-)
Nicht vergessen, dass noch die Mode-Lines in der Section "Display" bei "Screen" Deiner X-Config Datei gesetzt werden müssen um im DGA-Modus bildschirmfüllend darzustellen. XMame sucht sich den besten Modus heraus, den es finden kann. Du wirst also eine Zeile wie

        Modes  "1024x768" "800x600" "640x480" "320x240" "256x224"

haben, denn jedes Spiel, das in eine 320x240-Auflösung passt kann in dieser Auflösung dargestellt werden, usw. Nicht vergessen, dass die X-Config Datei mehrere Stellen mit dem Namen "Screen" haben kann. Die Modi müssen dann natürlich bei der Stelle editiert werden, die der X-Server beim Start benutzt. Es ist natürlich nicht ganz so einfach, da man X auch noch mitteilen muss, welche Monitoreinstellungen für diese Auflösungen benötigt werden. Dies geschieht in den Modeline-Einträgen im Bereich "Monitor" der X-Config Datei.
Siehe auch in `/contrib/tools/modelines` für einen Satz verückter Modi, speziell für XMame in DGA. Sie sollten auf jedem beliebigen Multisync Monitor funktionieren, aber benutze sie NICHT auf einem alten Festfrequenz Monitor (gut, wenn Du es nicht lassen kannst es trotzdem zu versuchen, ich werden NICHT für einen neuen Monitor zahlen)

### SPEEDUP # 3 - NASM

Du kannst auch versuchen, nasm zu installieren und XMame/XMess mit ASM-Core zu übersetzen, dies hilft auch ein wenig.
(Bemerkung für SuSE-Besitzer: das Paket nasm-09x befindet sich in der Serie d)

## 3.18 Ich habe eine Dual Prozessor Maschine. Wie kann ich davon profitieren ?

Eigentlich wenig. XMame ist eine Portierung von DOS und ist nur designed für Single-Thread. Ein klein wenig schneller könnte XMame auf einer SMP-Maschine schon laufen, weil XMame dann länger eine CPU für sich hat. Aber das passiert mit allen CPU-intensiven Programmen. Und alles was man einstellt, dass eine Applikation mehr CPU-Zeit bekommt (höhere Priorität, killen unnötiger Prozesse, ...) funktioniert auch bei XMame.
Nun könnte man an dieser Stelle denken, "Sicherlich könnte man einen Thread haben für die Emulation und einen anderen zur Beschleunigung der grafischen Ausgabe". Ja, aber da sind einige ernsthafte Einschränkungen zu beachten. Die erste ist die Synchronisation zwischen den Threads, die aber benötigt wird damit alles reibungslos läuft. Wenn das nicht glatt läuft, dann frisst der Overhead jeglichen Vorteil wieder auf. Ausserdem muss das Ganze als portables Thread Interface implementiert werden. Das bedeutet POSIX Threads. Es ist somit erheblicher Aufwand für fast keinen Effekt. Aber wenn Du der Meinung bist, sowas zu implementieren, dann sind Patches dazu in der XMame Mailingliste natürlich herzlich willkommen ... ;-)

## 3.19 Warum funktionieren bei meinem Joystick die diagonalen Bewegenungen nicht richtig ? (nur Intel x86 System)

Xmame/Xmess benutzt automatische Kalibrierung. Aber man kann spezielle Programme zum Kalibrieren benutzen. (jscal - beim Joystick-Module dabei - funktioniert ausgezeichnet ...)

Anmerkung: Ab Kernel 2.4.x braucht man jscal 2.0.0. Dies findet man auf http://www.suse.cz.

## 3.20 Wie kann ich die XinputExtensions für auf X11 basierende Joysticks in Xfree86 aktivieren ?

Die XF86Config muß editiert werden, um die XInput-Sektion zu aktivieren. Näheres bietet die Manpage von XF86Config.

## 3.21 Wie lese ich eine Manual Page ?

Echt einfach. Um beispielsweise die Manpage von XF86Config zu lesen, einfach man XF86Config eintippen. ;)

## 3.22 Warum bekomme ich "get gz_open symbol not found" beim Übersetzen ?

XMame/XMess-Versionen neuer als 0.35 benutzen zlib für einige Packroutinen. Leider haben viele Linux Distributionen eine veraltete Version von zlib installiert unter /usr/X11R6/lib/libz.a und die neue Version installiert unter /usr/lib/libz.a. Wenn dies bei Dir der Fall ist, dann kann problemlos die Version unter /usr/X11R6/lib/libz.a gelöscht werden. Wenn Du Dir da nicht sicher bist, verschiebe einfach /usr/X11R6/lib/libz.a an eine andere Stelle.
Löschen oder nur Verschieben von /usr/X11R6/lib/libz.a sollte dieses Problem beheben.
Sieh auch: FAQ: Warum bekomme ich "get zlib.h not found" ?

## 3.23 Warum bekomme ich "get zlib.h not found" ?

XMame/XMess-Versionen neuer als 0.35 benutzen zlib für einige Packroutinen.
Zlib ist Standard auf den meisten Unix-Systemen. Für Leute, die sich nicht mit zlib herumärgern wolle, oder keine veraltete Version haben wollen, ist nun bei XMame/XMess eine abgespeckte Version von zlib mit dabei. Entferne die Kommentare bei der betreffenden Stelle im Makefile um dies zu benutzen.

## 3.24 Wenn ich xmame.x11 starte, passiert nichts --- kein Fenster geht auf oder irgendwas anderes. Hilfe !

Läuft bei Dir eine aktuelle Version von KDE, z.B. 2.1.1 ? Im KDE Fenstermanager ist vermutlich ein Fehler, der bei einigen X11-Anwendungen verhindert, dass deren Hauptfenster aufgeht. Du kannst entweder die SDL-Version von XMame nehmen, oder folgenden Workaround probieren, der bei etlichen Leuten funktioniert hat:

xmame.x11 -rid `xwininfo -root | grep xwininfo: | awk '{print $4}'`
Update: Es wurde uns mitgeteilt, dass seit KDE 2.2b1 dieser Fehler nicht mehr auftritt.

## 3.25 Wo bekomme ich die neueste Version von XMame/XMess her ?

Auf der Xmame/Xmess-Homepage ist immer die aktuellste Version verfügbar.
Adresse: http://x.mame.net
Auf meiner Homepage ist ebenfalls der Sourcecode verfügbar (Ausweichadresse, falls x.mame.net überlastet ist).
Adresse: http://www.bingo-ev.de/~rh474

## 3.26 Wohin kann ich Korrekturen, Fehlermeldungen, Anmerkungen, Geld :-) hinschicken ?

Siehe Mail in diesem Dokument.

## 3.27 Was kann ich tun, wenn meine Frage immer noch nicht beantwortet ist ?

Bitte prüfe die offiziellen Readme's von Mame und Mess. Vielleicht ist Deine Frage dort schon beantwortet:

- Das offizielle Mame Readme (readme.mame)
- Das offizielleMess Readme (readme.mess)

Wenn das auch nicht weiterhilft, dann stelle doch Deine Frage in der Mailing Liste oder schicke eine Mail an den XMame/XMess Koordinator. Siehe dazu unter
Mail für mehr Information.

Weiter Zurück Inhalt