#!/usr/bin/sh

##
## this is a simple quake startup script that
## attempts to pick the right version automatically
##

CPU=`
    hinv |
    fgrep "CPU" |
    nawk '{ print $3; }
`

MEM=`
    hinv |
    fgrep "Main memory size" |
    nawk '{ big = $4 > 64; print big; }'
`

TEX=`
    glxinfo |
    fgrep "OpenGL renderer" |
    nawk '{
	IsKona = substr( $4, 1, 2 ) == "IR";
	IsImpact = (substr( $4, 1, 6 ) == "IMPACT") &&
	            (substr( $4, length($4), 1 ) != "0");
	IsO2 = substr( $4, 1, 5 ) == "CRIME";
	print (IsKona || IsImpact || IsO2);
    }'
`

SND=`
    glxinfo |
    fgrep "OpenGL version" |
    nawk '{ snd = $6 >= 6.3; print snd; }'
`

echo "CPU ("$CPU")"
echo "MEM ("$MEM")"
echo "TEX ("$TEX")"
echo "SND ("$SND")"

if [ "$CPU" = "R10000" ]; then
    CPUEXT=".r10k"
else
    CPUEXT=""
fi;

if [ "$TEX" = "0" ]; then
    TEXEXT=".sw"
else
    TEXEXT=".gl"
fi;

if [ "$MEM" = "0" ]; then
    if [ "$TEX" = "1" ]; then
	MEMFLAGS="+gl_max_size 128 +gl_nocolors +gl_nomip 1"
	echo "If this is an O2 you will be"
	echo "paging unless you run xscreen and"
	echo "select VGA 16+16 mode, see"
	echo "the README for more info"
    else
        MEMFLAGS=""
    fi;
else
    MEMFLAGS=""
fi;

if [ "$SND" = "0" ]; then
    SNDFLAGS="-nosound"
else
    SNDFLAGS=""
fi;

EXE="./quake$TEXEXT$CPUEXT"
if [ ! -x $EXE ]; then
    echo "$EXE not found"
    EXE="./quake$TEXEXT"
fi;

RUN="$EXE $SNDFLAGS $MEMFLAGS $1 $2 $3 $4 $5 $6 $7 $8 $9"

echo $RUN
exec $RUN
