RetroPie-Setup/scriptmodules/emulators/residualvm.sh

91 lines
3 KiB
Bash

#!/usr/bin/env bash
# This file is part of The RetroPie Project
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="residualvm"
rp_module_desc="ResidualVM - A 3D Game Interpreter"
rp_module_help="Copy your ResidualVM games to $romdir/residualvm"
rp_module_licence="GPL2 https://raw.githubusercontent.com/residualvm/residualvm/master/COPYING"
rp_module_repo="git https://github.com/ResidualVM/ResidualVM.git master"
rp_module_section="exp"
rp_module_flags="sdl2 !mali"
function depends_residualvm() {
local depends=(
libsdl2-dev libmpeg2-4-dev libogg-dev libvorbis-dev libflac-dev libmad0-dev
libpng-dev libtheora-dev libfaad-dev libfluidsynth-dev libfreetype6-dev
zlib1g-dev libjpeg-dev
)
isPlatform "x11" && depends+=(libglew-dev)
isPlatform "videocore" && depends+=(libraspberrypi-dev)
getDepends "${depends[@]}"
}
function sources_residualvm() {
gitPullOrClone
}
function build_residualvm() {
local params=(
--enable-opengl-shaders
--enable-vkeybd
--enable-release
--disable-debug
--prefix="$md_inst"
)
if isPlatform "gles"; then
params+=(--force-opengles2)
# wintermute fails to build on rpi/opegles - disable for now
params+=(--disable-engine=wintermute)
fi
if isPlatform "videocore"; then
CXXFLAGS+=" -I/opt/vc/include" LDFLAGS+=" -L/opt/vc/lib" ./configure "${params[@]}"
else
./configure "${params[@]}"
fi
make clean
make
strip "$md_build/residualvm"
md_ret_require="$md_build/residualvm"
}
function install_residualvm() {
make install
mkdir -p "$md_inst/extra"
cp -v backends/vkeybd/packs/vkeybd_*.zip "$md_inst/extra"
}
function configure_residualvm() {
mkRomDir "residualvm"
moveConfigDir "$home/.config/residualvm" "$md_conf_root/residualvm"
# Create startup script
cat > "$romdir/residualvm/+Start ResidualVM.sh" << _EOF_
#!/bin/bash
renderer="\$1"
[[ -z "\$renderer" ]] && renderer="software"
game="\$2"
[[ "\$game" =~ ^\+ ]] && game=""
pushd "$romdir/residualvm" >/dev/null
$md_inst/bin/residualvm --renderer=\$renderer --fullscreen --joystick=0 --extrapath="$md_inst/extra" \$game
while read id desc; do
echo "\$desc" > "$romdir/residualvm/\$id.rvm"
done < <($md_inst/bin/residualvm --list-targets | tail -n +3)
popd >/dev/null
_EOF_
chown "$__user":"$__group" "$romdir/residualvm/+Start ResidualVM.sh"
chmod u+x "$romdir/residualvm/+Start ResidualVM.sh"
addEmulator 0 "$md_id" "residualvm" "bash $romdir/residualvm/+Start\ ResidualVM.sh opengl_shaders %BASENAME%"
addEmulator 1 "$md_id-software" "residualvm" "bash $romdir/residualvm/+Start\ ResidualVM.sh software %BASENAME%"
addSystem "residualvm" "ResidualVM" ".sh .rvm"
}