distribution/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh
2023-11-18 14:45:28 +01:00

171 lines
5 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
. /etc/profile
export MEDNAFEN_HOME=/storage/.config/mednafen
export MEDNAFEN_CONFIG=/usr/config/mednafen/mednafen.template
if [ ! -d "$MEDNAFEN_HOME" ]
then
mkdir /storage/.config/mednafen
fi
if [ ! -f "$MEDNAFEN_HOME/mednafen.cfg" ]
then
/usr/bin/bash /usr/bin/mednafen_gen_config.sh
fi
#Emulation Station Features
GAME=$(echo "${1}"| sed "s#^/.*/##")
CORE=$(echo "${2}"| sed "s#^/.*/##")
PLATFORM=$(echo "${3}"| sed "s#^/.*/##")
STRETCH=$(get_setting stretch "${PLATFORM}" "${GAME}")
SHADER=$(get_setting shader "${PLATFORM}" "${GAME}")
#Set the cores to use
CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}")
if [ "${CORES}" = "little" ]
then
EMUPERF="${SLOW_CORES}"
elif [ "${CORES}" = "big" ]
then
EMUPERF="${FAST_CORES}"
else
### All..
unset EMUPERF
fi
#Set Save folder
sed -i -e "s/@PLATFORM@/${PLATFORM}/g" $MEDNAFEN_HOME/mednafen.cfg
# Get command line switches
FEATURES_CMDLINE=""
if [[ "${CORE}" =~ pce[_fast] ]]
then
if [ "$(get_setting nospritelimit ${PLATFORM} "${GAME}")" = "1" ]
then
FEATURES_CMDLINE+=" -${CORE}.nospritelimit 1"
else
FEATURES_CMDLINE+=" -${CORE}.nospritelimit 0"
fi
if [ "$(get_setting forcesgx ${PLATFORM} "${GAME}")" = "1" ]
then
FEATURES_CMDLINE+=" -${CORE}.forcesgx 1"
else
FEATURES_CMDLINE+=" -${CORE}.forcesgx 0"
fi
if [ "${CORE}" = pce_fast ]
then
OCM=$(get_setting ocmultiplier ${PLATFORM} "${GAME}")
if [ ${OCM} > 1 ]
then
FEATURES_CMDLINE+=" -${CORE}.ocmultiplier ${OCM}"
else
FEATURES_CMDLINE+=" -${CORE}.ocmultiplier 1"
fi
CDS=$(get_setting cdspeed ${PLATFORM} "${GAME}")
if [ ${CDS} > 1 ]
then
FEATURES_CMDLINE+=" -${CORE}.cdspeed ${CDS}"
else
FEATURES_CMDLINE+=" -${CORE}.cdspeed 1"
fi
fi
elif [ "${CORE}" = "gb" ]
then
ST=$(get_setting system_type "${PLATFORM}" "${GAME}")
if [[ "${ST}" =~ auto|dmg|cgb|agb ]]
then
FEATURES_CMDLINE+=" -${CORE}.system_type ${ST}"
else
FEATURES_CMDLINE+=" -${CORE}.system_type auto"
fi
elif [ "${CORE}" = "gba" ]
then
if [ $(get_setting tblur "${PLATFORM}" "${GAME}") = "1" ]
then
FEATURES_CMDLINE+=" -${CORE}.tblur 1"
else
FEATURES_CMDLINE+=" -${CORE}.tblur 0"
fi
elif [ "${CORE}" = "nes" ]
then
if [ $(get_setting clipsides "${PLATFORM}" "${GAME}") = "1" ]
then
FEATURES_CMDLINE+=" -${CORE}.clipsides 1"
else
FEATURES_CMDLINE+=" -${CORE}.clipsides 0"
fi
if [ $(get_setting no8lim "${PLATFORM}" "${GAME}") = "1" ]
then
FEATURES_CMDLINE+=" -${CORE}.no8lim 1"
else
FEATURES_CMDLINE+=" -${CORE}.no8lim 0"
fi
elif [ "${CORE}" = "vb" ]
then
CE=$(get_setting cpu_emulation "${PLATFORM}" "${GAME}")
if [[ "${CE}" =~ fast|accurate ]]
then
FEATURES_CMDLINE+=" -${CORE}.cpu_emulation ${CE}"
else
FEATURES_CMDLINE+=" -${CORE}.cpu_emulation fast"
fi
DM=$(get_setting 3dmode "${PLATFORM}" "${GAME}")
if [[ "${DM}" =~ anaglyph|cscope|sidebyside|vli|hli|left|right] ]]
then
FEATURES_CMDLINE+=" -${CORE}.3dmode ${CE}"
fi
elif [ "${CORE}" = "pcfx" ]
then
CE=$(get_setting cpu_emulation "${PLATFORM}" "${GAME}")
if [[ "${CE}" =~ auto|fast|accurate ]]
then
FEATURES_CMDLINE+=" -${CORE}.cpu_emulation ${CE}"
else
FEATURES_CMDLINE+=" -${CORE}.cpu_emulation auto"
fi
CS=$(get_setting cdspeed "${PLATFORM}" "${GAME}")
if [ CS > 2]
then
FEATURES_CMDLINE+=" -${CORE}.cdspeed ${CS}"
else
FEATURES_CMDLINE+=" -${CORE}.cdspeed 2"
fi
elif [ "${CORE}" = "ss" ]
then
IP1=$(get_setting input.port1 "${PLATFORM}" "${GAME}")
if [[ "${IP1}" =~ gamepad|3dpad|gun ]]
then
FEATURES_CMDLINE+=" -${CORE}.input.port1 ${IP1}"
else
FEATURES_CMDLINE+=" -${CORE}.input.port1 gamepad"
fi
IP13DMODE=$(get_setting input.port1.3dpad.mode.defpos "${PLATFORM}" "${GAME}")
if [[ "${IP13DMODE}" =~ digital|analog ]]
then
FEATURES_CMDLINE+=" -${CORE}.input.port1.3dpad.mode.defpos ${IP13DMODE}"
else
FEATURES_CMDLINE+=" -${CORE}.input.port1.3dpad.mode.defpos analog"
fi
CART=$(get_setting cart "${PLATFORM}" "${GAME}")
if [[ "${CART}" =~ auto|none|backup|extram1|extram4|cs1ram16 ]]
then
FEATURES_CMDLINE+=" -${CORE}.cart ${CART}"
else
FEATURES_CMDLINE+=" -${CORE}.cart auto"
fi
CARTAD=$(get_setting cart.auto_default "${PLATFORM}" "${GAME}")
if [[ "${CARTAD}" =~ none|backup|extram1|extram4|cs1ram16 ]]
then
FEATURES_CMDLINE+=" -${CORE}.cart.auto_default ${CARTAD}"
else
FEATURES_CMDLINE+=" -${CORE}.cart.auto_default none"
fi
fi
#Run mednafen
@LIBEGL@
${EMUPERF} /usr/bin/mednafen -force_module ${CORE} -${CORE}.stretch ${STRETCH:="aspect"} -${CORE}.shader ${SHADER:="ipsharper"} ${FEATURES_CMDLINE} "${1}"