69 lines
1.3 KiB
Bash
69 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# 20091011 bkw: Wrapper script for sms_sdl, does the following:
|
|
|
|
# - Savestates and screenshots will be saved in ~/.sms_sdl/
|
|
# - A ~/.sms_sdl/config file will be read if present, and converted to
|
|
# command-line options for the real sms_sdl binary.
|
|
|
|
# To make things work properly, we have to run the real emulator binary
|
|
# with its cwd set to ~/.sms_sdl/, and create a symlink to the ROM file
|
|
# in the same directory. After the emu exits, we remove the symlink.
|
|
|
|
sms_exe="/usr/libexec/sms_sdl"
|
|
sms_userdir=~/.sms_sdl
|
|
conf_file="$sms_userdir/config"
|
|
|
|
romfile=""
|
|
conf_args=""
|
|
|
|
set -e
|
|
|
|
mkdir -p $sms_userdir
|
|
|
|
if [ -e "$conf_file" ]; then
|
|
while read line; do
|
|
# remove comments
|
|
line="${line/\#*/}"
|
|
case "$line" in
|
|
"") ;; # ignore empty lines
|
|
-*)
|
|
conf_args="$conf_args $line"
|
|
;;
|
|
*)
|
|
conf_args="$conf_args --$line"
|
|
;;
|
|
esac
|
|
done < "$conf_file"
|
|
fi
|
|
|
|
for arg; do
|
|
case "$arg" in
|
|
-h|-help|--help|-\?)
|
|
$sms_exe
|
|
exit 0
|
|
;;
|
|
|
|
--*)
|
|
conf_args="$conf_args $arg"
|
|
;;
|
|
|
|
*)
|
|
if [ -z "$romfile" ]; then
|
|
arg="$( readlink -f "$arg" )"
|
|
romfile="$( basename "$arg" )"
|
|
( cd $sms_userdir ; rm -f "$romfile" ; ln -s "$arg" . )
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
set +e
|
|
if [ -z "$romfile" ]; then
|
|
$sms_exe
|
|
else
|
|
cd $sms_userdir
|
|
$sms_exe $conf_args "$romfile"
|
|
rm -f "$romfile"
|
|
fi
|