Top: International: Italiano: Computer: Software: Emulatori: Xmame




[ history ]

Cos'è Xmame e come funziona

Xmame è la risposta per Linux del progetto MAME, ovvero un emulatore di giochi arcade. Per intenderci i giochini da bar tipo Metal Slug o Puzzle Bobble. Per potere giocare a questi giochi è necessario scaricarsi l'emulatore Xmame e in seguito i vari giochi contenuti in file .zip detti ROM (probabilmente perchè le Read Only Memory sono quelle in cui sono salvati i giochi nelle macchinette).
Per prima cosa quindi colleghiamoci al sito http://x.mame.net e scarichiamoci l'ultima versione dell'emulatore Xmame. Al momento della stesura del testo è la 0.65.1, anche se è consigliabile il download dei sorgenti, anche se la loro compilazione sarà un pò lunga, perchè almeno saprete come avete configurato l'emulatore.
Una volta scaricato il file, basta salvarlo in una directory temporanea, oppure adibita ai sorgenti, come /usr/local/src.
Il file è chiamato xmame-0.65.1.tar.bz2 .


[ history ]

Decomprimiamo i sorgenti

Diamo i comandi:

$bunzip2 xmame-0.65.1.tar.bz2
$tar xvf xmame-0.65.1.tar
$cd xmame-0.65.1


[ history ]

Requisiti

Per essere compilato e per girare il programma necessita di:
- (Gnu) make
- zlib
- gcc: la compilazione fallisce con versione gcc-2.95. Se possedete questa versione dovrete usare l'opzione -fno-strict-aliasing. Con altre versioni potete abilitare invece -fstrict-aliasing.


[ history ]

Preparazione alla compilazione

Per configurare xmame non c'è il comando ./configure e dovremo quindi mettere mano al makefile direttamente. Per prima cosa copiamo il makefile per unix come nome Makefile:

$cp makefile.unix Makefile
$emacs Makefile

Vediamone le singole parti:

###########################################################################
# Xmame or xmess or...?
###########################################################################

# Uncomment one of these.
TARGET = mame
# TARGET = mess
# TARGET = neomame
# TARGET = cpmame
# TARGET = mmsnd
# example for a tiny compile
# TARGET = tiny


