Weiter Zurück Inhalt

2. Übersetzen, Einrichten und Starten von XMame/XMess

Anmerkung: Dieses Kapitel ist kein Unix Handbuch. Du benötigst einige Grundkenntnisse von Unix-Befehlen um XMame/XMess übersetzen und installieren zu können.

2.1 Voraussetzungen

2.2 Schritt-für-Schritt Anleitung zum Übersetzen von XMame/XMess

  1. Siehe Betriebssystemabhängige Anmerkungen beim Übersetzen für plattformabhängige Informationen zum Übersetzen.
  2. Siehe Kommentare und Anmerkungen speziell für die grafische Ausgabe für Informationen zu speziellen Grafikausgaben.
  3. Lade den Sourcecode von XMame/XMess herunter.
  4. Verschiebe den Sourcecode in ein passendes Arbeitsverzeichnis. Wenn Du das Archiv auspackst, dann werden unter dem Arbeitsverzeichnis neue Unterverzeichnisse angelegt.
  5. Benenne das Source-Archiv um, damit die Endung .gz ist. Zum Beispiel ändere xmame-0.34b1.1.tgz in xmame-0.34b1.1.tar.gz
  6. Benutze gzip -d um das Archiv zu entpacken. Versuche beispielsweise:
    gzip -d xmame-0.34b1.1.tar.gz
     
  7. Extrahiere die Dateien mit tar. Tippe beispielsweise ein:
    tar xvf xmame-0.34b1.1.tar
    
  8. Wechsle nach dem entpacken des Archives in das Unterverzeichnis, dass beim Entpacken anglegt wurde. So wurde z.B. nach dem Entpacken von  xmame-0.34b1.1.tar ein Verzeichnis mit dem Namen xmame-0.34b1.1 angelegt. Wechsle dort hinein. Dieses Verzeichnis ist die Wurzel des Sourcen-Baumes.
  9. Kopiere makefile.unix zu Makefile. Das mitgelieferte Makefile wird zur Entwicklung benutzt und ist kein guter Ausgangspunkt !
  10. Editiere das Makefile und ändere die Einstellungen, die Dein System betreffen. Der Standard im  makefile.unix ist voreingestellt um unter X11/Linux zu laufen. Bitte vorsichtig sein beim Editieren dieser Datei.
  11. Übersetze XMame/XMess mit dem Befehl:
    make
     
  12. Wenn das Übersetzen fehlschlägt, dann berichte dieses Problem an den Author.
  13. *** DU MUSST ROOT-RECHTE HABEN UM DIESEN SCHRITT AUSZUFÜHREN ZU KÖNNEN ***  
    Um XMame/XMess zu installieren, gib folgendes ein:
    make install
     
  14. Nun kannst Du XMame/XMess für andere Anzeigearten übersetzen. Wenn dies nicht gewünscht, dann einfach diesen Schritt übergehen.
    1. Wenn Du also für eine anderes Ziel übersetzen willst, dann wiederhole die Schritte " make" und " make install" und füge dabei " TARGET=<target>" zum Kommando make hinzu. Beispiel:
      make TARGET=mess
      make install
        
      
    2. Wenn Du für eine andere Anzeigeart übersetzen willst, dann wiederhole die Schritte " make" und " make install" und füge dabei " DISPLAY_METHOD=<method>" zum Kommando make hinzu. Beispiel:
      make DISPLAY_METHOD=svgalib
      make install
        
      
    3. Du kannst auch die beiden Möglichkeiten von oben kombinieren. Beispiel:
      make TARGET=mess DISPLAY_METHOD=svgalib
      make install
        
      
  15. Lege in Deinem Home-Verzeichnis ein Unterverzeichnis namens .xmame an.
  16. Aus dem Source-Verzeichnis von XMame kopiere die Datei doc/xmamerc.dist nach ${HOME}/.xmame/ . (Für XMess natürlich xmessrc)
  17. Falls bevorzugt kopiere xmamerc.dist in den global gültigen Platz als "xmamerc" (für XMess kopiere die xmamerc.dist zu xmessrc). Der global gültige Platz für xmamerc wird im Makefile definiert.
  18. Editiere ${HOME}/.xmame/xmamerc und passe sie an die Einstellungen an. (Für XMess, editiere ${HOME}/.xmess/xmessrc)
  19. Vergewissere Dich, dass die Umgebungsvariablen DISPLAY und PATH richtig gesetzt sind.
  20. Vergewissere Dich, dass Deine ROM's installiert sind.
  21. Starte das X-Window System. (Wenn Du XMame/XMess für eine andere Anzeigeart übersetzt hast kann dieser Schritt ggf. entfallen.)
  22. Starte XMame/XMess. Beispielsweise:
    /usr/games/xmame.x11 dkong
     
    

