DEBIAN + MAME + ARCADE BOX = MAMECAB


I. NOTE


Ce document commencé en Mars 2011 décrit l'installation de ma MAMECab avec:

II. PRÉPARATIFS


Squeeze J'ai choisi la distribution Debian Squeeze (stable à ce jour en version 6.0.0) depuis la page officielle Debian : Pour la suite de cette installation j'ai pris la Netinst 32 bits http://cdimage.debian.org/debian-cd/6.0.1/i386/iso-cd/debian-6.0.1a-i386-netinst.iso correspondant à ma carte-mère. Si vous souhaitez aider le projet Debian et obtenir un jooooli CD rendez-vous sur DebianCD.org. Vous avez le CD en main? Nous voici prêt à installer le système de base!

Au besoin, passer par le BIOS de votre carte mère pour faire booter le PC sur le CDROM avant le disque-dur.


III. SYSTÈME DE BASE


L'installation "classique" est détaillée ci-dessous en client DHCP, avec formatage du disque entier et en une unique partition, avec création du compte utilisateur "puckman". Si vous avez besoin d'éclaircissements au cours de l'installation du système, n'hésitez pas à consulter le manuel d'aide officiel. J'ai marqué les points importants en gras ci-dessous:


screenshot
Accueil lors du boot sur le CDROM d'installation de Debian 6.0.0 Squeeze: j'ai choisi l'installation en mode console

screenshot
Choix de la langue

screenshot
Situation géographique

screenshot

screenshot

screenshot
Chargement des composants et détection du réseau: je n'ai pas utilisé d'adresse IP fixe mais vous pouvez en spécifier une.

screenshot
Choix du nom de la borne: notez-le bien si vous êtes en réseau.

screenshot
Entrez le nom de domaine local

screenshot
Saisie du mot de passe "root": ne l'oubliez pas!

screenshot
Choix de l'utilisateur, je l'ai appelé "puckman": retenez son nom si vous en choisissez un autre.

screenshot
Saisie de son mot de passe

screenshot

screenshot
J'ai choisi le partitionnement du disque entier: toutes les données du disque seront effacées!

screenshot
Je n'ai qu'un disque à sélectionner

screenshot
J'ai simplement choisi une unique partition pour le système et les données utilisateur

screenshot

screenshot
Attention, pas de retour en arrière une fois le disque formaté!

screenshot

screenshot
Choisir un dépôt de paquets proche de votre lieu géographique

screenshot

screenshot

screenshot
J'ai choisi le "Serveur de fichiers" pour permettre l'accès à des dossiers locaux depuis un poste distant (pour la copie des ROMs par exemple), le "Serveur SSH" pour la maintenance à distance (le clavier ne sera pas nécessaire sur la borne) et les "Utilitaires standard du système" pour bénéficier d'un minimum d'outils. On démarre une borne minimaliste mais faut pas exagérer :-)
Idem pour les gestionnaires de bureau, point de KDE ni GNOME: nous nous contenterons simplement du serveur graphique X.

screenshot
Installation des paquets

screenshot
Choix du groupe de travail pour le partage de fichier avec Samba (installé avec NFS suite au choix du "Serveur de fichiers"). Mettez celui approprié à votre réseau si vous disposez de plusieurs postes connectés.

screenshot
Installation du chargeur de démarrage GRUB

screenshot
Fin de l'installation

screenshot
Retirer le CDROM avant le re-démarrage

screenshot
Reboot

screenshot
Moment émouvant du premier boot ;-)

screenshot
Bienvenue!


Pour simplifier les choses dans la suite mon installation, j'utilise une connexion distante par SSH depuis un poste de travail, libre à vous de continuer sur la machine locale.
Pour établir une connexion SSH distante, il faut récupérer l'adresse IP de la borne (passez cette étape si vous avez spécifié une IP fixe):

screenshot



IV. CONNEXION DISTANTE


