Abonnement aux commentaires

S'abonner pour recevoir les commentaires suivants par email

まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Une Borne d'Arcade maison -39-

Suite de l'étude précédente :

AdvanceMame.png

Cette fois on va s'occuper de la partie software avec le formidable couple AdvanceMame + AdvanceMenu.


J'avais déjà abordés quelques réglages lors de la mise au point, cette fois on va peaufiner et customiser le truc aux petits oignons.

Ces réglages font suite au billet d'installation du système Arcade.


Objectifs :

  1. Réglages Audio/Vidéo de l'émulateur.
  2. Prise en charge des vignettes titles par défaut.
  3. Augmenter ou diminuer la taille des textes dans advmenu.
  4. Changer la police des textes dans advmenu.
  5. Trier les jeux.
  6. Automatiser la copie des roms depuis la cléUSB vers le dossier de stockage local.
  7. Effacer les hi-score du jeux sélectionné.
  8. Effacer la rom du jeux sélectionné.
  9. Passer advmenu et advmame en TATE.
  10. Passer advmenu et advmame en YOKO.
  11. Commander le menu avec les boutons du joysticks.




1 - Réglages Audio/Vidéo de l'émulateur :

  • Dans le fichier advmame.rc, éditer les lignes suivantes :

device_sound sdl
device_video sdl
device_video_output overlay
device_video_overlaysize 320
display_resize none
display_resizeeffect none
display_rgbeffect none

