#!/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