Sur mon poste de travail GNU/Linux "kanumera", je peux dès lors me connecter via SSH sur la borne "mamecab" (à l'adresse récupérée ci-dessus) avec la commande "ssh utilisateur@machine":
ludo@kanumera:~$ ssh root@192.168.100.223

The authenticity of host '192.168.100.223 (192.168.100.223)' can't be established.
RSA key fingerprint is f9:ed:b1:36:8a:dd:bd:e6:6d:5c:38:42:0e:5a:d5:c0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.223' (RSA) to the list of known hosts.
root@192.168.100.223's password: 
Linux mamecab 2.6.32-5-686 #1 SMP Tue Mar 8 21:36:00 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Mar 22 15:48:24 2011
/usr/bin/xauth:  creating new authority file /root/.Xauthority
root@mamecab:~# 


funny


V. PARTAGE DE FICHIERS


Activons ensuite le partage de fichiers via SAMBA avec authentification obligatoire afin de permettre plus tard la copie de fichiers depuis un portable par exemple. Pour cela je commence par une copie de sauvegarde du fichier de configuration original:
root@mamecab:~# cp /etc/samba/smb.conf /etc/samba/smb.conf_orig


Puis j'édite ce fichier:
root@mamecab:~# pico /etc/samba/smb.conf


Dé-commenter la ligne n°102 (enlever le "#") en s'y rendant avec le raccourci CTRL+_ :
/etc/samba/smb.conf (line 96)
  1. ####### Authentication #######
  2.  
  3. # "security = user" is always a good idea. This will require a Unix account
  4. # in this server for every user accessing the server. See
  5. # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
  6. # in the samba-doc package for details.
  7. #   security = user

modifié en:
/etc/samba/smb.conf (line 102)
  1. security = user


Et passer le partage des dossiers utilisateurs en mode lecture/écriture (ligne 242) :
/etc/samba/smb.conf (line 234)
  1. #======================= Share Definitions =======================
  2.  
  3. [homes]
  4.    comment = Home Directories
  5.    browseable = no
  6.  
  7. # By default, the home directories are exported read-only. Change the
  8. # next parameter to 'no' if you want to be able to write to them.
  9.    read only = yes

modifié:
/etc/samba/smb.conf (line 242)
  1. read only = no


Puis CTRL+X pour fermer l'éditeur "pico".
Répondre "O" à la question de l'éditeur: "Sauver l'espace modifié (RÉPONDRE « Non » EFFACERA LES CHANGEMENTS) ?", et ENTRÉE pour valider le nom du fichier. Nous voilà revenus au prompt.

Demander à SAMBA de recharger sa configuration:
root@mamecab:~# /etc/init.d/samba reload

Reloading /etc/samba/smb.conf: smbd only.


Et ajouter notre compte utilisateur "puckman" (choisi lors de l'installation du système) aux comptes autorisés à se connecter via SAMBA (il sera demandé de saisir deux fois le mot de passe sans qu'il s'affiche à l'écran) :
root@mamecab:~# smbpasswd -a puckman

New SMB password:
Retype new SMB password:
Added user puckman.


Et voilà! Je peux me connecter au dossier de l'utilisateur "puckman" sur la machine "mamecab" (192.168.100.223) depuis le réseau (qui peut être un PC ou un boîtier multimédia par exemple). Nous y mettrons MAME et tous les fichiers nécessaires à son fonctionnement.
Ici, je fais le test depuis la propre borne (pas très utile... mais ça permet de tester le bon fonctionnement du partage réseau SAMBA) :
root@mamecab:~# smbclient -U puckman //localhost/puckman

Enter puckman's password: 
Domain=[LUDOMATIC] OS=[Unix] Server=[Samba 3.5.6]
smb: \> dir
  .                                   D        0  Tue Mar 22 12:06:45 2011
  ..                                  D        0  Tue Mar 22 12:04:34 2011
  .bash_logout                        H      220  Tue Mar 22 12:04:34 2011
  .bashrc                             H     3184  Tue Mar 22 12:04:34 2011
  .bash_history                       H       23  Tue Mar 22 12:06:45 2011
  .profile                            H      675  Tue Mar 22 12:04:34 2011

		61026 blocks of size 65536. 43188 blocks available
smb: \> exit

ou depuis le poste de travail:
screenshot


screenshot



VI. MAME


VI.a Préparation des outils


Avant d'installer MAME ou même les outil dont nous aurons besoin pour la suite, il faut mettre à jour la liste des paquets Debian avec la commande aptitude update. Pensez à faire cette mise à jour régulièrement avant d'installer de nouveaux paquets:
root@mamecab:~# aptitude update

Atteint http://ftp.nc.debian.org squeeze Release.gpg
[...]       
Atteint http://security.debian.org squeeze/updates/main Sources
Prendre : 3 http://security.debian.org squeeze/updates/main i386 Packages [68,8 kB]
 108 ko téléchargés en 2s (43,8 ko/s)



Frankenstein Une fois la liste des paquets disponibles à jour, passons à leur installation:
En une ligne de commande:
root@mamecab:~# aptitude install unzip unrar-free build-essential libsdl1.2debian libsdl1.2-dev libsdl-ttf2.0-0 libsdl-ttf2.0-dev libexpat1 libexpat1-dev zlib1g zlib1g-dev libxinerama1 libxinerama-dev libgconf2-4 libgconf2-dev libgtk2.0-0 libgtk2.0-dev

Les NOUVEAUX paquets suivants vont être installés : 
  autopoint{a} binutils{a} build-essential bzip2{a} cpp{a} cpp-4.4{a} 
[...]
  xtrans-dev{a} zlib1g-dev 
0 paquets mis à jour, 200 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 103 Mo d'archives. Après dépaquetage, 298 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
Prendre : 1 http://ftp.nc.debian.org/debian/ squeeze/main x11proto-core-dev all 7.0.16-1 [92,2 kB]
Prendre : 2 http://ftp.nc.debian.org/debian/ squeeze/main libice-dev i386 2:1.0.6-2 [58,5 kB]
[...]
Paramétrage de g++ (4:4.4.5-1) ...
update-alternatives: utilisation de « /usr/bin/g++ » pour fournir « /usr/bin/c++ » (c++) en mode automatique.
Paramétrage de build-essential (11.5) ...


N'ayant plus de tâches administratives à effectuer pour le moment, il faut quitter l'accès super-utilisateur et se connecter avec l'utilisateur puckman. On peut effectuer une nouvelle connexion depuis la machine de bureau:
ludo@kanumera:~$ ssh puckman@192.168.100.223
puckman@192.168.100.223's password: 
Linux mamecab 2.6.32-5-686 #1 SMP Tue Mar 8 21:36:00 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
/usr/bin/xauth:  creating new authority file /home/puckman/.Xauthority
puckman@mamecab:~$ 

ou alors passer à l'utilisateur puckman depuis le super-utilisateur root:
root@mamecab:~# su - puckman
puckman@mamecab:~$


Oui, on arrive enfin à la partie MAME :)


VI.b Récupération des sources MAME


Préparer un nouveau dossier de travail, nous y mettrons les sources:
puckman@mamecab:~$ mkdir sources
puckman@mamecab:~$ cd sources
puckman@mamecab:~/sources$


Les sources de MAME sont disponibles sur http://mamedev.org (site officiel). Je conseille de travailler avec les sources stables "release" plutôt que les "updates" intermédiaires qui sont des versions de développement. Il faut récupérer le lien du fichier ZIP depuis la page http://mamedev.org/release.html, pour ma part la version actuelle est la 0.142 http://mamedev.org/downloader.php?file=releases/mame0142s.zip :
puckman@mamecab:~/sources$ wget -U "Mozilla (wiki.ludomatic.fr)" "http://mamedev.org/downloader.php?file=releases/mame0142s.zip" -O mame0142s.zip
--2011-04-11 08:01:43--  http://mamedev.org/downloader.php?file=releases/mame0142s.zip
Résolution de mamedev.org... 67.210.100.31
Connexion vers mamedev.org|67.210.100.31|:80...connecté.
requête HTTP transmise, en attente de la réponse...302 Found
Emplacement: http://mamedev.thiswebhost.com/releases/mame0142s.zip [suivant]
--2011-04-11 08:01:43--  http://mamedev.thiswebhost.com/releases/mame0142s.zip
Résolution de mamedev.thiswebhost.com... 67.225.136.222
Connexion vers mamedev.thiswebhost.com|67.225.136.222|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 17657289 (17M) [application/zip]
Sauvegarde en : «mame0142s.zip»

100%[===================================================================================================================================>] 17 657 289   154K/s   ds 2m 16s  

2011-04-11 08:04:02 (127 KB/s) - «mame0142s.zip» sauvegardé [17657289/17657289]


On décompresse le fichier ZIP téléchargé:
puckman@mamecab:~/sources$ ls
mame0142s.zip

puckman@mamecab:~/sources$ unzip mame0142s.zip 
Archive:  mame0142s.zip
  inflating: mame.zip                

puckman@mamecab:~/sources$ ls
mame0142s.zip  mame.zip


Le fichier mame0142s.zip contient en fait à nouveau un fichier ZIP mame.zip. Nous décompressons ce nouveau fichier dans un dossier nommé mame0142 pour bien séparer les choses:
puckman@mamecab:~/sources$ unzip mame.zip -d mame0142
Archive:  mame.zip
   creating: mame0142/docs/
 extracting: mame0142/docs/config.txt
 extracting: mame0142/docs/license.txt
 extracting: mame0142/docs/mame.txt
[...]
 extracting: mame0142/src/version.c
 extracting: mame0142/whatsnew.txt

puckman@mamecab:~/sources$ ls
mame0142  mame0142s.zip  mame.zip


Tout s'est bien déroulé, rendez-vous dans le dossier mame0142 avant de passer à la suite:
puckman@mamecab:~/sources$ cd mame0142
puckman@mamecab:~/sources/mame0142$ ls
docs  hash makefile  src  whatsnew.txt


funny


VI.c Construction du binaire