Avec ces réglages, la résolution native des jeux sera utilisée en mode overlay, sans effets spéciaux (ce qui est en fait le mode par défaut lorsque les paramètres sont sur auto, chose que je n'avais pas comprise à l'époque des premiers billets du projet. Ce n'est donc pas du natif véritable).
Le système installé n'étant en effet pas capable d'afficher de très basses résolutions nativement sur la TV, ceci est réalisé par une couche graphique overlay de très bonne qualité qui est un bon compromis évitant de se retaper le réglage de la géométrie de l'écran au changement de jeu.
Pour les puristes, je suis parvenu à configurer un système capable d'afficher du natif en très basse définition, ce sera l'objet d'un prochain long billet !

2 - Prise en charge des vignettes titles par défaut :

Stocker les vignettes dans le dossier /home/arcade/.advance/titles

  • Dans le fichier advmenu.rc, ajouter la ligne :

emulator_titles "advmame" "/home/arcade/.advance/titles"

  • Éditer la ligne preview comme suit :

preview titles

Il faudra bien entendu remplir le dossier avec des images titles téléchargées où capturée avec l'émulateur.

3 - Augmenter ou diminuer la taille des textes dans advmenu :

  • Dans le fichier advmenu.rc, éditer la ligne ui_fontsize comme suit :

ui_fontsize 35

Changer la valeur pour obtenir la taille désirée, plus elle est grande, plus petit seront les caractères.

4 - Changer la police des textes dans advmenu :

Récupérer les polices mises à disposition depuis les sources dAdvanceMenu, /advancemenu-2.5.0/contrib/menu/ttffonts/ et les copier dans ''/home/arcade/.advance/

  • Dans le fichier advmenu.rc, éditer la ligne ui_font comme suit :

ui_font nom_de_la_police.ttf


5 - Trier les jeux :

Quand on stocke de très nombreux jeux, il devient vite très pénible de s'y retrouver…
Il est alors nécessaire de trier les Roms par exemple en les classant par type.
Ça se passe dans le fichier advmenu.rc, ou l'on peut éditer/ajouter des Type.

  • Il faut le faire trois fois, pour les sections type_include, advmame/type_include, et type :

type_include "<undefined>"
type_include "Beat' em Up"
type_include "Beat' em Up TATE"
type_include "Plate forme"
type_include "Puzzle"
type_include "Puzzle TATE"
type_include "Racing"
type_include "Racing TATE"
type_include "Run'n Guns"
type_include "Run'n Guns TATE"
type_include "Shoot' em Up"
type_include "Shoot' em Up TATE"
type_include "Sport"
type_include "Sport TATE"
type_include "Vs Fighting"

advmame/type_include "<undefined>"
advmame/type_include "Beat' em Up"
advmame/type_include "Beat' em Up TATE"
advmame/type_include "Plate forme"
advmame/type_include "Puzzle"
advmame/type_include "Puzzle TATE"
advmame/type_include "Racing"
advmame/type_include "Racing TATE"
advmame/type_include "Run'n Guns"
advmame/type_include "Run'n Guns TATE"
advmame/type_include "Shoot' em Up"
advmame/type_include "Shoot' em Up TATE"
advmame/type_include "Sport"
advmame/type_include "Sport TATE"
advmame/type_include "Vs Fighting"

type "<undefined>"
type "Beat' em Up"
type "Beat' em Up TATE"
type "Plate forme"
type "Puzzle"
type "Puzzle TATE"
type "Racing"
type "Racing TATE"
type "Run'n Guns"
type "Run'n Guns TATE"
type "Shoot' em Up"
type "Shoot' em Up TATE"
type "Sport"
type "Sport TATE"
type "Vs Fighting"

Maintenant on peut lancer advmenu, et par défaut, tous les jeux apparaissent dans l'ordre alphabétique…

advmenu-selectsortmode1.png
On va trier les jeux par type :

  • Menu > Listing > Sort > Type

(ou la Touche F5 > Type)


advmenu-selectsortmode2.png

Tous les jeux se retrouvent alors sous le type <undefined>.



advmenu-selectgametype1.png
Il suffit alors pour chaque jeux de faire :

  • Menu > Settings > Game Type

(ou touche F10)
et de choisir le type qu'on veut lui affecter depuis la liste.

advmenu-selectgametype2.png

C'est long, et fastidieux, mais le résultat en vaut la peine !



À la fin du fichier advmenu.rc apparaissent alors les lignes correspondantes, du genre :

game "advmame/columns2" "" "Puzzle" 0 0 ""
game "advmame/contcirc" "" "Racing" 0 0 ""
game "advmame/contra" "" "Run'n Guns TATE" 0 0 ""
game "advmame/charlien" "" "Plate forme" 0 0 ""
game "advmame/chasehq" "" "Racing" 0 0 ""
game "advmame/blazstar" "" "Shoot' em Up" 0 0 ""
game "advmame/batsugun" "" "Shoot' em Up TATE" 0 0 ""
game "advmame/asurabld" "" "Vs Fighting" 0 0 ""
game "advmame/flipshot" "" "Sport" 0 0 ""


  • Pour faciliter les choses par la suite, on va séparer les Roms en deux grandes familles : Les jeux YOKO et les jeux TATE, simplement en les rangeant dans deux dossiers distincts :

/home/arcade/.advance/RomTATE
/home/arcade/.advance/RomYOKO

  • Une fois fait, il faut, dans le fichier advmame.rc, éditer la ligne dir_rom comme suit :

dir_rom /home/arcade/.advance/RomYOKO:/home/arcade/.advance/RomTATE

De cette manière, lorsque l'on basculera l'écran en TATE, il sera possible de ne lister que les jeux verticaux (abordé au point N°9).

6 - Automatiser la copie des roms depuis la cléUSB vers le dossier de stockage local :

À la racine d'une cléUSB, créer les dossiers RomTATE et RomYOKO, et y copier les jeux qu'on voudrait mettre sur la borne.
Il faut autoriser les commandes mount et umount à se lancer sans le mot de passe de l'utilisateur sur la borne.
Pour cela lancer :

sudo visudo
  • Écrire la ligne suivante à la fin du fichier :
arcade	ALL = NOPASSWD: /bin/mount, /bin/umount

Ne pas oublier de créer le dossier usb dans le dossier de l'utilisateur, afin de pouvoir y monter la clé.

Ensuite on va passer des commandes au terminal Gnu/Linux… Et ce, toujours sans utiliser de clavier !
En effet, via le menu d'advmenu il est possible d'accéder à une liste de commandes pré-enregistrées.
Nous allons donc en écrire quelques-une ^^
Ça se passe sous la ligne ui_command_menu Command... du fichier advmenu.rc

  • Ajouter ces lignes :

ui_command "AJOUTER des ROMS depuis la cle USB" \
sudo mount /dev/sdb1 ~/usb/ \
cp ~/usb/RomTATE/*.zip ~/.advance/RomTATE/ \
cp ~/usb/RomYOKO/*.zip ~/.advance/RomYOKO/ \
sudo umount /dev/sdb1 \
killall advmenu \
advmenu

- La première ligne indique la disponibilité dans advmenu d'une commande appelée « AJOUTER des ROMS depuis la cle USB ».
- La deuxième ligne monte la cléUSB. (adapter le sdxx en fonction de votre config)
- Les deux lignes suivantes copient les Roms depuis la cléUSB vers le disque dur de la borne.
- La cinquième démonte la cléUSB. (adapter le sdxx en fonction de votre config)
- La sixième tue le programme advmenu et la dernière le relance, ceci afin de voir et disposer de ces nouveaux jeux.

Ainsi, après avoir inséré une clé dans l'ordi (bien sûr il faut avoir placé des roms dans des dossiers RomTATE et RomYOKO sur la clé), on va pouvoir appeler la commande « AJOUTER des ROMS depuis la cle USB » dans AdvanceMenu, qui en quelques secondes se chargera d'ajouter les nouveaux jeux sur la borne !

7 - Effacer les hi-score du jeux sélectionné :

Sous la ligne ui_command_menu Command... du fichier advmenu.rc

  • Ajouter ces lignes :

ui_command "EFFACER les HISCORE" \
rm ~/.advance/hi/%s.hi


8 - Effacer la rom du jeux sélectionné :

Sous la ligne ui_command_menu Command... du fichier advmenu.rc

  • Ajouter ces lignes :

ui_command "EFFACER la ROM selectionee" \
rm %p \
killall advmenu \
advmenu


10 - Passer advmenu et advmame en TATE[1] :

Sous la ligne ui_command_menu Command... du fichier advmenu.rc

  • Ajouter ces lignes :

ui_command "Passer en TATE" \
/home/arcade/.advance/tate.sh

- La première ligne indique la disponibilité dans advmenu de la commande « Passer en TATE ».
- La deuxième appelle le script tate.sh, stocké dans de dossier ~/.advance/tate.sh, dont voici le contenu : (dispo en annexe, ne pas oublier de rendre le fichier exécutable !)

[bash]
#!/bin/bash
##################
# Passer en TATE #
##################

# Tuer AdvanceMenu
killall advmenu

# Modifier le fichier de config advmame.rc
# remplace: vertical/display_rol no   par   vertical/display_rol yes
sed -i -e "s/vertical\/display_rol\ no/vertical\/display_rol\ yes/g" ~/.advance/advmame.rc

# remplace: dir_rom /home/arcade/.advance/RomYOKO:/home/arcade/.advance/RomTATE   par   dir_rom /home/arcade/.advance/RomTATE
sed -i -e "s/dir_rom \/home\/arcade\/.advance\/RomYOKO:\/home\/arcade\/.advance\/RomTATE/dir_rom \/home\/arcade\/.advance\/RomTATE/g" ~/.advance/advmame.rc

# Modifier le fichier de config advmenu.rc
# remplace: display_orientation   par   display_orientation flip_xy mirror_y
sed -i -e "s/display_orientation/display_orientation flip_xy mirror_y/g" ~/.advance/advmenu.rc

# Relance advmenu
advmenu

Ainsi, depuis AdvanceMenu, l'appel par le menu de la commande « Passer en TATE » va configurer l'émulateur en mode vertical et inhiber la présence des jeux horizontaux !

11 - Passer advmenu et advmame en YOKO[2] :

  • De la même manière que précédemment, ajouter ces lignes :

ui_command "Passer en YOKO" \
/home/arcade/.advance/yoko.sh

[bash]
#!/bin/bash
##################
# Passer en YOKO #
##################

# Tuer AdvanceMenu
killall advmenu

# Modifier le fichier de config advmame.rc
# remplace: vertical/display_rol yes par vertical/display_rol no
sed -i -e "s/vertical\/display_rol\ yes/vertical\/display_rol\ no/g" ~/.advance/advmame.rc

# remplace: dir_rom /home/arcade/.advance/RomTATE    par   dir_rom /home/arcade/.advance/RomYOKO:/home/arcade/.advance/RomTATE
sed -i -e "s/dir_rom \/home\/arcade\/.advance\/RomTATE/dir_rom \/home\/arcade\/.advance\/RomYOKO:\/home\/arcade\/.advance\/RomTATE/g" ~/.advance/advmame.rc

# Modifier le fichier de config advmenu.rc
# remplace: display_orientation flip_xy mirror_y   par   display_orientation
sed -i -e "s/display_orientation flip_xy mirror_y/display_orientation/g" ~/.advance/advmenu.rc

# Relance advmenu
advmenu

Ainsi, depuis AdvanceMenu, l'appel par le menu de la commande « Passer en YOKO » va configurer l'émulateur en mode horizontal et lister les jeux horizontaux et verticaux !
En effet, ces derniers sont jouable en écran horizontal, moyennant une perte importante de surface utile.
advmenu-command.png

12 - Commander le menu avec les boutons du joysticks :

  • Il suffit de quatres boutons câblés sur le joystick du joueur N°1 pour piloter AdvanceMame et AdvanceMenu.

Ces boutons ne sont pas choisi au hasard.
En effet, autant AdvanceMame est réglable à souhait, autant AdvanceMenu voit sur ce point sa configuration figée.
Ce sont donc les boutons N° 0, 2, 3 et 4 du joystick qu'il faut utiliser.

- Le bouton N°0, est utilisé par advmenu pour lancer le jeux choisi.
- Le bouton N°2, est utilisé par advmenu pour appeler le menu principal.
- Le bouton N°3, est utilisé par advmenu pour basculer l'affichage des vignettes entre les snapshots ou les titles.
- Le bouton N°4, est utilisé par advmenu pour choisir le mode de listage et d'affichage des vignettes.

Attention, le bouton N°1 ferme advmenu, il est donc déconseillé de le câbler sur un bouton, pour éviter les fausses manip.

  • Il est donc judicieux de configurer advmame comme ceci :

- Le bouton N°0, sera utilisé pour la fonction Start.
Par le menu Inputs (Général) -> Other Control -> 1 Player Start
- Le bouton N°2, sera utilisé pour la fonction Menu.
Par le menu Inputs (Général) -> User Interface -> Config Menu
- Le bouton N°3, sera utilisé pour la fonction Exit.
Par le menu Inputs (Général) -> User Interface -> UI Cancel
- Le bouton N°4, sera utilisé pour la fonction Coins.
Par le menu Inputs (Général) -> Other Control -> Coin 1


Tous les autres boutons sont donc librement assignables aux actions des jeux.
dsc08976.jpg
Légende :
- En vert pour Advance Mame.
- En Rouge pour Advance Menu.

Note :
La commande suivante aidera pour localiser facilement les boutons (nécessite le paquet joystick) :

jstest /dev/input/js0


À suivre…


Ressources :

http://advancemame.sourceforge.net/doc-advmame.html
http://advancemame.sourceforge.net/doc-advmenu.html

Notes

[1] mot japonais pour « vertical »

[2] mot japonais pour « horizontal »

Commentaires

1. Le mardi, 22 mars 2016, 07:31 par Jean

Bonjour,
Super tuto, je suis jean et j'ai aussi advmame et advmenu mais sous dos, je n'arrive pas à écrire dans le advmenu, le fait d'avoir deux advmame dans une même liste de jeux, si vous avez une idée, je suis dans l'impasse, c'est pour lancé le jeu pro gear avec une autre version de advmame,
D'avance merci
Cordialement

2. Le vendredi, 25 mars 2016, 19:39 par Makoto

Dos ??? Heu nous sommes en 2016 là… quand même ;)
Regarde le fichier advmenu.rc du dernier tuto d'installation debian7 que j'ai réalisé, tu devrais comprendre comment faire avec cet exemple.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet