#!/bin/bash #--------------------------------------------- # Economiseur d'ecran Xmame # A installer dans /usr/X11R6/lib/xscreensaver #--------------------------------------------- # choisir les options d'affichage selon le jeux # $6 type : raster ou vector # $10 resolution horizontale # $12 resolution verticale setdispflag() { if [ $6 = raster ] then if [ ${10} -le 512 -a ${12} -le 384 ] then if [ ${10} -le 341 -a ${12} -le 256 ] then scale=3 else scale=2 fi else scale=1 fi dx=`expr 1024 - $scale \* ${10}` dx=`expr $dx / 2` dy=`expr 768 - $scale \* ${12}` dy=`expr $dy / 2` dispflags="-scanlines -scale "$scale" -geo 1024x768+"$dx"+"$dy else dispflags="-vres 1024x768 -scale 1" fi } #--------------------------------------------- # construire la liste des jeux testés OK buildgamesdesc() { $MAMEBINPATH/$MAMECMD -listinfo | grep -e name -e video | grep -v -e rom -e dipswitch -e chip | tr "\n)" " \n" > /tmp/mame-descfile > $descfile > $descfile.ko for f in *.zip do printf "checking %s..." $f pospt=`expr index $f .` pospt=`expr $pospt - 1` game=`expr substr $f 1 $pospt` $MAMEBINPATH/$MAMECMD -vr $game >/dev/null 2>/dev/null && romchecked=1 || romchecked=0 if [ $romchecked = 1 ] then descfound=`fgrep -c -e "name "$game" " /tmp/mame-descfile` if [ $descfound -gt 0 ] then setdispflag `fgrep -e "name "$game" " /tmp/mame-descfile` echo "$game $dispflags" >> $descfile echo ok else echo "$game -s 2 -sl" >> $descfile echo unknown fi else echo $game >> $descfile.ko echo err fi done rm /tmp/mame-descfile } #--------------------------------------------- # Init global vars descfile=/usr/games/mame/etc/gamesdesc gamespath=/usr/games/mame/roms MAMEBINPATH=/usr/games/mame/bin MAMECMD=xmame.x11 cd $gamespath if [ ! -f $descfile ] then buildgamesdesc fi echo $RANDOM > /dev/null nbgames=`cat $descfile | wc -l` trap "killall "$MAMECMD EXIT ulimit -c 0 while true; do tirage=`expr $RANDOM % $nbgames + 1` $MAMEBINPATH/$MAMECMD `sed -n $tirage"p" $descfile` -root -x -mtx -fsr 1 -afs -nosnd > /dev/null 2>&1 renice 20 $! sleep 240 killall $MAMECMD sleep 2 done