2.3 Bei Problemen beim Übersetzen, Einrichten und Starten von XMame/XMess...

Wenn das alles nichts hilft, dann schicke eine Mail an den derzeitigen Koordinator des von XMame/XMess Projektes. Siehe Mail für nährere Informationen.

2.4 Betriebssystemabhängige Anmerkungen beim Übersetzen

Linux i386

Linux i386 ist die Plattform, die ich (Hans) benutze. XMame sollte also ohne Probleme unter Linux i386 zu Übersetzen sein (Anmerkung: dies gilt auch für Lawrence Gold).

Einige Fehler tauchten beim Benutzen von gcc27x auf und konnten behoben werden. Bitte egcs benutzen falls vorhanden. Wenn noch mehr Fehler in gcc auftauchen sollten, dann wird egcs zwingend werden. Aber ich hoffe, dass das nicht notwendig ist.

Es wurde berichtet, dass einige SoundBlaster AWE32 und VIA-82cxxx (OnBoard) Karten nicht korrekt mit get_freespace() umgehen können. Wenn dem so ist, dann werden einige Meldungen bzgl. audio_ioctl() failed in der Konsole auftauchen und, wenn alles richtig läuft, eine Meldung, dass XMame/XMess auf timer-basierte Soundunterstützung zurückfällt. Wenn dies nicht automatisch passiert und der Sound trotzdem nicht korrekt klingt, dann versuche XMame/XMess zur timer-basierten Soundausgabe zu zwingen mit dem Schalter -timer.

SB64/128PCI Karten (Ensoniq 137x-basierende Karten) können ebenfalls get_freespace() nicht richtig handeln. Unglücklicherweise tauchen keine Meldungen bzgl. audi_ioctl() auf. Diese Karten ignorieren die Aufrufe einfach. XMame versucht diese Karten automatisch zu erkennen und setzt dabei auf timer-basierte Soundunterstützung zurück. Wenn dies nicht automatisch funktioniert und der Sound nicht korrekt klingt, dann versuche XMame/XMess zur timer-basierten Soundausgabe zu zwingen mit dem Schalter -timer.