Note 1: Je lance un make clean quand cela est possible pour nettoyer toute trace d'une précédente compilation.
Note 2: Au lieu de la commande make seule, vous pouvez utiliser make -j3 pour profiter pleinement de votre processeur multi-coeurs lors de la compilation :)
Le dossier mame0141 contient maintenant les sources MAME 0.141 avec un fichier makefile qui va permettre à l'ensemble des utilitaires de fonctionner de concert pour produire l'exécutable mame avec différentes options selon votre système. N'hésitez pas à consulter le contenu du fichier makefile si vous en avez envie!
puckman@mamecab:~/sources/mame0142$ make clean
Deleting object tree obj/sdl/mame...
Deleting mame...
Deleting testkeys romcmp chdman jedutil unidasm ldresample ldverify regrep srcclean src2html split ...


Lancer simplement make pour produire le binaire et ne restez pas le nez collé devant la compilation car elle va prendre un bon moment! Je vous propose de lire la FAQ MAME en attendant. Si si, elle regorge d'informations très utiles écrites par les mains même des développeurs MAME :-)
puckman@mamecab:~/sources/mame0142$ make
mkdir -p obj/sdl/mame
mkdir -p obj/sdl/mame/build
mkdir -p obj/sdl/mame/emu/audio
mkdir -p obj/sdl/mame/emu/cpu
[ (...)^99999 ]
Compiling src/emu/cpu/z8/z8dasm.c...
Compiling src/emu/cpu/superfx/sfx_dasm.c...
Archiving obj/sdl/mame/libdasm.a...
Linking mame...


Tadaam, nous voilà avec un bel exécutable mame dans notre dossier source/mame0142/:
puckman@mamecab:~/sources/mame0142$ ls
docs  hash makefile  mame  obj  src  whatsnew.txt


Pour éviter de tout mélanger, nous laisserons les sources de côté et copierons le binaire mame dans un dossier /home/puckman/mame/. Nous y placerons également la configuration de MAME, les ROMs, snapshots, sauvegardes, etc., bref ce sera le dossier principal de MAME:
puckman@mamecab:~/sources/mame0142$ mkdir /home/puckman/mame/
puckman@mamecab:~/sources/mame0142$ cp ./mame /home/puckman/mame/
puckman@mamecab:~/sources/mame0142$ cd /home/puckman/mame/
puckman@mamecab:~/mame$ ls
mame


À partir de maintenant, nous travaillerons donc dans le dossier /home/puckman/mame ou /home/nom_utilisateur/mame selon votre installation.

funny


VI.d Configuration


Commençons par générer le fichier XML contenant l'ensemble des ROMs utilisables par cette unique version 0.142 (patience, cela peut prendre un peu de temps):
puckman@mamecab:~/mame$ ./mame -listxml > mameinfo.xml
puckman@mamecab:~/mame$ ls
mame  mameinfo.xml


Pour les touches par défaut, voir par exemple ici, ou ceci.
Par défaut, le clavier anglais est pris en charge. Comme il faut utiliser par exemple les touches 1 et 5 au dessus des lettres (pas celle du pavé numérique) pour le bouton "START" et les "CREDITS" du joueur 1, nous devons utiliser un mappage de touches correspondant au clavier français. Copions les fichiers de configuration du clavier depuis dossier des sources MAME vers le dossier keymaps:
puckman@mamecab:~/mame$ cp -vr /home/puckman/sources/mame0141/src/osd/sdl/keymaps ./
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps » -> « ./keymaps »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km_it.txt » -> « ./keymaps/km_it.txt »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km-be.txt » -> « ./keymaps/km-be.txt »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km-ch.txt » -> « ./keymaps/km-ch.txt »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km-de.txt » -> « ./keymaps/km-de.txt »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km-fr-OSX.txt » -> « ./keymaps/km-fr-OSX.txt »
« /home/puckman/sources/mame0141/src/osd/sdl/keymaps/km-fr.txt » -> « ./keymaps/km-fr.txt »

puckman@mamecab:~/mame$ ls keymaps
km-be.txt  km-ch.txt  km-de.txt  km-fr-OSX.txt  km-fr.txt  km_it.txt


Générons ensuite le fichier de configuration mame.ini:
puckman@mamecab:~/mame$ ./mame -createconfig
puckman@mamecab:~/mame$ ls
mame  mameinfo.xml  mame.ini


Et éditons-le afin de vérifier au minimum le chemin des ROMs, le mode vidéo et de définir le clavier français:
puckman@mamecab:~/mame$ pico mame.ini


Les ROMs seront donc par défaut recherchées dans le dossier roms d'où est exécuté MAME. Nous le créerons dans le prochain chapitre :
mame.ini (line 9)
  1. #
  2. # CORE SEARCH PATH OPTIONS
  3. #
  4. rompath                   roms


Et la vidéo est gérée par la couche logicielle, sans prise en charge d'accélération OpenGL (très bien pour un premier lancement!):
mame.ini (line 163)
  1. #
  2. # VIDEO OPTIONS
  3. #
  4. video                     soft


Activons les code clavier spécifiques pour passer le clavier en français:
mame.ini (line 245)
  1. #
  2. # SDL KEYBOARD MAPPING
  3. #
  4. keymap                    1
  5. keymap_file               keymaps/km-fr.txt

Je passerai la variable keymap à 0 plus bas dans le document une fois nos premiers test effectués. Cela sera beaucoup plus simple car le clavier n'est pas nécessaire au fonctionnement "normal" de la mamecab et les outils fonctionnent tous avec des codes de touches anglaises par défaut. Mais conservons notre clavier en français pour le moment.

funny


VI.e Les ROMs


Nous y voilà, commençons par créer le dossier des ROMs comme paramétré dans le fichier de configuration mame.ini vu ci-dessus:
puckman@mamecab:~/mame$ mkdir roms
puckman@mamecab:~/mame$ ls
mame  mameinfo.xml  mame.ini  roms


Quelques éditeurs ont libéré les droits de leurs jeux d'arcade pour une utilisation non commerciale. Grâce à ces bonnes initiatives nous allons pouvoir lancer nos premiers jeux!
La plupart de ces ROMs sont tout simplement regroupées dans la section "roms" du site officiel de MAME. Récupérons par exemple l'excellent Teeter Torture (Exidy) et Gridlee (Videa) depuis le dossier roms:
puckman@mamecab:~/mame$ cd roms

puckman@mamecab:~/mame/roms$ wget -U "Mozilla (wiki.ludomatic.fr)" "http://mamedev.org/roms/teetert/teetert.zip"

--2011-03-25 08:37:52--  http://mamedev.org/roms/teetert/teetert.zip
Résolution de mamedev.org... 67.210.100.31
Connexion vers mamedev.org|67.210.100.31|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 24907 (24K) [application/zip]
Sauvegarde en : «teetert.zip»
100%[=============================================================================>] 24 907      14,3K/s   ds 1,7s    
2011-03-25 08:37:55 (14,3 KB/s) - «teetert.zip» sauvegardé [24907/24907]

puckman@mamecab:~/mame/roms$ wget -U "Mozilla (wiki.ludomatic.fr)" "http://mamedev.org/roms/gridlee/gridlee.zip"

--2011-03-25 08:38:24--  http://mamedev.org/roms/gridlee/gridlee.zip
Résolution de mamedev.org... 67.210.100.31
Connexion vers mamedev.org|67.210.100.31|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 26154 (26K) [application/zip]
Sauvegarde en : «gridlee.zip»
100%[=============================================================================>] 26 154      24,8K/s   ds 1,0s    
2011-03-25 08:38:26 (24,8 KB/s) - «gridlee.zip» sauvegardé [26154/26154]


