Anmerkung: Dieses Kapitel ist kein Unix Handbuch. Du benötigst einige Grundkenntnisse von Unix-Befehlen um XMame/XMess übersetzen und installieren zu können.
-fno-strict-aliasing
um das
zu Beheben. Gcc-2.95.1 funktioniert mit -fstrict-aliasing
und
bringt netterweise etwas höhere Geschwindigkeit. -fstrict-aliasing
).
xmame-0.34b1.1.tgz
in
xmame-0.34b1.1.tar.gz
gzip -d xmame-0.34b1.1.tar.gz
tar xvf xmame-0.34b1.1.tar
xmame-0.34b1.1
angelegt. Wechsle
dort hinein. Dieses Verzeichnis ist die Wurzel des Sourcen-Baumes.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.
make xlistdev; ./xlistdev
make
make install
"
make"
und "
make install"
und füge dabei "
TARGET=<target>"
zum Kommando make hinzu. Beispiel:
make TARGET=mess make install
"
make"
und "
make install"
und füge dabei "
DISPLAY_METHOD=<method>"
zum Kommando make hinzu. Beispiel:
make DISPLAY_METHOD=svgalib make install
make TARGET=mess DISPLAY_METHOD=svgalib make install
/usr/games/xmame.x11 dkong
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.
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 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
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.
Benutze bitte die allgemeine Unix Architektur (generic unix). In HP-UX sind gcc und gnu-Make VORAUSSETZUNG.
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ß.
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.
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.