Einige Leute haben berichtet, dass sie bei ALSA mit OSS-Emulation erfolgreich waren (siehe http://www.alsa-project.org/ ). Wenn obige Probleme auch bei Dir auftauchen, dann kann dies möglicherweise einen Versuch wert sein. 

Zusätzlich habe ich das PC-Speaker Modul getestet. Es funktioniert !! Aber es benötigt ebenfalls -timer. Nochmals, dies sollte automatisch passieren. Wenn nicht, dann weisst Du ja nun was zu tun ist.

Distributionsabhängige Kommentare:

Linux PowerPC

Linux PowerPC sollte von nun an funktionieren. Hier ist eine Mail von Andreas Varga sid@skater.htu.tuwien.ac.at, dem Entwickler für Linux/PowerPC, die die notwendigen Schritte beschreibt:   

Notwendige Änderungen um XMame 0.34b3.1 auf Linux/PowerPC mit SVGALIB zu übersetzen.

Makefile:

Notwendige Änderungen um XMame 0.34b3.1 auf Linux/PowerPC mit X11 zu übersetzen.

Makefile:

Etwas anderes... Sound funktioniert nicht, weil die Unterstützung von Soundtreibern bei Linux/PPC Kerneln noch in der Entwicklung ist. Es gibt einen alten Treiber, ein gehackter Soundblaster Treiber und neuere 2.1.1xx Kernel haben einen Soundtreiber, der auf Amiga DMA Soundtreiber basiert. Wenn diese Einschränkungen behoben sind, dann sollte ein vollwertiger OSS-kompatibler Soundtreiber zur Verfügung stehen.... dann sollte der Sound auch funktionieren.

Ich kann nichts über Joystick Unterstützung sagen ...

Die Änderungen im Übersetzungsziel Linux/PPC im Makefile stammen von mir selbst, aber es sind einige weitere Änderungen notwendig um es übersetzen zu können ... Von Oktober ab habe ich mehr Zeit um daran zu arbeiten, und ich werde euch regelmäßig informieren...

Cheers, Andreas

IRIX

Benutze die allgemeine Unix-Architektur für diese Maschinen, die keine Soundunterstützung installiert haben (XMame/XMess nutzt das dmedia Paket oder das neuere AL Paket auf IRIX Systemen).

Silicon Graphics unterstützt mehrere native Compiler. XMame/XMess wurden übersetzt und getestet mit dem normalen cc. Es gab einige Probleme, wenn -n32 für den neuen 32bit Code verwendet wird. Es funktioniert beim Benutzen von -o32 für den alten 32bit Code. Es sollte nun auch mit -n32 funktionieren und um Einiges schneller sein..

Die Benutzung von DCC ist (wieder mal) nicht empfohlen seit dies ein C++ Compiler ist. Das Übersetzen von XMame/XMess wird ohne Änderungen im Sourcecode nicht klappen wegen etlicher malloc Aufrufe. Das Ändern dieser Aufrufe würde einen verrückt machen, weil die Fehler auch im Core-Teil auftauchen, der aber von der DOS-Version kommt. Ganz nebenbei, Mame ist in normalen C geschrieben, deshalb bitte einen normalen C-Compiler verwenden.

Einige Probleme wurden gemeldet bei der Benutzung des GNU Linkers. Es ist besser, den Linker des Betriebssystems zu verwenden.

HPUX

Benutze bitte die allgemeine Unix Architektur (generic unix). In HP-UX sind gcc und gnu-Make VORAUSSETZUNG.

ULTRIX

Benutze bitte die allgemeine Unix Architektur (generic unix).

Anmerkungen von Danny dboxhoor@iso.vilspa.esa.es

SEHR WICHTIG !!!

Die Xmame/Xmess CPU-Emulatoren greifen auf Speicher durch Zeiger (Pointer) zu, die manchmal einen illegalen Speicherzugriff verursachen - soweit die MIPS CPU davon betroffen ist. Das Ultrix Betriebssystem behebt diese "unerlaubten Datenzugriffe". 

In Abhängigkeit der Systemeinstellung, werden jede Menge Warnungen ausgegeben bei bestimmten Spielen. Diese Meldungen können  abgeschaltet werden, wenn man das Kommando "uac p 0" in der selben Shell eingibt, von der aus Xmame/Xmess gestartet wird.

UPDATE: Der neue Schalter -DALIGN_INTS im makefile.unix behebt diese unerlaubten Zugriffe im Sourcecode was natürlich viel schneller ist, als diesen Fehler im Kernel segfault handler per Hotfix zu beheben.

Benutze GNU make.

Übersetze mit dem 'c89' Compiler. Obwohl gcc keine Probleme beim Übersetzen und optimieren von Xmame/Xmess macht, ist die ausführbare Datei mit c89 übersetzt schneller auf einer unbelasteten Maschine (Xmame kann die ganze CPU und den ganzen Speicher benutzen, ohne mit anderen hochprioren Prozessen zu kollidieren), somit kann "frameskip 1" gesetzt werden.

Wenn mit "c89 -O2" übersetzt wird, dann nicht vergessen, ebenfalls "-Olimit 1000 zu setzen. Wenn 1000 nicht genug ist, dann teilt der Compiler mit, daß der Wert erhöht werden muß.

SunOS & Solaris

Im Makefile sind zwei relevante Optionen für die verschiedenen Architekturen vorhanden:

    ARCH = generic : dies ist für das alte SunOS auf den Sparcs, aber
                     eine Sparc mit Solaris darauf wird natürlich mit
                     dieser Option auch umgehen können
    ARCH = solaris : dies sollte man für Sparcs mit Solaris benutzen

Momentan wird kein Sound unterstützt unter SunOS. Die Solaris Architektur unterstützt Sound.

Wenn Sun's OpenWindows Implementation von X11 benutzt wird, dann müssen die Variablen X11INC und X11LIB in der X11 Options Sektion des Makefiles korrekt gesetzt sein. (Es sind bereits Einträge für das Standard OpenWin-Verzeichnis vorhanden. Diese können auskommentiert werden).

Wenn natürlich für X11 übersetzt wird, dann müssen diese Variablen korrekt gesetzt sein, unabhängig von der X11-Implementation, die verwendet wird ! :)