D'autres ROMs sont directement fournies par les éditeurs eux-mêmes tel Gaelco avec le mythique World Rally que nous allons ajouter à notre liste:
puckman@mamecab:~/mame/roms$ wget -U "Mozilla (wiki.ludomatic.fr)" "http://www.gaelco.es/wrally/descarga.php" -O wrally.zip

--2011-03-29 08:08:32--  http://www.gaelco.es/wrally/descarga.php
Résolution de www.gaelco.es... 88.198.70.46
Connexion vers www.gaelco.es|88.198.70.46|:80...connecté.
requête HTTP transmise, en attente de la réponse...302 Found
Emplacement: http://www.gaelco.com/wrally/wrally.zip [suivant]
--2011-03-29 08:08:32--  http://www.gaelco.com/wrally/wrally.zip
Résolution de www.gaelco.com... 88.198.70.46
Réutilisation de la connexion existante vers www.gaelco.es:80.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2168934 (2,1M) [application/zip]
Sauvegarde en : «wrally.zip»
100%[=========================================================>] 2 168 934    880K/s   ds 2,4s    
2011-03-29 08:08:35 (880 KB/s) - «wrally.zip» sauvegardé [2168934/2168934]

Attention à bien conserver le nom exact des fichiers ZIP, ces noms seront utilisés par MAME pour identifier les ROMs.

Vérifions que les ROMs sont bien là et quittons le dossier roms sans décompresser les ZIP, MAME va s'en charger à la volée lors du lancement du jeu:
puckman@mamecab:~/mame/roms$ ls
gridlee.zip  teetert.zip  wrally.zip
puckman@mamecab:~/mame/roms$ cd ..
puckman@mamecab:~/mame$ ls
mame  mameinfo.xml  mame.ini  roms



VII. SERVEUR X


VII.a Installation


wake up Il est nécessaire d'installer un serveur graphique minimal appelé génériquement "serveur X" (et plus spécifiquement "X.org") sans pour autant charger barre des tâches et autres menus pris en charge par des gestionnaires de bureau comme KDE, GNOME, Xfce, Enlightenment, etc.

Cette installation s'effectue comme habituellement via le compte root, donc il faut au préalable passer en mode "super-utilisateur" avec la commande su - (le mot de passe pour l'utilisateur root ne sera pas affiché lors de la saisie):
puckman@mamecab:~/mame$ su -
Mot de passe : 


Une fois connecté avec le compte root, il suffit d'installer tout simplement le paquet xorg qui fournira entre autres:
root@mamecab:~# aptitude install xorg
Les NOUVEAUX paquets suivants vont être installés : 
  libfs6{a} libutempter0{a} libxcb-atom1{a} libxv1{a} libxxf86dga1{a} x11-apps{a} x11-session-utils{a} x11-utils{a} x11-xfs-utils{a} x11-xserver-utils{a} xbitmaps{a} xfonts-100dpi{a} xfonts-75dpi{a} xfonts-scalable{a} xinit{a} xorg xorg-docs-core{a} xterm{a} 
0 paquets mis à jour, 18 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 9 604 ko d'archives. Après dépaquetage, 16,3 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
Prendre : 1 http://ftp.nc.debian.org/debian/ squeeze/main x11-apps i386 7.5+5 [656 kB]
[...]
update-alternatives: utilisation de « /usr/bin/lxterm » pour fournir « /usr/bin/x-terminal-emulator » (x-terminal-emulator) en mode automatique.
Paramétrage de xorg (1:7.5+8) ...
Traitement des actions différées (« triggers ») pour « menu »...


Une fois le serveur X installé, n'oublions surtout pas de quitter le compte root avec la commande exit:
root@mamecab:~# exit
logout
puckman@mamecab:~/mame$ 


Note sur la prise en charge d'OpenGL: selon que vous ayez une carte graphique ATI, NVidia ou Intel et que vous choisissiez les pilotes libres ou propriétaires il vous faudra installer et configurer différents éléments que je vous laisse le soin de découvrir sur l'excellent Wiki DEBIAN consacré à ce sujet, Autrement vous ne pourrez pas bénéficier de l'accélération graphique 3D. MAME est toutefois utilisable sous environnement X avec le mode vidéo "soft" comme nous allons le voir ci-dessous :)


VII.b Premier lancement MAME


Attention, nous somme repassé sous le compte "puckman", et non "root" utilisé le temps de l'installation des paquets
MAME se lance évidemment sous environnement graphique mais comme nous l'avons évoqué plus haut, pas de menus, de bureau et encore moins d'explorateur de fichiers sur notre mamecab from scratch. Il faut donc spécifier dans un petit fichier quels programmes seront lancés au démarrage de la session graphique. Ce fichier se nomme .xsession et est à placer dans le dossier du compte utilisateur /home/puckman:
puckman@mamecab:~/mame$ pico /home/puckman/.xsession


Notez qu'une fois le programme à lancer avec .xsession terminé, la session graphique s'arrête et vous reviendrez au prompt de la console.
Nous pourrons de spécifier: Ajoutons donc tout cela à notre fichier /home/puckman/.xsession:
# Resolution de l'ecran
xrandr -s 800x600
# Clavier anglais
setxkbmap -layout us
# Suppression de l'ecran de veille (ecran noir)
xset s off
# Suppression de la gestion d'energie (extinction moniteur)
xset -dpms

# Lancement du programme
xterm
# Pour mémoire, la session graphique se termine automatiquement une fois le programme quitté.


Comme la plupart des fichiers de configuration sous linux, le caractère " # " sert à commenter tout ce qui suit sur la ligne. Vous pouvez par exemple laisser active la gestion d'énergie pour sauver la planète en commentant la ligne:
# Suppression de la gestion d'energie (extinction moniteur)
#xset -dpms


Ok, CTRL+X pour fermer l'éditeur "pico", répondre "O" pour sauvegarder et ENTRÉE pour valider le nom du fichier. Nous voilà revenus au prompt.

Ceux qui ont suivi jusque là l'ont bien mérité, il est temps de lancer MAME!
Nous allons donc exécuter la commande manuelle startx pour lancer notre environnement graphique (oui, on aura même un curseur de souris) puis mame une fois au prompt du terminal xterm:
puckman@mamecab:~/mame$ startx


Cliquer avec la souris sur la ligne de texte si vous ne pouvez rien écrire, le focus n'est alors pas sur le terminal.
Vous devez être sous environnement graphique maintenant, mais dans un terminal X, le fameux xterm installé précédemment. Je sais ce que vous devez vous dire: "3 heures d'installation et de configuration pour me retrouver en ligne de commande sur un pauvre terminal graphique..." mais tout ce travail effectué va payer car il est temps de lancer notre émulateur préféré (roulement de tambour...):
puckman@mamecab:~/mame$ ./mame


