#!/bin/bash #### wolfSDLmame FE version 0.4 #### un Front-end simplissime pour linux #### #### Utilisation: #### Vous devez editer mame.ini avant de lancer le FE ! #### Variables ajustables par l'utilisateur #### #### storyvie ::: nombre d'heures avant mise a jour de story.dat (par defaut une semaine) #### Attention ::: Ne pas donner une valeur inferieure a 2*24*60*60 (48 heures) # storyvie=$[7*24*60*60]; storyvie=$[7*24*60*60]; #### Utiliser story.dat ( 0=non - 1=oui - defaut: 1 ) # afficherecords=1; afficherecords=1; #### Chemin du binaire utilise ( defaut: ./mame ) #### Vous pouvez utiliser un chemin absolu ( /usr/bin/mame ) # binaire="./mame"; binaire="./mame"; #### More mame options ( options supplementaires pour mame ) #### defaut: nul #### Le fichier d'options est mame.ini # moremameopts=""; # defaut moremameopts=""; #### dependances # Test de zenity if ! which zenity >/dev/null 2>&1; then xmessage -center Il faut installer le programme \"zenity\" ! exit 1 fi # Teste la presence de mame if ! [ -f $binaire ]; then zenity --error --title="wolf_launcher 0.4 ::: Erreur" --text="$binaire non disponible! Verifiez le chemin du binaire et editez la variable 'binaire' Impossible de continuer." exit 0 fi #### variables # Quelle version de MAME ? $binaire -h > .version_info.txt version=`head -1 .version_info.txt` rm .version_info.txt # Lecture du dernier jeu joue read lastgame < .wsdlmlast # Si il n'y a pas d'ancien jeu enregistre # On choisit gridlee par defaut (rom libre) if [ -z $lastgame ]; then lastgame="gridlee"; fi if [ $afficherecords -eq 1 ]; then # Si l'utilisation de story.dat est activee # Recuperation du fichier story.dat # Le fichier est-il present ? if ! [ -f story.dat ]; then key_story=`zenity --question --title="wolf_launcher 0.4 ::: Telechargement de story.dat" --text="story.dat non disponible! wolf_launcher va lancer le telechargement de story.dat Ce fichier va permettre d'afficher les records enregistres actuellement sur MAMESCORE. Vous devez beneficier d'une connection internet active. Cliquer Valider pour effectuer le telechargement (environ 500 ko) Cliquer Annuler pour ne pas telecharger story.dat Un fake sera utilise, les records ne seront pas disponibles. Vous pouvez desactiver cette fonctionnalite en modifiant afficherecords=1; par afficherecords=0; dans le script"` # On telecharge story.dat si Valider test $? -ne 1 && wget http://www.arcadehits.net/mamescore/rss/story.dat | zenity --progress --title="wolf_launcher 0.4 ::: Telechargement" --text="Telechargement de story.dat en cours ..." --pulsate --auto-close # on enregistre la date de recuperation de story.dat # storydate=`date +%s`; echo $storydate > .wlstory fi # le fichier a t'il expire ? read laststory < .wlstory maintenant=`date +%s`; diffstory=$[$maintenant-$laststory]; if [ $diffstory -gt $storyvie ]; then key_story=`zenity --question --title="wolf_launcher 0.4 ::: Mise a jour de story.dat" --text="story.dat disponible ! wolf_launcher va lancer le telechargement de story.dat Vous devez beneficier d'une connection internet active. Cliquer Valider pour effectuer le telechargement (environ 500 ko) Cliquer Annuler pour ne pas telecharger story.dat Le story.dat actuel sera utilise. Note: vous pouvez modifier la frequence de mise a jour de story.dat en modifiant la variable storyvie dans le script wolf_launcher_fr"` # On telecharge story.dat si Valider test $? -ne 1 && rm story.dat && wget http://www.arcadehits.net/mamescore/rss/story.dat | zenity --progress --title="wolf_launcher 0.4 ::: Telechargement" --text="Telechargement de story.dat en cours ..." --pulsate --auto-close # on enregistre la date de recuperation de story.dat # storydate=`date +%s`; echo $storydate > .wlstory fi # si le fichier propose n'a pas ete update if [ $diffstory -gt $storyvie ]; then cp story.dat story.dat.new rm story.dat mv story.dat.new story.dat rm story.dat.new fi # Le fichier n'est pas present, on cree le fake if ! [ -f story.dat ]; then touch story.dat fi fi # dans quel repertoire est-on ? rep=`pwd` opsys=`uname -srm` #### Ouverte du dialogue choix action act_s=`zenity --title "wolf_launcher 0.4 ::: wolfSDLmame miniFE" --text "Systeme: $opsys Binaire: $binaire $version Cocher l'action de votre choix play: jouer normalement (sans enregistrer) record: enregistrer la partie (inp) playback: rejouer un enregistrement " --radiolist --list --width=360 --height=368 --column "X" --column "Action" TRUE play FALSE record FALSE playback` # On quitte si l'utilisateur a presse Annuler test $? -ne 0 && exit 2 #### Ouverture du dialogue choix rom key_s=`zenity --entry --title "wolf_launcher 0.4 ::: wolfSDLmame miniFE" --text "Entrez le nom de romset du jeu pour $act_s. Il s'agit du nom d'archive sans .zip (ex: ghouls) Pour $act_s de nouveau > $lastgame <, pressez juste Entree."` # On quitte si l'utilisateur a presse le bouton Annuler test $? -ne 0 && exit 2 # Analyse de la reponse if [ -z $key_s ]; then jeu="$lastgame"; else jeu="$key_s"; fi # on enregistre la valeur comme dernier jeu joue echo $jeu > .wsdlmlast if [ $afficherecords -eq 1 ]; then recherchestory='\$info='$jeu; rechercheinfo='\$end'; lignestory=0; sortie=""; # initialisation du compteur # A quelle ligne commence l'info de ce jeu ? lignestry=`grep -ni $recherchestory story.dat`; lignestory=$[`echo $lignestry | cut -f1 -d :`]; #### Si il y a des records pour ce jeu if [ $lignestory -gt 1 ]; then # Liste des records sortie=`awk -v l=$[$lignestory+3] 'NR==l{ print }' story.dat` # boucle des records sur 50 lignes maxi x=3 while [ $x -lt 50 ]; do let x=x+1 sortie=$sortie$lignesortie lignesortie=`awk -v l=$[$lignestory+$x] 'NR==l{ print }' story.dat` if echo "$lignesortie" | grep -q "\$end" then x=51 fi done key_f=`zenity --info --title "wolf_launcher 0.4 ::: wolfSDLmame miniFE" --text "$jeu $sortie"` fi fi # on capte le timestamp au debut debut=`date +%s`; # on execute la commande mame avec l'option voulue # en mode playback l'option window et inpview sont activees case $act_s in record) $binaire $jeu $moremameopts -$act_s $jeu.inp && cmdone="$binaire $jeu $moremameopts -$act_s $jeu.inp" ;; playback) $binaire $jeu $moremameopts -window -inpview 1 -$act_s $jeu.inp && cmdone="$binaire $jeu $moremameopts -window -inpview 1 -$act_s $jeu.inp" ;; play) $binaire $jeu $moremameopts && cmdone="$binaire $jeu $moremameopts" ;; esac # A la sortie # on capte de nouveau le timestamp fin=`date +%s`; # calcul de la duree d'execution de MAME duree_min=$[($fin-$debut)/60] duree_sec=$[($fin-$debut)-(60*$duree_min)] # Si la partie a dure 0 secondes, il y a eu un souci if [ $debut = $fin ]; then zenity --error --title="wolf_launcher 0.4 ::: Erreur" --text="L'action a echouee. Aucun rapport n'est disponible avec ce Front-end. Conseil: Executer l'emulateur depuis la ligne de commande et consulter le message d'erreur. $cmdone" exit 0 fi # Affichage du resume de l'execution key_f=`zenity --question --title "wolf_launcher 0.4 ::: wolfSDLmame miniFE" --text "$act_s $jeu $cmdone Duree d'execution: $duree_min minute(s) et $duree_sec seconde(s). Valider pour Continuer, Annuler pour Quitter."` # On quitte si l'utilisateur a presse le bouton Annuler test $? -ne 0 && exit 2 # Sinon, relance le script ./wolf_launcher_fr fi