XMAME/XMESS DOKUMENTATION: Kommentare und Anmerkungen zu speziellen Anzeigearten
Weiter Zurück Inhalt

4. Kommentare und Anmerkungen zu speziellen Anzeigearten

4.1 FXMame, ein Glide Treiber für XMame

Die neueste Version diese Treibers kann bei http://glmame.linuxgames.com gefunden werden.

Voraussetzungen

Um FXMame zum Laufen zu bekommen muss folgendes vorhanden sein:

  • eine 3Dfx Karte
  • Glide 2x
  • der XMame Sourcecode

Übersetzen und Installieren

FXMame kommt in zwei "Geschmacksrichtungen": xfx unf svgafx. Die xfx-Version läuft unter X11. Es nutzt ein X-Fenster für die Eingabe. Die svgafx-Vesion kann von der Konsole aus gestartet werden und nutzt die SVGAlib zur Eingabe. Beide nutzen die 3Dfx-Hardware zum Rendern.

Um FXMame zu installieren folge der allgemeinen Anleitung von XMame. Um den Glide Treiber zuzuweisen, ändere folgendes im Makefile:

  • wähle entweder "xfx" oder "svgafx" als Anzeigeart (display method)
  • konfiguriere die Glide Variablen entsprechend Deiner Glide Installation

Die ausführbaren Dateien von FXMame heissen "xmame.xfx" und "xmame.svgafx".

Starten

FXMame startet mit den selben Parametern und nutzt die selben Tastaturkommandos wie xmame.x11.

Einige neue Tastaturkommandos wurden für den Glidetreiber hinzugefügt:

  • STRG-Rechts + A -- aktivieren von Antialiasing in Vector Spielen
  • STRG-Rechts + B -- aktivieren der bilinearen Filterung

Der Glide Treiber fügt auch einige Kommandozeilen Optionen hinzu:

    -fxgama <Wert> Wert der 3Dfx Gamma Korrekur

Bitte beachten, dass ich, um die fps in Vector Spielen anzeigen zu können, die Spielebitmap über die Vectoranzeige legen musste. Dies geschah, weil ich die Bitmap in Vector Spielen umgehen musste. Das Zeichnen der Bitmap belastet die CPU enorm, deshalb bricht die Geschwindigkeit der Spiele beim Anzeigen der fps ein. (Ich weiss, nicht gerade ideal, aber wenn Du die Framerate rausfinden willst ....).

Allgemeine Fragen (FAQ)

Q: Wenn ich FXMame starte bekomme ich einen Core Dump.

A: Bitte sicherstellen, dass FXame als root gestartet wird. Root-Rechte werden für den Zugriff auf 3Dfx-Hardware benötigt.

Q: Wenn ich xmame.xfx starte, dann hängt das Spiel beim Initialisieren.

A: Läuft gerade KDE ? Manchmal funktioniert dann die Tastatur unter KDE nicht. Wenn Du dieses Problem hast, dann wechsle den Fenstermanager oder benutze stattdessen xmame.svgafx.

Aktuelle Einschränkungen/Bugs

  • Antialiasing funktioniert nicht so gut wie es sollte
  • Eingabeprobleme unter KDE

Zukünftige Neuerungen 

  • Optimierung des Codes zum Zeichnen, damit nur die Teile der Bitmap neu gezeichnet werden, die sich geändert haben.

Lizenz

Der Code von FXMame steht unter dem Copyright (1998) von Mike Oliphant. Es kann benutzt und weitergegeben werden unter den selben Bedingungen wie in der MAME Lizenz beschrieben.

Version History (im englischen Original)

v0.5 -- December 11th, 1998 ---------------------------

  • implemented long copies in screen update
  • added dirty handling. this greatly increases the speed of games that support the dirty update strategy (although most of them are older games that already ran at full speed on modern hardware)
  • merged source with xmame b8.1

v0.4 -- October 30th, 1998 --------------------------

  • improved alpha handling in vector games - now bitmapped overlays do not dim the screen o added svgalib support (xmame.svgafx) o fixed a tiling bug that gave artifacts on texture tile boundaries

v0.3 -- October 29th, 1998 --------------------------

  • got rid of extra lines in vector games o added bitmap overlay in vector games to show options/fps o added antialiasing in vector games

v0.2 -- October 28th, 1998 --------------------------

  • added screenshots o added 3Dfx gamma adjustment o added direct acceleration of vector games (still buggy)

v0.1 -- October 27th, 1998 --------------------------

  • first public release

Author

Mike Oliphant (oliphant@ling.ed.ac.uk) http://glmame.linuxgames.com

4.2 GLMame, ein OPENGL Treiber für XMame

Die neueste Version dieses Treibers kann unter http://www.jausoft.com/glmame.html gefunden werden.

Voraussetzungen

Für GLMame ist folgendes notwendig: 

  • Ein OpenGL Treiber
  • libjpeg
  • Hardware 3D-Beschleunigung (wenn überhaupt eine vernünftige Framerate rauskommen soll)
  • der Source-Code von XMame

Übersetzen und Installieren

Die allgemeinen Anweisungen zur Installation von XMame beachten. Um den OpenGL Treiber zu verwenden muss folgendes im Makefile geändert werden:

  • Wähle "xgl" als Anzeigeart aus
  • Für Debug-Informationen zur Laufzeit, füge "-DGLDEBUG" zur Variablen "GLCFLAGS" hinzu.
  • GLU version 1.2 is recommended (e.g., from SGI). If you use Mesa's GLU, you may have to add " -DGLU_VERSION_1_2" to the " GLCFLAGS".
  • GLU Version 1.2 wird benötigt (z.B. von SGI). Wenn Du Mesa-GLU benutzt, dann muss ggf. " -DGLU_VERSION_1_2" bei der Variablen "GLCFLAGS" hinzugefügt werden.

Die ausführbare Datei von GLMame heisst "xmame.xgl"

Starten

xmame.xgl startet mit den selben Parametern und nutzt die selben Tastaturkommandos wie xmame.x11.

Das Programm startet im Cabinet-Modus. Weil es auch nett und recht "cool" ist, willst Du sicher von nun an im Fullscreen-Modus spielen.

Einige neue Tastaturkommandos wurden für den OpenGL-Treiber hinzugefügt:

  • ALT-Rechts + A -- Antialias Filtern ein-/ausschalten (Vektorspiele)
  • ALT-Rechts + B -- Bilineares Filtern ein-/ausschalten (Rasterspiele)
  • ALT-Rechts + C -- Cabinet/Fullscreen ein-/ausschalten (Beide)
  • ALT-Rechts + F -- Vollbild/Startgröße ein-/ausschalten (Beide)
  • ALT-Rechts + O -- Draw Bitmap ein-/ausschalten (Beide, macht aber bei Rasterspielen keinen Sinn, beschleunigt Vektorspiele)
  • ALT-Rechts + T -- nachleuchtende Spuren ein-/ausschalten (Vektorspiele)
  • ALT-Rechts + + -- Lichtstärke erhöhen (Vektorspiele)
  • ALT-Rechts + -  -- Lichtstärke verringern (Vektorspiele)

