RetroDECK/export_func.sh
2022-03-14 12:01:23 +01:00

196 lines
5.1 KiB
Bash
Executable file

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
# Copyright (C) 2020-present Fewtarius
# This content was taken from 99-distribution.conf and made as a shell script for steam deck
# TODO: remove absolute paths and put the variables INSTALL_DIR
export PATH="$PATH:/usr/local/bin:/usr/bin:/storage/bin"
export SDL_GAMECONTROLLERCONFIG_FILE="~/retrodeck/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt"
EE_DIR="~/retrodeck/storage/.config/distribution"
EE_CONF="${EE_DIR}/configs/distribution.conf"
ES_CONF="~/retrodeck/storage/.emulationstation/es_settings.cfg"
EE_DEVICE=$(cat ~/retrodeck/storage/.config/.OS_ARCH)
JSLISTENCONF="~/retrodeck/storage/.config/distribution/configs/jslisten.cfg"
get_ee_setting() {
# Argument $1 is the setting name, EmuELEC settings alway start with ee_ e.g. ee_novideo
# Usage: get_ee_setting setting [platform] [rom]
# Only the setting argument is required
# Priority is: GAME, PLATFORM, GLOBAL, EE_SETTING if at any point one returns 0 it means its dissabled, if it returns empty it will continue onto the next one.
SETTING="${1}"
PLATFORM="${2}"
ROM="${3}"
#ROM
ROM=$(echo [\"${ROM}\"] | sed -e 's|\[|\\\[|g' | sed -e 's|\]|\\\]|g' | sed -e 's|(|\\\(|g' | sed -e 's|)|\\\)|g')
PAT="^${PLATFORM}${ROM}[.-]${SETTING}=(.*)"
EES=$(cat "${EE_CONF}" | grep -oE "${PAT}")
EES="${EES##*=}"
if [ -z "${EES}" ]; then
#PLATFORM
PAT="^${PLATFORM}[.-]${SETTING}=(.*)"
EES=$(cat "${EE_CONF}" | grep -oE "${PAT}")
EES="${EES##*=}"
fi
if [ -z "${EES}" ]; then
#GLOBAL
PAT="^global[.-]${SETTING}=(.*)"
EES=$(cat "${EE_CONF}" | grep -oE "${PAT}")
EES="${EES##*=}"
fi
if [ -z "${EES}" ]; then
#EE_SETTINGS
PAT="^${SETTING}=(.*)"
EES=$(cat "${EE_CONF}" | grep -oE "${PAT}")
EES="${EES##*=}"
fi
echo "${EES}"
}
set_ee_setting() {
# argument $1 is the setting name e.g. nes.integerscale. $2 is the value, e.g "1"
sed -i "/$1=/d" "${EE_CONF}"
[ $2 == "disable" ] && echo "#${1}=" >> "${EE_CONF}" || echo "${1}=${2}" >> "${EE_CONF}"
}
get_es_setting() {
echo $(sed -n "s|\s*<${1} name=\"${2}\" value=\"\(.*\)\" />|\1|p" ${ES_CONF})
}
normperf() {
# A foo function as in steam deck is not needed, however sometime it's called and I am lazy to edit everything, sorry -Xargon
return
}
maxperf() {
# A foo function as in steam deck is not needed, however sometime it's called and I am lazy to edit everything, sorry -Xargon
return
}
ee_check_bios() {
PLATFORM="${1}"
CORE="${2}"
EMULATOR="${3}"
ROMNAME="${4}"
LOG="${5}"
if [[ -z "$LOG" ]]; then
LOG="/tmp/logs/exec.log"
cat /etc/motd > "$LOG"
fi
MISSINGBIOS="$(batocera-systems --strictfilter ${PLATFORM})"
if [ "$?" == "2" ]; then
# formating so it looks nice :)
PLATFORMNAME="${MISSINGBIOS##*>}" # read from -P onwards
PLATFORMNAME="${PLATFORMNAME%%MISSING*}" # until a space is found
PLATFORMNAME=$(echo $PLATFORMNAME | sed -e 's/\\n//g')
if [[ -f "${LOG}" ]]; then
echo "${CORE} ${EMULATOR} ${ROMNAME}" >> $LOG
echo "${PLATFORMNAME} missing BIOS - Could not find all BIOS: " >> $LOG
echo "please make sure you copied the files into the corresponding folder " >> $LOG
echo "${MISSINGBIOS}" >> $LOG
fi
MISSINGBIOS=$(echo "$MISSINGBIOS" | sed -e 's/$/\\n/g')
/usr/bin/error.sh "${PLATFORMNAME} missing BIOS" "Could not find all BIOS/files in /storage/roms, the game may not work:\n\n ${MISSINGBIOS}\n\nPlease make sure you copied the files into the corresponding folder."
error_process="$!"
pkill -P $error_process
fi
}
message_stream () {
local MESSAGE=$1
local DELAY=$2
local LOADBUFFER=0
local ANSI=0
for (( i=0; i<${#MESSAGE}; i++ ))
do
CHAR="${MESSAGE:$i:1}"
# Is this an escape character?
if [ "${CHAR}" == "\\" ]
then
LOADBUFFER=1
BUFFER="$BUFFER${CHAR}"
continue
fi
# Is this ANSI? (\e[*[a-Z])
if [ "${BUFFER}" == "\e[" ] && [ "${LOADBUFFER}" -eq 1 ]
then
ANSI=1
BUFFER="$BUFFER${CHAR}"
continue
fi
if [ "${LOADBUFFER}" -eq 1 ] && [ "${ANSI}" -eq 1 ]
then
# If it isn't ANSI it's a control char like \n
if [[ "${CHAR}" =~ [a-Z] ]]
then
echo -ne "${BUFFER}${CHAR}" >/dev/console
unset BUFFER
LOADBUFFER=0
ANSI=0
fi
else
# otherwise it's text
echo -ne "${BUFFER}${CHAR}" >/dev/console
unset BUFFER
LOADBUFFER=0
ANSI=0
fi
sleep ${DELAY}
done
}
spinny_cursor() {
message_stream "$1" 0
for (( c=0; c<=$2; c++ ))
do
echo -ne '\e[2D' '-' > /dev/console
sleep .01
echo -ne '\e[2D' '\\' > /dev/console
sleep .01
echo -ne '\e[2D' '|' > /dev/console
sleep .01
echo -ne '\e[2D' '/' > /dev/console
sleep .01
done
echo -ne '\e[80D\e[K' > /dev/console
}
jslisten() {
# A foo function as in steam deck is not needed, however sometime it's called and I am lazy to edit everything, sorry -Xargon
return
}
# 351EDECK specific code
export -f get_ee_setting
export -f set_ee_setting
export -f get_es_setting
export -f maxperf
export -f normperf
export -f ee_check_bios
export -f message_stream
export -f spinny_cursor
#export -f jslisten
#export -f init_port