screenshot
Bienvenue sur MAME! Vous devriez obtenir l'interface d'accueil avec le choix des jeux qu'il a trouvé.
Vous pouvez utiliser les flèches HAUT/BAS, ENTREE pour lancer le jeu et ECHAP pour quitter.

screenshot
Avertissement. Vous pouvez le passer en saisissant o puis k ou les flèches GAUCHE puis DROITE.

screenshot
Les informations sur l'émulation audio, CPU et vidéo. Remarquez la résolution 256x256 en 60Hz.

screenshot
Notre PREMIER JEU MAME, woohoo!!

screenshot
Il n'y a pas que le boulot dans la vie! je vous laisse un moment de détente avec X et la vidéo soft...
ECHAP pour quitter.


Il est également possible de lancer directement un jeu sans passer par le menu de MAME. Pour cela il faut spécifier le nom de l'archive ZIP sans l'extension, par exemple:
puckman@mamecab:~/mame$ ./mame teetert

Ou encore le fichier ZIP:
puckman@mamecab:~/mame$ ./mame /home/puckman/roms/wrally.zip



VII.c Mais pourquoi n'y a t'il aucun son?


Car aucun serveur de son n'est installé! Réparons cet oubli :-)
Toujours depuis le terminal graphique xterm, il faut commencer par se connecter avec le compte "super-utilisateur" puis installer le paquet alsa-utils qui ajoutera automatiquement alsa-base et linux-sound-base:
puckman@mamecab:~/mame$ su -
Mot de passe : 

root@mamecab:~# aptitude install alsa-utils
Les NOUVEAUX paquets suivants vont être installés : 
  alsa-base{a} alsa-utils linux-sound-base{a} 
0 paquets mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o/1 443 ko d'archives. Après dépaquetage, 2 675 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] y


Une fois le paquet installé, il faut quitter le compte root avec la commande exit:
root@mamecab:~# exit
logout
puckman@mamecab:~/mame$ 


Réglons à présent les niveaux sonores grâce à la commande alsamixer:
puckman@mamecab:~/mame$ alsamixer


Montez au moins les niveaux "Master" et "PCM" en vérifiant bien de ne pas mettre "Mute" sur ces canaux. Utilisez GAUCHE et DROITE pour vous déplacer, HAUT et BAS pour modifier le volume, la touche m pour mettre le son en sourdine (MM) on pas (OO), et ÉCHAP pour quitter alsamixer et revenir à la console une fois que tout est ok. La sauvegarde est automatique.
?????????????????????[AlsaMixer v1.0.16 (Press Escape to quit)]?????????????????????
? Card: HDA Intel                                                                  ?
? Chip: Realtek ALC888                                                             ?
? View: [Playback] Capture  All                                                    ?
? Item: Master [dB gain=0.00]                                                      ?
?                                                                                  ?
?                                                                                  ?
?                                                                                  ?
?                                                                                  ?
?                                                                                  ?
?                                                                                  ?
?    ????                ????      ????     ????      ????      ????      ????     ?
?    ????                ????      ?  ?     ?  ?      ?  ?      ?  ?      ?  ?     ?
?    ????                ????      ?  ?     ?  ?      ?  ?      ?  ?      ?  ?     ?
?    ????                ????      ?  ?     ?  ?      ?  ?      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ?  ?      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ?  ?      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ?  ?      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     >
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????                ????      ????     ????      ????      ?  ?      ?  ?     ?
?    ????      ????      ????      ????     ????      ????      ????      ????     ?
?    ?OO?      ?OO?                ?OO?     ?OO?                ?MM?      ?MM?     ?
?    ????      ????                ????     ????                ????      ????     ?
?     100              100<>100   84<>84   81<>81    67<>67     0<>0        0      ?
? < Master > Headphon    PCM      Front   Front Mi  Front Mi  Surround   Center    ?
?                                                                                  ?
????????????????????????????????????????????????????????????????????????????????????


Branchez l'ampli et faites vrombir le moteur!!!
puckman@mamecab:~/mame$ ./mame wrally


Bon, le jeu est sympa mais faudrait finir l'installation! Quitter le terminal xterm avec la commande exit. Cela aura pour effet de terminer la session graphique et vous renvoyer sur la console:
puckman@mamecab:~/mame$ exit



VIII. EXTRAS


Avant de passer à l'installation du front-end, il est nécessaire d'obtenir quelques fichiers dont il aura besoin. Il est obligatoire d'avoir mis en place les fichiers catver.ini et mameinfo.xml avant d'installer Wahcade. Les autres fichiers de cette section "Extras" sont simplement recommandés pour agrémenter l'interface.

VIII.a Catégories


Le fichier des catégories catver.ini est un des fichiers clés permettant au front-end de gérer les ROMs. Procédons à la récupération de l'archive ZIP le contenant dans un dossier temporaire /tmp:
puckman@mamecab:~/mame$ cd /tmp

puckman@mamecab:/tmp$ wget "http://www.progettoemma.net/public/ccount/click.php?id=6" -O catver.zip
--2011-03-25 14:38:55--  http://www.progettoemma.net/public/ccount/click.php?id=6
Résolution de www.progettoemma.net... 62.149.130.187
Connexion vers www.progettoemma.net|62.149.130.187|:80...connecté.
requête HTTP transmise, en attente de la réponse...302 Moved Temporarily
Emplacement: http://www.progettoemma.net/public/cat/catveren.zip [suivant]
--2011-03-25 14:38:56--  http://www.progettoemma.net/public/cat/catveren.zip
Réutilisation de la connexion existante vers www.progettoemma.net:80.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 106438 (104K) [application/x-zip-compressed]
Sauvegarde en : «catver.zip»
100%[=============================================================================>] 106 438     19,7K/s   ds 5,3s    
2011-03-25 14:39:02 (19,7 KB/s) - «catver.zip» sauvegardé [106438/106438]


On extrait de l'archive le fichier catver.ini que l'on copie dans le dossier MAME. Attention, on va en profiter pour renommer le fichier en lettres minuscules, la casse est très importante!
puckman@mamecab:/tmp$ unzip catver.zip 
Archive:  catver.zip
  inflating: Catver.ini              
  inflating: leggimi.txt             
  inflating: readme.txt              

puckman@mamecab:/tmp$ mv Catver.ini ~/mame/catver.ini


funny


VIII.b Historique


Récupérons le fichier history.dat contenant les informations à présenter sur le jeu en cours. Nous devrons télécharger un fichier ZIP dans le dossier temporaire et déplacer le fichier extrait dans le dossier de MAME:
puckman@mamecab:/tmp$ wget "http://www.arcade-history.com/dats/mamehistory141.zip"
--2011-03-25 19:27:42--  http://www.arcade-history.com/dats/mamehistory141.zip
Résolution de www.arcade-history.com... 84.16.84.51
Connexion vers www.arcade-history.com|84.16.84.51|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2583551 (2,5M) [application/zip]
Sauvegarde en : «mamehistory141.zip»
100%[========================================================>] 2 583 551   63,9K/s   ds 32s     
2011-03-25 19:28:14 (78,6 KB/s) - «mamehistory141.zip» sauvegardé [2583551/2583551]