Der OpenGL-Treiber bringt auch einige Kommandozeilen-Optionen hinzu:

    -[no]fullscreen         Starten im Vollbildmodus
    (default: abgeschaltet)
    -[no]gldblbuffer        Doppeltes Puffern ein-/ausschalten
                            (default: aktiviert)

    -gltexture_size <int>   die maximale Breite und Höhe eines Texturensegments                            
    erzwingen (default: autosize)

    -[no]glforceblitmode /  Bitter in Echtfarben-Modi 15/32bpp erzwingen
    -[no]glblit             (default: aktiviert)

    -[no]glext78 /          die Benutzung der GL extension number 78 erzwingen,
    -[no]glext              falls vorhanden (paletted texture)
                            (default: aktiviert)
    -[no]glbilinear /       bilineares Filtern ein-/ausschalten
    -[no]glbilin            (default: aktiviert)

    -[no]gldrawbitmap /     zeichnen der Bitmap ein-/ausschalten;  
    -[no]glbitmap           z.B. in Vektorspielen abschalten zur Geschwindigkeitserhöhung
                            (default: aktiviert)

    -[no]glcolormod         Farbmodulation (Intensität, Gamma) ein-/ausschalten
    -[no]glcmod             (default: aktiviert)
                            
    -glbeam <float>         die Lichtstärke für Vektorspiele setzen
                            (default: 1.0)

    -[no]glalphablending /  Alpha-Blendung ein-/ausschalten, falls vorhanden
    -[no]glalpha            (default: aktiviert)

    -[no]glantialias /      Antialiasing ein-/ausschalten
    -[no]glaa               (default: aktiviert)

    -gllibname /            die OpenGL-Bibliothek angeben, die dynamisch geladen werden soll
    -gllib <string>         (default: libGL.so)

    -glulibname /           die GLU-Bibliothek angeben, die dynamisch geladen werden soll
    -glulib <string>        (default: libGLU.so)

    -[no]cabview            im Cabinet Anzeigemodus starten/nicht starten
                            (default: nicht in diesem modus starten)

    -cabinet <cabname>      welches Cabinet Modell soll genutzt werden ?
                            (default: glmamejau)
 
   -glres <string>          Spiele immer skalieren auf <Xres>x<Yres>, 
                            Seitenverhältnis beibehalten. 
                            Dieses überschreibt die Scale-Option. 
     Dieses z.B. für Voodoo1 Grafikkarten nutzen
                            mit: "-glres 640x480"

Drei Cabinet-Modelle werden mitgeliefert. Der Standard, "glmamejau", sieht aus wie ein Standard Arcade Cabinet, wie "glmame". Der Letzte, "trans", ist mit einem transparenten Spiele-Bildschirm, durch den man durchschauen kann.

Bitte beachten, dass  um die fps in Vector Spielen anzeigen zu können, die Spielebitmap über die Vectoranzeige gelegt werden muss. Das Zeichnen der Bitmap geht bei einigen low-end hardwarebeschleunigten OpenGL-Implementationen voll auf die CPU. Man wird also leider bemerken, dass das Spiel beim überlagern der Bitmap langsamer wird.

Da das Überlagen der Bitmap der Standard ist, kann man es an-/ausschalten mit "STRG_ALT-O" oder beim Starten abschalten mit der Kommandozeilenoption "-noglbitmap".

Ein Problem von Vector Spielen und dem Cabinet Modus hängt mit einigen Vector Punkten zusammen, dei nicht innerhalb der Bildschirmkoordinaten liegen. Man wird einige Vectoren ausserhalb der Mame Cabinet Anzeige feststellen.

*** WICHTIG ! ***

Wenn Du Problem mit GLMame hast, oder es recht langsam ist, dann lese den Abschnitt "Allgemeine Fragen". Viele der Fragen, die mich per Mail erreichen, sind damit schon beantwortet.

Cabinet Modelle

Die Information des Cabinet-Modells ist im Verzeichnis "cab" abgelegt, defniert in der Variable ROMPATH im Makefile. Pfadangaben, die in xmamerc oder mit der Umgebungsvariablen "rompath" gesetzt sind, werden derzeit nicht unterstützt. Jedes Cabinet-Modell hat sein eigenes Unterverzeichnis. GLMame versucht zuerst jedes, vom Benutzer angegebene Modell, zu laden (mit der Kommandozeilen-Option -cabinet) oder ein passendes Modell zum benutzten Spielnamen. Wenn dies fehlschlägt, dann wird das allgemeine "glmame"-Modell herangezogen.


