Skip to content

Commit

Permalink
game.retroarch settings
Browse files Browse the repository at this point in the history
  • Loading branch information
jefflessard committed Apr 15, 2023
1 parent e3e6e46 commit 5e820cb
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 36 deletions.
71 changes: 39 additions & 32 deletions game.retroarch/bin/retroarch-ctl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/usr/bin/env bash

ADDON_ID="game.retroarch"
ADDON_DIR="$(dirname $0)"
ADDON_DIR="${ADDON_DIR%/bin}"
. /etc/profile
oe_setup_addon "${ADDON_ID}"

run(){
ROM="$1"
Expand All @@ -25,24 +25,26 @@ enable(){

pre(){
systemctl stop kodi
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level

[ "${DOWNLOAD_ASSETS:-true}" == "true" ] && download https://buildbot.libretro.com/assets/frontend/assets.zip "${ADDON_HOME}/.config/retroarch/assets"
[ "${DOWNLOAD_ASSETS:-true}" == "true" ] && download https://buildbot.libretro.com/assets/frontend/autoconfig.zip "${ADDON_HOME}/.config/retroarch/autoconfig"
[ "${LINK_LIBRETRO_CORES:-true}" == "true" ] && cores "${ADDON_HOME}/.config/retroarch/cores"

if [ "${PERF_MODE:-true}" == "true" ]
then
echo "enabling performance mode"
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level
fi
}

start(){
ROM="${1:-$ROM}"

. /etc/profile
oe_setup_addon "${ADDON_ID}"

HOME="${ADDON_HOME}"
export LD_LIBRARY_PATH="${ADDON_DIR}/lib/"
export VK_ICD_FILENAMES="${ADDON_DIR}/lib/intel_icd.x86_64.json:${ADDON_DIR}/lib/radeon_icd.x86_64.json"

[ "${DOWNLOAD_ASSETS:-true}" == "true" ] && assets "${ADDON_HOME}/.config/retroarch/assets"
[ "${DOWNLOAD_ASSETS:-true}" == "true" ] && autoconfig "${ADDON_HOME}/.config/retroarch/autoconfig"
[ "${LINK_LIBRETRO_CORES:-true}" == "true" ] && cores "${ADDON_HOME}/.config/retroarch/cores"

EXT="${ROM##*.}"
[ "${EXT}" == "zip" ] && EXT=$(unzip -ql "${ROM}" | head -n3 | tail -n1 | cut -c 31-) && EXT="${EXT##*.}"
CORE=$(grep -El "supported_extensions.*[|\"']${EXT}[|\"']" "${ADDON_HOME}/.config/retroarch/cores/"*.info | head -n 1 | sed 's/\.info$/.so/')
Expand All @@ -59,21 +61,31 @@ start(){
}

post(){
echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
systemctl start kodi
sleep 2
kodi-send -a "RunAddon(script.games.rom.collection.browser)"
}
if [ "${PERF_MODE:-true}" == "true" ]
then
echo "disabling performance mode"
echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
fi

assets(){
ASSETS_DIR="${1:?No assets path provided. Usage: $(basename $0) assets TARGET_ASSETS_PATH}"
download https://buildbot.libretro.com/assets/frontend/assets.zip "${ASSETS_DIR}"
}
systemctl start kodi

autoconfig(){
AUTOCONFIG_DIR="${1:?No auticonfig path provided. Usage: $(basename $0) autoconfig TARGET_AUTOCONFIG_PATH}"
download https://buildbot.libretro.com/assets/frontend/autoconfig.zip "${AUTOCONFIG_DIR}"
case "${RESTART_ACTION:-None}" in
"Execute Script")
echo "executing restart script ${RESTART_SCRIPT}"
[ "${RESTART_SCRIPT}" ] && "${RESTART_SCRIPT}" ${RESTART_SCRIPT_ARGS}
;;
"Open Window")
sleep 2
echo "opening restart windowi ${RESTART_WINDOW}"
[ "${RESTART_WINDOW}" ] && kodi-send -a "ActivateWindow(${RESTART_WINDOW})"
;;
"Builtin Function")
sleep 2
echo "executing restart bultin function ${RESTART_BUILTIN}"
[ "${RESTART_BUILTIN}" ] && kodi-send -a "${RESTART_BUILTIN}"
;;
esac
}