In questa parte dovete decommentare (togliere il # ad inizio linea) una delle voci TARGET. Decommentiamo, come riportato, la voce TARGET = mame (ovvero attiveremo l'emulatore xmame).
Andiamo alla sezione "Choose your compiler":

###########################################################################
# Choose your compiler.
###########################################################################

# Support for the Intel C++ Compiler is new and experimental. Be sure
# to check the CFLAGS, RANLIB, IL, LD, and MY_CPU sections in this
# makefile. If you've set up a nice environment or alias or wrapper
# script, then you can use `icc'.
#
# Use of `c89' is recommend for Ultrix as it generates faster code, which
# means fewer frames to be skipped and better graphics, but `gcc' works
# just as well. However, stay away from the `cc' Ultrix compiler if
# possible.

CC = gcc
# CC = cc
# CC = icc
# CC = c89


Dobbiamo decommentare il tipo di compilatore che useremo. Nel caso che abbiamo gcc, decommentiamo la prima linea. Passiamo a due sezioni dopo (il resto non lo modifichiamo):

###########################################################################
# Choose from some preset CFLAGS. Or, if you want to tweak some more, skip
# this section.
###########################################################################

# gcc on x86
#CFLAGS = -O -Wall -Wno-unused

# gcc on x86 with some optimizations
CFLAGS = -O2 -Wall -Wno-unused -mcpu=i686 -fomit-frame-pointer -fstrict-aliasing -fstrength-reduce -ffast-math

# gcc on Linux/PowerPC
# CFLAGS = -O2 -Wall -Wno-unused -funroll-loops -fstrength-reduce -fomit-frame-pointer -ffast-math -fsigned-char

# gcc on OpenStep/Intel
# CFLAGS = -O2 -Wall -Wno-unused -finline-functions -ffast-math -fstrength-reduce -traditional-cpp

# gcc on OpenStep/PPC or Mac OS X
# CFLAGS = -O2 -Wall -Wno-unused -funroll-loops -traditional-cpp -fstrength-reduce -fomit-frame-pointer -ffast-math -fsigned-char

# IRIX MIPSpro with really serious optimization for R10K O2
# CFLAGS = -fullwarn -n32 -mips4 -Ofast=ip32_10k -TARG:platform=ip32_10k -OPT:Olimit=0 -IPA

# IRIX with more general optimization for R5+K MIPS machines
# CFLAGS = -fullwarn -n32 -mips4 -Ofast -OPT:Olimit=0 -IPA

# IRIX with R4K MIPS chips (older Indys, Indigo2s, etc).
# CFLAGS = -fullwarn -n32 -mips3 -Ofast -OPT:Olimit=0 -IPA

# PlayStation2 Linux
# CFLAGS = -O2 -mcpu=r5900 -Wall -Wno-unused -fsingle-precision-constant -fstrength-reduce -fomit-frame-pointer -ffast-math -fsigned-char -pipe -malign-loops=2 -malign-jumps=2 -funroll-loops


In questa sezioni dobbiamo scegliere con quali opzioni verrà eseguita la compilazione. Vengono proposte ottimizzazioni preimpostate per sistemi tipo. Nel caso abbiamo il compilatore gcc possiamo decommentare o la prima riga o la seconda. La seconda fornisce però anche alcune ottimizzazioni.
Nel caso abbiamo scelto una di queste ottimizzazioni già impostate (come un pacchetto unico) possiamo saltare le sezioni successive fino ad arrivare a quella denominata "Install method and paths for the executable, man pages, and data". Altrimenti se volete scegliere le ottimizzazioni una per una potete decommentare le ottimizzazioni proposte sotto fino ad arrivare alla sezione "Inlining". Supponendo che sappiate quello che state facendo nel caso della singola scelta, passiamo oltre.
Saltiamo la sezione Inlining e Linking che di solito sono giuste e servono per alcune operazioni della compilazione. Arriviamo alla sezione "Install method and paths for the executable, man pages, and data". Vediamola:

###########################################################################
# Install method and paths for the executable, man pages, and data
###########################################################################

# OSes that don't have an install command should use the provided
# install.sh script.
INSTALL = /usr/bin/install
# INSTALL = install-sh
# INSTALL = /bin/install
# INSTALL = install # e.g., for BeOS

# The user and group to be used for installation.
INSTALL_USER = root
INSTALL_GROUP = bin

INSTALL_PROGRAM_DIR = $(INSTALL) -d -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 755
INSTALL_MAN_DIR = $(INSTALL) -d -o $(INSTALL_USER) -g 0 -m 755
INSTALL_DATA_DIR = $(INSTALL) -d -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 755
INSTALL_PROGRAM = $(INSTALL) -c -s -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 555
INSTALL_PROGRAM_SUID = $(INSTALL) -c -s -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 4555
INSTALL_MAN = $(INSTALL) -c -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 444
INSTALL_DATA = $(INSTALL) -c -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 644


Di queste righe quelle da controllare sono le prime, dove si definisce il percorso dell'eseguibile "install" utilizzato per installare xmame nella sua directory finale. Dovete decommentare il PATH corretto. Per saperlo date un "which install". Nella maggioranza dei casi questo sarò in /usr/bin/install. In questo caso decommentiamo la prima riga.
Passiamo alla sezione "Configuration files and directories":

###########################################################################
# Configuration files and directories
###########################################################################

# Select destination directory for your compiled program, manual page,
# and binary distribution.
ifndef PREFIX
PREFIX = /usr/local/xmame
endif
BINDIR = $(PREFIX)/bin
MANDIR = $(PREFIX)/share/man/man6

# This is the default path for ROMs and other data files.
XMAMEROOT = $(PREFIX)/share/x$(TARGET)


In questa sezione definiamo tutte le directory dove vorremo installare l'emulatore. La prima riga "PREFIX=/usr/local/xmame" definisce la directory in cui saranno installati tutti i file fi xmame. Di default non è questa, ma io preferisco installare tutti i file in una directory conosciuta per poterli poi, eventualmente, eliminare facilmente. La riga "BINDIR=$(PREFIX)/bin" indica la directory nella quale installerà l'eseguibile di xmame. In questo caso sarà /usr/local/xmame/bin. La riga "MANDIR=$(PREFIX)/share/man/man6" indica la directory dove installerà le pagine di manuale. In questo caso sarà /usr/local/xmame/share/man/man6. Abbiamo infine "XMAMEROOT=$(PREFIX)/share/x$(TARGET)" che indica la directory in cui dovranno essere piazzate le ROM (i file .zip dei giochi scaricati) per potere essere riconosciute da xmame e quindi eseguite. In questo caso è /usr/local/xmame/share/xmame (dato che $TARGET è uguale a "mame"). Potete anche specificare un'altra directory, magari /usr/local/xmame/roms.
Passiamo ora alla sezione "Input devices". In questa sezione potete abilitare l'uso del Joystick, decommentando il tipo di joystick che avete a disposizione:

###########################################################################
# Input Devices
###########################################################################

# Uncomment any joystick types that you want to use; the one that is
# actually used can be selected at runtime with the -joytype switch.

# X Input Extensions-based joystick. This is known to not work right now.
# JOY_X11 = 1

# On x86-based OSes, if supported, you can use standard joystick driver.
# JOY_I386 = 1

# Linux FM-TOWNS game pad joystick emulation support. Thanks to Osamu
# Kurati.
# JOY_PAD = 1

# NetBSD/FreeBSD USB joystick support.
# JOY_USB = 1

# PlayStation2-linux native pad support.
# JOY_PS2 = 1


Passiamo alla sezione "Sound Devices":

###########################################################################
# Sound Devices
###########################################################################

# Choose any additonal sound drivers you want to include, besides the
# native sound driver for your system.
# SOUND_ESOUND = 1
# SOUND_ALSA = 1
SOUND_ARTS_TEIRA = 1
SOUND_ARTS_SMOTEK = 1
# SOUND_SDL= 1
# SOUND_WAVEOUT = 1


Dovete decommentare che tipo di driver sonoro volete usare. Se usate Gnome e avete a disposizione Esound, decommentate la prima riga. Se usate ALSA decommentate la seconda. Se usate KDE, per potere mixxare i suoni di più applicazioni, dovete usare aRts e decommentate quindi la terza e quarta riga (come nell'esempio). Se usate SDL la quinta.
Passiamo alla sezione "Select your display method; choose only one.":

###########################################################################
# Select your display method; choose only one.
###########################################################################

# Note: x11 is the only one supported on almost all platforms. For BeOS,
# use SDL.

# X11
DISPLAY_METHOD = x11

# SDL library
# DISPLAY_METHOD = SDL

# SVGALib, only supported under Linux
# DISPLAY_METHOD = svgalib

# GGI, only tested under Linux
# DISPLAY_METHOD = ggi

# OpenGL under X11, known to be partly/fully broken right now. :~(
# DISPLAY_METHOD = xgl

# Glide under X11
# DISPLAY_METHOD = xfx

# Glide in console mode
# DISPLAY_METHOD = svgafx

# OpenStep bitmaps
# DISPLAY_METHOD = openstep

# Photon 2.x (QNX6), currently buggy, but working...
# DISPLAY_METHOD = photon2


Dovete scegliere il tipo di Output video che userete. Attenzione: dovete sceglierne soltanto uno. Se intendete usare X11 allora decommentate "DISPLAY_METHOD = x11". Se usate SDL la seconda voce, se usate le librerie SVGA allora la terza, se intendete usate OpenGL sotto X11 decommentate quinta.
Avete poi varie sezioni che permettono di definire le opzione per l'output video che avete scelto. La sezione di X11 permette ad esempio di abilitare le estenzioni XV (decommentate la riga se le avete, lo consiglio), se usare le estensioni DGA (Direct Graphic Access, accesso diretto alla grafica) che permettono un incremento di prestazioni ma dovreste essere root o dare suid a xmame per usarle, eccetera... Penso che riusciate a cavarvela in questa parte.
Salvate il Makefile e dategli un'altra controllatina.


[ history ]

Compiliazione ed installazione di Xmame

Per compilare xmame diamo il comando:

$make

La compilazione prenderà parecchio tempo. Una volta finita la compilazione (controllate se ha avuto successo) date il comando:

#make install

Sarà necessario dare questo comando da root. Il tutto verrà installato in $PREFIX. La cartella scelta sarà creata automaticamente da "install" e non dovrete dare nessun "mkdir...". Una volta completata l'installazione, proseguiamo con la configurazione.


[ history ]

Configurazione di Xmame

Per prima cosa entriamo nella nostra HOME e creiamo la directory .xmame:

$cd ~
$mkdir .xmame


poi ci copiamo il file di configurazione presente nella directory doc/ dei sorgenti di xmame:

$cp /usr/local/xmame/doc/xmamerc.dist .xmame/xmamerc

e lo modifichiamo a nostro piacimento. In questo modo ogni utente avrà le impostazioni personalizzate per girare xmame. Se invece non abbiamo questa necessità, possiamo copiare il file di configurazione nella XMAMEROOT e settare così delle impostazioni di default valide per tutti:

$cp /usr/local/src/xmame/doc/xmamerc.dist /usr/local/xmame/share/xmame/xmamerc

Possiamo quindi modificare il file di configurazione per settare le opzioni di default. Le opzioni sono facilmente intuibili e i loro valori possono essere tratti facendo partire xmame con l'opzione "--help". Del file xmamerc ci soffermiamo solo sulla parte dei file:

### Fileio Related ###
rompath /usr/local/xmame/share/xmame
snapshot_directory .
cheat_file /usr/local/xmame/share/xmame/cheat.dat
hiscore_file /usr/local/xmame/share/xmame/hiscore.dat
history_file /usr/local/xmame/share/xmame/history.dat
mameinfo_file /usr/local/xmame/share/xmame/mameinfo.dat


Assicuriamoci che la rompath sia equivalente alla XMAMEROOT. La snaposhot_directory è la directory in cui verranno salvate le istantanee della videata. Il cheat_file, hiscore_file, history_file, mameinfo_file sono i file che salvano e consentono i trucchi, i punteggi più alti, la history e le informazioni su mame. Per comodità li mettiamo tutti nella XMAMEROOT.
Salvato il file di configurazione, assicuriamoci che la directory XMAMEROOT sia accessibile in lettura-scrittura-eseguibile (rwx) dagli utenti che avranno accesso ai giochi. Nel caso più semplice impostiamo che tutti gli utenti possono scrivere nella XMAMEROOT. Questo permette a tutti gli utenti di scaricare e installare nuovi giochi, di salvare i proprio Highscores e di scrivere tutti quei files che ho menzionato sopra. In questo caso diamo:

#chmod 777 /usr/local/xmame/share/xmame

Altrimenti possiamo fare in modo che solo un gruppo di utenti possa svolgere questa funzione. Creiamo il gruppo, diamo "chgrp nomegruppo XMAMEROOT" e poi "chmod 770 XMAMEROOT" (in questo esempio solo gli utenti appartenenti al gruppo hanno accesso alla directory dei giochi con pieni permessi, ma possono esserci svariate altre combinazioni).
Fatto questo dobbiamo inserire la directory del binario di xmame nel PATH. Apriamo quindi il file /etc/profile (nella Slack, ma penso anche nelle altre) e troviamo la riga:

# Set the default system $PATH:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/sbin:/usr/sbin:$JAVA_HOME/bin:/usr/local/gphoto/bin:/usr/local/mplayer/bin";


e modifichiamola aggiungendo BINDIR alla fine:

# Set the default system $PATH: PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/sbin:/usr/sbin:$JAVA_HOME/bin:/usr/local/gphoto/bin:/usr/local/mplayer/bin:/usr/local/xmame/bin";

Al riavvio basterà digitare

$xmame.x11

(se avete usate x11 come output) per fare partire xmame. Per comodità possiamo rinominare quel binario in "xmame".


[ history ]

I giochi

Le ROM dei giochi le potete scaricare dal sito che pare sia più fornito: http://www.mame.dk.
Dovete registrarvi per potere scaricare i giochi. Riconoscerete il file del gioco perchè la parte prima dell'estenzione .zip è simile al nome (ovviamente). In alcuni giochi, specialmente quelli della NeoGeo, dovete scaricarvi anche le ROM della casa produttrice. Su mame.dk, queste sono scaricabili proprio sotto il nome della ROM del gioco.
Scaricate quindi le ROM necessarie nella directory XMAMEROOT.


[ history ]

Giochiamo

Xmame così com'è non ha frontend e quindi bisogna specificare direttamente da linea di comando il nome del gioco. Per fare partire xmame la sintassi è:

$xmame [opzioni] nomegioco

Le opzioni di default vengono lette nei file di configurazione. Se specificate a linea di comando allora quelle del file di configurazione vengono inibite. Per avere la lista delle opzioni date il comando "xmame --help". Il nome del gioco altro non è che il nome del file .zip esclusa l'estenzione .zip. Se per esempio ho scaricato Metal Slug, che ha per nome mslug.zip, darò il comando:

$xmame mslug

A questo punto parte il gioco. Se vi da errori di NOT FOUND controllate dove avete messo la ROM e specialmente se avete scaricato anche la ROM della casa produttrice (per metal slug dovete scaricare due file: il gioco e neogeo.zip).
Una volta partito, per inserire la moneta premete 5 e per giocare (1° giocatore) premete 1. Per avere la lista delle opzioni premete TAB. Per avere la lista completa dei comandi leggete la documentazione nei sorgenti.


[ history ]

based

1. http://opensp.altervista.org/



 All text is available under the terms of the GNU Free Documentation License. (See Copyright Policy for details.) 
© Open-Site Foundation, Inc.
Hosted by Android Technologies, Inc. the medical robotics news source.
Visit our sister sites dmoz.org | mozilla.org | chefmoz.org | musicmoz.org