Das Verzeichnis eines Cabinet-Modells muss eine Geometrie-Datei enthalten <modelname>.cab und .jpg Dateien für die Texturen auf dem Modell. Das Format der .cab Datei ist recht einfach zu begreifen, wenn man in der Programmierung mit OpenGL zu tun hatte. Es sieht wie eine Liste mit Anweisungen zur Anzeige unter OpenGL aus. Das Format ist folgendermaßen:

    cabv1.1

Dieser Header muss die ersten 7 Stellen der Datei sein.

    #<text>

Kommentare beginnen mit einem '#'

    begin <type>

Anfang eines Geometrie Objektes, und zwar eines der folgenden (points, polygon, quads, quad_strip, screen). Jedes Statement "begin" muss mit einem entsprechenden "end" Statement geschlossen werden. Ein "polygon" gibt an, dass ein vertex pro, nun .... vertex benutzt wird. "quads" sind vierseitige polygone, jedes definiert durch vier Vertexe angeordnet um das Polygon. Ein "quad_strip" ist eine Reihe von vierseitigen Polygonen. Jedes teilt sich eine Ecke mit einem anderen Polygon davor und danach im "strip".  Ein "screen" ist ein "quad", dass den derzeit gültigen Bereich im 3D Raum beschreibt, in dem das Spiel angezeigt wird. Nur einer von diesen sollte definiert sein. Für mehr Informationen siehe Beschreibungen zu OpenGL Geometry an.

    end

Beendet das Geometry Objekt, dass mit "begin" angefangen hat.

    pointsize <s>

Ändert die aktuelle Punktgröße auf die entsprechenden Wert (bestimmt durch eine Gleitkommazahl zwischen 0.0 und z.B. 20.0). Anmerkung: Das Statement kann nicht zwischen begin und end verwendet werden.

    color4 <r> <g> <b>

Ändert die aktuelle Farbe zu dem angegebenen RGB-Wert (definiert durch Gleitkommazahlen zwischen 0 und 1).

    color4 <r> <g> <b> <a>

Ändert die aktuelle Farbe zu dem angegebenen RGBA-Wert (definiert durch Gleitkommazahlen zwischen 0 und 1).

    shading <type>

Setzt den "shading" Type. Verfügbare Typen sind "smooth" (blendet Farben von einem vertex zum nächsten über) oder "flat" (macht dies nicht).

    vertex <x> <y> <z>

Definiert ein vertex des aktuellen Geometrie Objektes als einen im Punkt im 3D-Raum.

    numtex <num>

Definiert die Anzahl verschiedener Texturen die geladen werden. Diese Angabe muss jeglicher "loadtex" Anweisung vorangehen.

    loadtex <num> <width> <height> <filename>

Lädt Texture Nummer <num> aus einer .jpg Datei <filename>. Die .jpg-Datei MUSS <width> bei <height> Pixeln sein und beide Angaben <width> und <height> müssen ein Vielfaches von 2 sein (und muss mit den Hardwareanforderungen jeder 3D-Karte, mit der der Cabinet-Modus funktionieren soll, übereinstimmen --- 256x256 für 3Dfx).

    texcoord <xcoord> <ycoord>

Setzt die Texturkoordinaten des nächsten vertex. Dies definiert, wo in 2D-Texture Raum die vertex liegt.

    enable texture

Aktiviert texture mapping (unter Benutzung der aktuell ausgwählten Textur).

    disable texture

Schaltet das texture mapping ab.

    settex <num>

Wählt die Texture <num> als nächste aus. Die Texture muss vorab geladen sein unter Benutzung von "loadtex".

    camerapan <num>

Startet die Definition der camera pan gefolgt von einer Anzahl <num> von Kamera Positionen. Nach der transision Definiton muss die Sequence pan durch eine "end" Anweisung abgeschlossen werden.

    goto <lx> <ly> <lz> <px> <py> <pz> <nx> <ny> <nz>