Wenn der SunPro cc Compiler von Sun verwendet wird, dann haben sich folgende Flags zum Optimieren bewährt:

    OPTFLAGS    = -fast -xO4 -native

Es sind Fälle aufgetreten, bei denen die Übersetzung von Xmame am Program "ar" gescheitert ist. Die meisten Solaris Installationen haben einen Satz Utilities die mit dem XPG4-Standard konform sind, üblicherweise im Verzeichins "/usr/xpg4/bin" zu finden. Die XPG4-Version von "ar" sollte wie eine Plage gemieden werden. Es muß sichergestellt werden, daß im Suchpfad "/usr/ccs/bin" vor dem Verzeichnis "/usr/xpg4/bin" erscheint und alles sollte sauber laufen.

BITTE BEACHTEN: Derzeit gibt es nicht sonderlich viel Unterstützung für SunOS/Solaris. Wenn ein Problem auftritt, versuche es selbst zu lösen. Wenn Du erfolgreich bist, sende eine Mitteilung an die Mailingliste mit den Angaben, was Du dafür getan hast. Wenn Du keinen Erfolg hast, sende trotzdem eine Mitteilung an die Mailingliste und jemand _könnte_ Dir vielleicht helfen. Trotz alledem, dies ist der einzige Weg, wie Probleme mit Xmame unter SunOS/Solaris behoben werden können. 

Openstep

Du musst den gnumake von OpenStep benutzen, NICHT make. Ausserdem ist NeXT/Apple cc dem gcc vorzuziehen. Nur die Optimierung nutzen, die für OpenStep im Makefile vorgesehen sind, sonst wird die ausführbare Datei abstürzen. Der OpenStep Assembler ist auf i386-Architekturen nicht kompatibel mit dem Assemblercode von Mame. Deshalb muss die C-Version benutzt werden (benutze i386-noasm anstatt i386, wenn für i386 übersetzt wird).

Der mitgelieferte Compiler basiert auf dem gcc 2.7.2.1 und kann src/profiler.c nicht ohne Absturz übersetzen. Um dies zu Umgehen gehe folgendermaßen vor: Optimiereun abschalten, wenn der Fehler auftritt. Make für diese Datei nochmals ausführen und Make beenden. Optmierung wieder aktivieren und fortfahren.

Auf einer OpenStep Tastatur funktionieren die Funktionstasten nicht wie vorgesehen. Das Benutzen der Kommando-Taste in Verbindung mit einer Ziffern-Taste erzeugt eine äquivalente Funktionstaste innerhalb von XMame. Mit 0 , - und = + wird F10, F11 und F12 erzeugt. Bitte auch beachten, dass die Kombinationen ALT + Taste nicht gemapped werden können. Da die meisten Spiele dies als Feuertaste voreingestellt haben ist es extrem nützlich diese Tasten umzusetzen beim ersten Start von XMame.


Weiter Zurück Inhalt