puckman@mamecab:/tmp$ unzip mamehistory141.zip 
Archive:  mamehistory141.zip
  inflating: history.dat             
  inflating: readhist.txt

puckman@mamecab:/tmp$ mv history.dat ~/mame/



VIII.c Illustrations


Nous aurons principalement besoin de 3 dossiers d'illustrations: les captures d'écrans (snapshots), les bandeaux lumineux (marquees) et les panneaux de contrôle (control panels). Ces éléments se présentent sous la forme d'image JPEG à placer dans les dossiers ~/mame/snaps pour les "snapshots", ~/mame/marquees pour les "marquees" et ~/mame/cpanel pour les "control panels".
Vous trouverez ce qu'il faut sur la page de Mr Do's Arcade concernant les "control panels" et "marquees". Le téléchargement peut se faire comme précédemment via wget puis la décompression par unzip ou alors via le poste de bureautique et avec un transfert des fichiers sur le réseau, à vous de voir.
Idem pour les "snapshots" disponibles sur Progetto Snaps.
Derniers conseils : Veillez à bien utiliser les fichiers correspondant à votre version de MAME (les ROMs sont continuellement modifiées, supprimées, ajoutées, etc. d'une version à l'autre) et à bien décompresser les images dans les dossiers ~/mame/snaps, ~/mame/marquees et ~/mame/cpanel.

todo: artworks (décorations additionnelles durant une partie)


VIII.d Contrôleurs


edit: une version plus récente du fichier controls.ini se trouve sur http://controls.arcadecontrols.com/controls/controls_dat.php. Merci à zeflasher pour l'info!
Je n'ai pu trouver que la version 0.111 du fichier controls.ini qui décrit les contrôleurs affectés à chaque jeu. Comme il ne s'agit pas d'une archive mais directement du fichier à télécharger, nous pouvons le faire directement depuis le dossier de MAME:
puckman@mamecab:/tmp$ cd ~/mame

puckman@mamecab:~/mame$ wget "http://dl.maximumpc.com/galleries/mame/controls.ini"
--2011-03-25 21:59:08--  http://dl.maximumpc.com/galleries/mame/controls.ini
Résolution de dl.maximumpc.com... 60.254.175.41, 60.254.175.42
Connexion vers dl.maximumpc.com|60.254.175.41|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 496585 (485K) [text/plain]
Sauvegarde en : «controls.ini»
100%[========================================================>] 496 585      129K/s   ds 3,8s    
2011-03-25 21:59:12 (129 KB/s) - «controls.ini» sauvegardé [496585/496585]

puckman@mamecab:~/mame$ ls
catver.ini  cfg  controls.ini  history.dat  mame  mameinfo.xml  mame.ini  nvram  roms



IX. WAH!CADE


lol Bien que MAME seul soit parfaitement capable de lancer les jeux depuis sa propre liste, il est préférable d'utiliser un "front-end". Son travail est de vous montrer les jeux disponibles avec captures d'écrans, animations vidéo, catégories, tri et divers filtres. Certains vont même jusqu'à gérer différents émulateurs à la fois (MAME, ZSnes, Gens, etc.), un mode Juke Box, des skins, etc. Bref, dans le souci de toujours bien séparer les choses, je vous propose d'installer le front-end Wah!Cade, version libre de MAMEWah. Vous trouverez quelques captures d'écran ici.


IX.a Installation


Wah!cade fournit gracieusement un paquet d'installation pour Debian. Nous devons toutefois installer au préalable les librairies Python nécessaires au fonctionnement de Wah!cade en tant que "super-utilisateur" root:
puckman@mamecab:~/mame$ su -
Mot de passe : 

root@mamecab:~# aptitude install python-gtk2 python-chardet python-imaging python-glade2 python-gst0.10 python-pygame

Les NOUVEAUX paquets suivants vont être installés : 
  libblas3gf{a} libffi5{a} libgfortran3{a} libglade2-0{a} libgstreamer-plugins-base0.10-0{a} libgstreamer0.10-0{a} 
  liblapack3gf{a} liblcms1{a} libmikmod2{a} libpython2.6{a} libsdl-image1.2{a} libsdl-mixer1.2{a} libsmpeg0{a} 
  libvorbisfile3{a} python-cairo{a} python-chardet python-glade2 python-gobject{a} python-gst0.10 python-gtk2 
  python-imaging python-libxml2{a} python-numpy{a} python-pygame ttf-freefont{a} 
0 paquets mis à jour, 25 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 15,9 Mo d'archives. Après dépaquetage, 46,9 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
Prendre : 1 http://ftp.nc.debian.org/debian/ squeeze/main libgfortran3 i386 4.4.5-8 [238 kB]
Prendre : 2 http://ftp.nc.debian.org/debian/ squeeze/main libblas3gf i386 1.2-8 [211 kB]
[...]


Passons à Wah!cade: la version actuelle de Wah!cade que je vais télécharger est la "0.99pre8". Vérifiez la version disponible sur la page de téléchargement et adaptez au besoin:
root@mamecab:~# wget -c "http://www.anti-particle.com/projects/wahcade/wahcade_0.99pre8_all.deb"

--2011-03-25 11:11:09--  http://www.anti-particle.com/projects/wahcade/wahcade_0.99pre8_all.deb
Résolution de www.anti-particle.com... 83.170.91.181
Connexion vers www.anti-particle.com|83.170.91.181|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 859782 (840K) [text/plain]
Sauvegarde en : «wahcade_0.99pre8_all.deb»
100%[=============================================================================>] 859 782     97,3K/s   ds 12s     
2011-03-25 11:21:29 (73,0 KB/s) - «wahcade_0.99pre8_all.deb» sauvegardé [859782/859782]


L'installation se déroule très rapidement en spécifiant manuellement le paquet que l'on vient de télécharger:
root@mamecab:~# dpkg -i wahcade_0.99pre8_all.deb 

Sélection du paquet wahcade précédemment désélectionné.
(Lecture de la base de données... 49679 fichiers et répertoires déjà installés.)
Dépaquetage de wahcade (à partir de wahcade_0.99pre8_all.deb) ...
Paramétrage de wahcade (0.99pre8) ...


Une fois le paquet installé, n'oublions surtout pas de supprimer le paquet d'installation et surtout quitter le compte root avec la commande exit:
root@mamecab:~# rm -f wahcade_0.99pre8_all.deb 
root@mamecab:~# exit
logout
puckman@mamecab:~/mame$ 



IX.b Configuration


La configuration peut se faire dans l'environnement graphique. Lançons à nouveau le serveur X manuellement (rappel: et le terminal xterm défini dans le fichier .xsession):
puckman@mamecab:~/mame$ startx


Vous devez être sous environnement graphique dans le terminal X xterm. Continuons avec wahcade-setup:
puckman@mamecab:~/mame$ wahcade-setup


La fenêtre se lance mais sans bordures ni titre de fenêtre. Pas de panique, c'est normal car on n'a pas installé de gestionnaire de fenêtre (KDE, GNOME, etc.) mais qui en a besoin sur une borne? Je vous ai mis les capture d'écran ci-dessous avec les champs à vérifier:

screenshot
Dans l'onglet "Wah!Cade", changer le layout pour correspondre à la résolution de l'interface graphique: "retro_black_640x480"

screenshot
Cliquez sur l'onglet "Emulators", puis dans la zone de saisie "Application" il faut renseigner le chemin vers le
binaire MAME. Vous pouvez saisir /home/puckman/mame/mame ou plus simplement utiliser le
raccourci "~" qui pointe automatiquement vers le dossier de votre utilisateur courant, à savoir
"/home/puckman/" dans notre cas, ce qui donne en version courte ~/mame/mame.
Plus bas dans "List Generation" saisir le chemin vers les ROMs ~/mame/roms/

screenshot
Toujours dans l'onglet "Emulators", dans la section "Artwork", renseignez dans l'ordre les chemins vers
les captures d'écran ~/mame/snap, les panneaux de contrôle ~/mame/cpanel puis les
bandeaux lumineux ~/mame/marquees. Vous devriez avoir créé ces dossiers dans la partie précédente "VIII.c Illustrations".

screenshot
Passer ensuite sur l'onglet "M.A.M.E. Only" et faites travailler vos petits doigts agiles:
~/mame/mameinfo.xml pour le fichier XML, ~/mame/catver.ini pour les catégories,
~/mame/history.dat pour l'historique des jeux puis ~/mame/controls.ini pour les contrôleurs.

screenshot
Attention, pour passer à la suite, il faut avoir généré le fichier "mameinfo.xml" (voir partie "VI.d Configuration").
Sauvons tout d'abord tout cela par le menu File et Enregistrer, puis cliquez sur le bouton "Setup Filters..." et patientez un long moment (un peu moins que le temps de la compilation de MAME tout de même!).

screenshot
Quelques longs moments plus tard, vous obtiendrez une fenêtre avec la liste des ROMs et les différents filtres utilisables sous Wahcade. Cliquez sur "Fermer" pour sortir de la liste des filtres. Si vous obtenez une erreur, vous avez une version qui contient un bug corrigé dans la section ci-dessous!

Puis quitter Wahcade par le menu File et Quitter.



IX.c Bug "Keyboard" (optionnel)


Lors de la génération du filtre, mon Wahcade s'est planté autour d'une déclaration de keyboard dans le fichier filters.py:


screenshot


Traceback (most recent call last):
  File "/usr/local/share/games/wahcade/win_filter.py", line 245, in on_cboLists_changed self.load_filter()
  File "/usr/local/share/games/wahcade/win_filter.py", line 261, in load_filter self.create_initial_filter()
  File "/usr/local/share/games/wahcade/win_filter.py", line 314, in create_initial_filter self.dlgwait_pulse)
  File "/usr/local/share/games/wahcade/filters.py", line 369, in create_initial_filter gd = mi.next()
  File "/usr/local/share/games/wahcade/filters.py", line 271, in get_xml_game_item d['controller_type'] = _controllers[ctrl.attrib['type']]
KeyError: 'keyboard'


Si vous n'avez rencontré aucune erreur lors de la génération du filtre, rendez-vous directement au chapitre suivant: Test de Wahcade!
Il y a en fait un bug dans ma version! Si vous avez exactement la même erreur, il faut la corriger en attendant que le paquet soit mis à jour en amont. Aucun problème pour nous puisque l'erreur est identifié et les sources disponibles, Open Source power :-)


Allons-y, commençons par nous rendre dans le dossier des sources /usr/local/share/games/wahcade/:
puckman@mamecab:~/mame$ cd /usr/local/share/games/wahcade/


Faire la copie de sauvegarde du fichier original avant toute modification:
puckman@mamecab:/usr/local/share/games/wahcade$ cp -v filters.py filters.py_orig
« filters.py » -> « filters.py_orig »


Éditons le fichier filters.py
puckman@mamecab:/usr/local/share/games/wahcade$ pico filters.py


Pour y insérer la déclaration du clavier au niveau de la variable gérant les contrôleurs (ligne 89 avec CTRL+_) entre Pedal et None. Nous en profiterons pour ajouter d'autres contrôleurs tels "keypad", "doublejoy" ou "hanafuda" par exemple. Le bloc avant la modification:
filters.py (line 74)
  1. _controllers = {
  2.     'joy2way': u'2-Way Joystick',
  3.     'vjoy2way': u'Vertical 2-Way Joystick',
  4.     'joy4way': u'4-Way Joystick',
  5.     'joy8way': u'8-Way Joystick',
  6.     'stick': u'Analogue Joystick (or ~270\xb0 Wheel)',
  7.     'doublejoy2way': u'Double 2-Way Joysticks',
  8.     'vdoublejoy2way': u'Double Vertical 2-Way Joysticks',
  9.     'doublejoy4way': u'Double 4-Way Joysticks',
  10.     'doublejoy8way': u'Double 8-Way Joysticks',
  11.     'lightgun': u'Light-Gun',
  12.     'paddle': u'Paddle (or ~270\xb0 Wheel)',
  13.     'dial': u'Spinner (or 360\xb0 Wheel)',
  14.     'trackball': u'Trackball',
  15.     'pedal': u'Pedal',
  16.     '': u'None'}

Et après modification, les 3 lignes concernées:
filters.py (line 88)
  1.     'pedal': u'Pedal',
  2.     'joy': u'Joystick',
  3.     'gambling': u'Gambling',
  4.     'mahjong': u'Mahjong',
  5.     'doublejoy': u'Double Joystick',
  6.     'keypad': u'Keypad',
  7.     'mouse': u'Mouse',
  8.     'positional': u'Positional',
  9.     'hanafuda': u'Hanafuda',
  10.     'keyboard': u'Keyboard',
  11.     '': u'None'}

Puis CTRL+X pour fermer l'éditeur "pico". Répondre "O" pour sauvegarder et ENTRÉE pour valider le nom du fichier. Nous voilà revenus au prompt.

Une fois le correctif appliqué, nous pouvons revenir à notre dossier mame:
puckman@mamecab:/usr/local/share/games/wahcade$ cd ~/mame
puckman@mamecab:~/mame$ 


N'oubliez pas de retourner par la case wahcade-setup (partie précédente) et la génération du filtre qui a échoué. Une fois fait, passons au lancement de Wahcade!


IX.d Test de Wahcade


C'est le moment de tester notre front-end! Toujours dans la session graphique sous xterm utilisé pour lancer wahcade-setup, nous lancerons cette fois wahcade:
puckman@mamecab:~/mame$ wahcade


Note sur le clavier: Pour exécuter la ROM choisie, Wahcade utilise la touche START du joueur 1, soit la touche 1 (pas la touche du pavé numérique) depuis un clavier configuré en anglais. Si vous travaillez sur un clavier français par exemple, vous enverrez la lettre & et non pas 1... Or, maintenant que Wahcade est correctement configuré, nous n'aurons plus à saisir de texte dans l'environnement graphique. Je vous conseille donc de mettre keymap à 0 (zéro) dans le fichier mame.ini et de dé-commenter la ligne setxkbmap -layout us dans le fichier .xsession pour travailler naturellement sur un clavier anglais dans l'environnement graphique, Wahcade et MAME. Je considérerai par la suite que vous avez basculé votre clavier en anglais sous X.