Positoniert / reorientiert die Kamera. Die Argumente sind die selben wie beim OpenGL Komando "gluLookAt()".  Die Kamera ist bei Punkt <lx,ly,lz> positioniert, zeigt den Vektor <px,py,pz> entlang, mit "up" normal (die Richtung die oben ist für die Kamera) <nx,ny,nz>.

    moveto <lx> <ly> <lz> <px> <py> <pz> <nx> <ny> <nz> <frames>

Bewegt die Kamera zu einer neuen Position (angegeben im Befehl "goto"). Das Versetzen geschieht über <frames> Frames.

Alle Anweisungen müssen jeweils in einer neuen Zeile stehen. Benutze die (teilweise) kommentierte Datei glmamejau als ein Beispiel um anzufangen.

Allgemeine Fragen (FAQ)

Q: Ich bekomme nur ein paar Frames pro Sekunde. Das ist mist ! Warum nur ?

A1: Du lässt wahrscheinlich Mesa im Softwaremodus laufen. Du solltes die Datei "README.3Dfx" in Deinem Mesa-Paket durchlesen. Möglicherweise muss die Anweisung "setenv MESA_GLX_FX fullscreen" ausgeführt werden.

A2: Du brauchst eine Grafikkarte mit  3D-Beschleunigung. Kauf Dir eine (siehe unten) !

Q: Wenn ich xmame.xgl starte, dann macht es nur einen Core-Dump. Das macht weniger Spass als 3D Pacman zu spielen. Und nun ?

A1: Wenn Du eine 3Dfx-Karte hast, dass muss xmame.xgl als root ausgeführt werden. Es sind Root-Rechte nötig, um auf die 3Dfx-Hardware zuzugreifen

A2: Wenn Du Mesa nutzt, dann musst Du auf Version 3.0 upgraden.

Q: Wenn ich xmame.xgl starte dann hängt das Spiel beim Initialisieren.

A: Läuft gerade KDE ? Manchmal funktioniert dann die Tastatur unter KDE nicht. Wenn Du dieses Problem hast, dann wechsle den Fenstermanager.

Q: Welche Grafikkarten funktionieren mit xmame.xgl ?

A: Derzeit haben wir folgende Erkenntnisse (Stand: 13.07.2001)

  • Vodoo3 + DRI OpenGL Treiber (XFree86 4.0.2), mit der Kommandozeilenoption "-noglaa" und 16bpp Farbtiefe beim X11 Server
  • Vodoo1 + Mesa 3.4 + Glide, mit dem Aufruf " -glres 640x480" !
  • GeForce + NVIDIA OpenGL Treiber + XFree86 4.0.2 und 16/24bpp Farbtiefe
  • NVIDIA TNT2 + NVIDIA OpenGL Treiber + XFree86 4.0.2 mit dem Aufruf "-bpp 16" und 16bpp (möglicherweise auch 24bpp  ???) Farbtiefe (das Mapping der OpenGL Farbpaletten ist fehlerhaft).
  • NVIDIA TNT + NVIDIA OpenGL Treiber + XFree86 4.0.2 mit dem Aufruf "-bpp 16" und 16bpp (möglicherweise auch 24bpp  ???) Farbtiefe (das Mapping der OpenGL Farbpaletten ist fehlerhaft).
  • Matrox MGA 400 + DRI OpenGL Treiber (XFree86 4.0.2) mit dem Aufruf "-bpp 16", "-noglaa" (???) und 16bpp (ggf.. auch 24bpp ???) Farbtiefe (das Mapping der OpenGL Farbpaletten ist fehlerhaft).
  • ATI R128 + DRI OpenGL Treiber (XFree86 4.1.0) mit den Aufrufen " -noglext78 -noglaa" oder " -bpp 16 -noglaa" , wobei die letzteren Optionen etwas langsamer sind (ca. 5 fps).
  • LinuxPPC - Powerbook-Firewire + ATI R128: siehe oben !