download(){
Expand All @@ -91,7 +103,7 @@ download(){
unzip -q "${TMP}" -d "${TARGET_DIR}"
rm "${TMP}"
else
echo "${DESC} present"
echo "${DESC} already present"
fi
}

Expand All @@ -107,6 +119,8 @@ cores(){
xml="${dir}addon.xml"
so="${dir}${core}.so"

echo "importing core ${core}"

[ -f "${so}" ] && ln -f -s "${so}" "${CORES_DIR}"
[ -f "${xml}" ] && coreinfo "${xml}" > "${CORES_DIR}/${core}.info"

Expand All @@ -132,15 +146,8 @@ coreinfo(){
sed -E 's/^extensions =/supported_extensions =/' | \
sed -E 's/^provider-name =/authors =/' | \
sed -E 's/^summary =/display_name =/'

# sed -E 's/^id =/corename =/' | \
# sed -E 's/^platforms =/system_name =/' | \
# sed -E 's/^name = "(.+) - (.+) \((.+)\)"$/manufacturer = "\1"\ndatabase = "\1 - \2"\ncorename = "\3"/' | \
# unused=id,platforms
# same=description,license
}

#echo "$(date) - $0 $@" >> /storage/.kodi/addons/game.retroarch/retroarch-ctl.log
actions=$(grep -Eo '^[a-z1-9_]+\(\)' "$0" | grep -Eo '[a-z1-9_]+' | sed ':a; N; $!ba; s/\n/|/g')
cmd="${1:?No command provided. Usage: $(basename """$0""") ${actions}}"
echo "${cmd}" | grep -qE "^(${actions})$" || { echo "Unknown command ${cmd}. Usage: $(basename """$0""") ${actions}"; exit 1;}
Expand Down
27 changes: 26 additions & 1 deletion game.retroarch/resources/language/English/strings.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,33 @@ msgstr ""

msgctxt "#30001"
msgid "Download RetroArch Assets"
msgstr ""
msgstr "automatically download RetroArch assets and autoconfig on RetroArch start"

msgctxt "#30002"
msgid "Link libretro Cores"
msgstr "automatically import existing Kodi libretro cores into RetroArch"

msgctxt "#30003"
msgid "Enable CPU/GPU performance mode"
msgstr "set CPU and GPU performance mode when RetroArch is running"

msgctxt "#30004"
msgid "Kodi Restart Action"
msgstr "launch the specified action after Kodi restarts"

6msgctxt "#30005"
msgid "Window"
msgstr "open the specified Kodi window"

msgctxt "#30006"
msgid "Builtin Function"
msgstr "run the specified Kodi builtin function"

msgctxt "#30007"
msgid "Script"
msgstr "execute the specified custom shell script or executable"

msgctxt "#30008"
msgid "Script Args"
msgstr ""

13 changes: 10 additions & 3 deletions game.retroarch/resources/settings.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<category label="30000">
<setting label="30001" type="bool" id="DOWNLOAD_ASSETS" default="true" />
<setting label="30002" type="bool" id="LINK_LIBRETRO_CORES" default="true" />
<category label="30000">
<setting label="30001" type="bool" id="DOWNLOAD_ASSETS" default="true" />
<setting label="30002" type="bool" id="LINK_LIBRETRO_CORES" default="true" />
<setting label="30003" type="bool" id="PERF_MODE" default="true" />
<setting type="sep"/>
<setting label="30004" type="select" id="RESTART_ACTION" default="None" values="None|Open Window|Builtin Function|Execute Script" />
<setting label="30005" type="select" id="RESTART_WINDOW" default="Home" values="Home|Games|Music|Pictures|TVChannels|TVGuide|Videos" subsetting="true" visible="eq(-1,Open Window)" />
<setting label="30006" type="text" id="RESTART_BUILTIN" default="" subsetting="true" visible="eq(-2,Builtin Function)" />
<setting label="30007" type="executable" id="RESTART_SCRIPT" default="" subsetting="true" visible="eq(-3,Execute Script)" />
<setting label="30008" type="text" id="RESTART_SCRIPT_ARGS" default="" subsetting="true" visible="eq(-4,Execute Script)" />
</category>
</settings>
6 changes: 6 additions & 0 deletions game.retroarch/settings-default.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<settings>
<setting id="DOWNLOAD_ASSETS" value="true" />
<setting id="LINK_LIBRETRO_CORES" value="true" />
<setting id="PERF_MODE" value="true" />
<setting id="RESTART_ACTION" value="None" />
<setting id="RESTART_WINDOW" value="Home" />
<setting id="RESTART_BUILTIN" value="" />
<setting id="RESTART_SCRIPT" value="" />
<setting id="RESTART_SCRIPT_ARGS" value="" />
</settings>

0 comments on commit 5e820cb

Please sign in to comment.