screenshot
Vous pouvez alors sélectionner la ROM souhaitée et MAME sera lancé directement.
Comme sous MAME, utilisez la touche ÉCHAP pour quitter le front-end.


Après avoir quitté Wahcade, nous devons sortir de l'environnement X avec la commande exit:
puckman@mamecab:~/mame$ exit



IX.e Wahcade par défaut


Éditer simplement le fichier .xsession dans le dossier du compte puckman pour remplacer le lancement de xterm par wahcade:
puckman@mamecab:~/mame$ pico ~/.xsession


# Resolution de l'ecran
xrandr -s 800x600
# Clavier anglais
setxkbmap -layout us
# Suppression de l'ecran de veille (ecran noir)
xset s off
# Suppression de la gestion d'energie (extinction moniteur)
xset -dpms

# Lancement du programme
wahcade
# Pour mémoire, la session graphique se termine automatiquement une fois le programme quitté.

Puis CTRL+X pour fermer l'éditeur "pico". Répondre "O" pour sauvegarder et ENTRÉE pour valider le nom du fichier. Nous voilà revenus au prompt, prêts à fignoler l'installation aux petits oignons.


X. DÉMARRAGE & ARRÊT


J'ai une bonne nouvelle, les "briques" sont prêtes! Debian Squeeze, X, MAME, Wahcade, les ROMs, les illustrations, etc. sont installés et il ne reste maintenant plus qu'à imbriquer ces éléments pour en faire un ensemble cohérent. Voici en ordre les différents points auxquels nous feront référence pour la fin du tuto:
  1. La borne démarre par un switch (bouton ou autre),
  2. Le système d'exploitation se lance jusqu'au login,
  3. Le login va automatiquement lancer la session ("puckman"),
  4. L'ouverture de session "puckman" démarre le serveur X,
  5. Le démarrage du serveur X lance le front-end Wahcade,
  6. L'utilisateur a la main (lancement de plusieurs jeux avec MAME) et quitte Wahcade,
  7. La session graphique s'arrête automatiquement,
  8. La main est rendue à la console qui arrête le système.

Je vous laisse gérer le point #1 en utilisant un bouton pression intégré à la borne ou par exemple le switch du monnayeur pour mettre sous tension la machine. Le lancement de votre Debian Squeeze (point #2) se fera dans la foulée et vous mènera jusqu'au login. Là, nous arrivons déjà au point #3 explicité ci-dessous.


X.a Login automatique (point #3)


Comme je vous sent plutôt à l'aise jusque là, on va écrire et compiler un programme en C qui nous permettra de nous connecter automatiquement au boot de la mamecab.

Commençons par créer un dossier ~/bin contenant les binaires autre que MAME et rendons -nous à l'intérieur:
puckman@mamecab:~/mame$ mkdir /home/puckman/bin
puckman@mamecab:~/mame$ cd /home/puckman/bin
puckman@mamecab:~/bin$


Créez le fichier ~/bin/autolog.c avec pico:
puckman@mamecab:~/bin$ pico autolog.c


Écrivez (ou mieux, copiez-collez) ce bout de code dans autolog.c
autolog.c
#include <unistd.h>

int main()
{
    execlp( "/bin/login", "login", "-f", "puckman", 0 );
}

Puis CTRL+X pour fermer l'éditeur "pico". Répondre "O" pour sauvegarder et ENTRÉE pour valider le nom du fichier. Nous voilà revenus au prompt.

Hop, passage par le compilateur cc:
puckman@mamecab:~/bin$ ls
autolog.c

puckman@mamecab:~/bin$ cc autolog.c -o autolog

puckman@mamecab:~/bin$ ls
autolog  autolog.c

Le binaire /home/puckman/bin/autolog est maintenant prêt, simple non?

Reste à demander au système de l'utiliser au démarrage sur le tty1 (console #1). Pour cela passer en "super-utilisateur" et éditer le fichier /etc/inittab après en avoir fait une copie de secours:
puckman@mamecab:~/bin$ su -
Mot de passe : 
root@mamecab:~# cp /etc/inittab /etc/inittab_orig
root@mamecab:~# pico /etc/inittab


Aller à la ligne n°54 (CTRL + _) où vous remplacerez ceci:
1:2345:respawn:/sbin/getty 38400 tty1

par
1:2345:respawn:/sbin/agetty -n -l /home/puckman/bin/autolog 38400 tty1

ATTENTION À BIEN RELIRE LES MODIFICATIONS! Il s'agit d'un des fichiers qui gère la console donc gare aux fôtes de frappe (notez par exemple qu'on utilise "agetty" au lieu de "getty").

Pour terminer, quitter le compte "super-utilisateur".
root@mamecab:~# exit
logout

puckman@mamecab:~/bin$ 



X.b Démarrage automatique de la session X (point #4)


Lors de la connexion au système, le fichier .profile du compte utilisateur est lancé. Il suffit alors d'y placer le lancement de notre session graphique.

Éditer le fichier /home/puckman/.profile (penser à faire une copie de secours au cas où!)
puckman@mamecab:~/bin$ pico ~/.profile


...et ajouter à la fin les commandes suivantes:
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
  # Lancement de l'interface graphique...
  startx
  # Arrêt de la machine une fois la session graphique terminée
  sudo shutdown -h now
fi


Il faut permettre à l'utilisateur "puckman" d'éteindre la machine via l'utilitaire sudo. Pour cela, éditer le fichier /etc/sudoers avec le compte "super-utilisateur" :
puckman@mamecab:~/bin$ su -
Mot de passe : 
root@mamecab:~# pico /etc/sudoers


...et ajouter à la fin du fichier la ligne suivante:
# Autorisation pour le compte "puckman" d'utiliser la commande "shutdown" sans mot de passe
puckman ALL=(ALL) NOPASSWD: /sbin/shutdown



X.c Paramétrage X11 et lancement Wahcade (point #5)


Ce point a été réalisé, c.f. Premier lancement MAME

À partir d'ici tout a été passé en revue et votre MAMECAB doit booter et lancer automatiquement Wahcade et vous pouvez lancer vos jeux. Lorsque vous quittez le front-end, la session graphique se coupe et la borne s'éteint. Bonnes parties endiablées!


XI. LIENS UTILES


Si vous avez besoin d'informations plus détaillées ou si vous êtes simplement dans l'impasse à un moment donné, voici la liste des sites dont je me suis servi pour ce tuto et ma mamecab:

funnyLogiciel:
MAME
Wah!cade

Centralisation:
MAME World (LA liste des sites MAME)
MAWS (Moteur de recherche des ROMS)

Ressources:
MAME Testers (Bugs)
Arcade History
Arcade Museum
TAFA (Flyers)
MAME Cheats
Pleasuredome (Torrent tracker MAME, MESS,...)

Forum:
Linux MAME Forum (SDL)

Dev:
Guru's ROM dump news
Arbee's WIP Emporium

Matériel:
Ultimarc (Grande Bretagne)
OZ Stick (Australie)



Valid XHTML :: Valid CSS: :: Powered by WikkaWiki