Alle oben angegebenen Treiber funktionieren mit der Option "-bpp 16" und/oder "-noglext78". Es sieht also danach aus, dass ein Fehler in der OpenGL Implementation verursacht, dass diese Treiber/Hardware Kombinationen nur mit den angegebenen Kommandozeilenoptionen funktionieren. Der Fehler könnte in diesen OpenGL-Funktionen liegen:

  • glColorTableEXT
  • glColorSubTableEXT

Eine derzeit schnelle und spassige Treiber/Hardware Kombination ist:

  • NVIDIA GeForce + NVIDIA OpenGL Treiber + XFree86 4.0.2; Ich habe eine GeForce256 (AGP) getestet.
  • Vodoo + DRI OpenGL Treiber (XFree86 4.0.2); Ich habe eine Vodoo3 getestet.


Q: Wenn ich xmame.xgl starte, dann funktioniert gar nichts mehr.

A: Lies die oben genannten Erkenntnisse ... und versuche

  • die Farbtiefe es X-Servers abändern (-bpp), z.B. mit 32bpp oder 24bpp oder 16bpp;
  • die Kommandozeilenoption "-bpp 16";
  • die Kommandozeilenoption "-noglaa";
  • die Kommandozeilenoption "-noglext".

 

Aktuelle Einschränkungen/Bugs

  • kein Clipping bei Vektor Spielen (meist im Cabinet-Modus zu bemerken)
  • kein Einhalten des korrekten Seitenverhältnisses im Cabinet-Modus

Zukünftige Neuerungen 

  • bestehende Fehler beheben ... sind da welche ? Oder sind da nur ein paar unbekannte Features ;-) ? 
  • Optimierung des Codes zum Zeichnen, damit nur die Teile der Bitmap neu gezeichnet werden, die sich geändert haben.
    Das Coding optimieren ....

Lizenz

Der Code von GLMmame basiert auf  Mike Oliphant's GLMame Code Version 0.6.

Der Code von GLMame steht unter dem Copyright (1998) von Mike Oliphant. Es kann benutzt und weitergegeben werden unter den selben Bedingungen wie in der MAME Lizenz beschrieben.

Seit GLMame Version 0.7 wurde der Code verändert und start verbessert von Sven Goethel -- keine Änderung der Lizenz !!


Version History (im englischen Original)

v0.83 -- March 29th, 2001 ---------------------------

  • Changed the code heavily to improve compatibility and speed. The new code is a re-merge of the GLMame32 code, which is a branch of Mike Oliphant's GLmame code version 0.6.
  • For a detailed list, please consult the file changes.opengl within the distribution's documentation directory! You can also view the current changes.opengl here: http://www.jausoft.com/glmame.html


v0.6 -- December 14th, 1998 ---------------------------

  • added support for systems that do not support paletted textures (SGI and solaris OpenGL implementations, for example)
  • merged source with xmame b8.1

v0.5 -- October 30th, 1998 --------------------------

  • fixed a bug with texturing being left on in bad places
  • added 3Dfx gamma adjustment

v0.4 -- October 21st, 1998 --------------------------

  • updated to work with xmame v0.34b5.2

v0.3 -- October 12th, 1998 --------------------------

  • fixed verticle screen centering in fullscreen mode
  • moved cabinet and camera panning information into a user-editable configuration file
  • added 'trans' cabinet model o added double buffer, view type, and cabinet selection command-line options

v0.2 -- October 6th, 1998 -------------------------

  • adding missing 'cab' directory

v0.1 -- October 5th, 1998 -------------------------

  • first public release

Author

Seit GLMame Version 0.7: Sven Goethel (sgoethel@jausoft.com) http://www.jausoft.com/glmame.html

Bis GLMame Version 0.6: Mike Oliphant (oliphant@ling.ed.ac.uk) http://glmame.linuxgames.com


Weiter Zurück Inhalt