116 lines
3.7 KiB
Bash
116 lines
3.7 KiB
Bash
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
|
|
|
. /etc/profile
|
|
jslisten set "-9 duckstation-nogui"
|
|
|
|
#Copy config folder to .config/duckstation
|
|
if [ ! -d "/storage/.config/duckstation" ]; then
|
|
mkdir -p "/storage/.config/duckstation"
|
|
cp -r "/usr/config/duckstation" "/storage/.config/"
|
|
fi
|
|
|
|
#Link savestates to roms/savestates
|
|
if [ ! -d "/storage/roms/savestates/psx" ]; then
|
|
mkdir -p "/storage/roms/savestates/psx"
|
|
fi
|
|
if [ -d "/storage/.config/duckstation/savestates" ]; then
|
|
rm -rf "/storage/.config/duckstation/savestates"
|
|
fi
|
|
ln -sfv "/storage/roms/savestates/psx" "/storage/.config/duckstation/savestates"
|
|
|
|
#Copy gamecontroller db file from the device.
|
|
cp -rf /storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt /storage/.config/duckstation/@RESOURCE_FOLDER@/gamecontrollerdb.txt
|
|
|
|
#Set the cores to use
|
|
CORES=$(get_setting "cores" "${PLATFORM}" "${ROMNAME##*/}")
|
|
if [ "${CORES}" = "little" ]
|
|
then
|
|
EMUPERF="${SLOW_CORES}"
|
|
elif [ "${CORES}" = "big" ]
|
|
then
|
|
EMUPERF="${FAST_CORES}"
|
|
else
|
|
### All..
|
|
unset EMUPERF
|
|
fi
|
|
|
|
#Emulation Station Features
|
|
GAME=$(echo "${1}"| sed "s#^/.*/##")
|
|
ASPECT=$(get_setting aspect_ratio psx "${GAME}")
|
|
FPS=$(get_setting show_fps psx "${GAME}")
|
|
IRES=$(get_setting internal_resolution psx "${GAME}")
|
|
RENDERER=$(get_setting graphics_backend psx "${GAME}")
|
|
VSYNC=$(get_setting vsync psx "${GAME}")
|
|
|
|
#Aspect Ratio
|
|
if [ "$ASPECT" = "0" ]
|
|
then
|
|
sed -i '/^AspectRatio/c\AspectRatio = 4:3' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$ASPECT" = "1" ]
|
|
then
|
|
sed -i '/^AspectRatio/c\AspectRatio = 16:9' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
|
|
#Show FPS
|
|
if [ "$FPS" = "false" ]
|
|
then
|
|
sed -i '/^ShowFPS/c\ShowFPS = false' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$FPS" = "true" ]
|
|
then
|
|
sed -i '/^ShowFPS/c\ShowFPS = true' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
|
|
#Internal Resolution
|
|
if [ "$IRES" = "1" ]
|
|
then
|
|
sed -i '/^ResolutionScale =/c\ResolutionScale = 1' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$IRES" = "2" ]
|
|
then
|
|
sed -i '/^ResolutionScale =/c\ResolutionScale = 2' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$IRES" = "3" ]
|
|
then
|
|
sed -i '/^ResolutionScale =/c\ResolutionScale = 3' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$IRES" = "4" ]
|
|
then
|
|
sed -i '/^ResolutionScale =/c\ResolutionScale = 4' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$IRES" = "5" ]
|
|
then
|
|
sed -i '/^ResolutionScale =/c\ResolutionScale = 5' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
|
|
#Video Backend
|
|
if [ "$RENDERER" = "opengl" ]
|
|
then
|
|
sed -i '/^Renderer =/c\Renderer = OpenGL' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$RENDERER" = "vulkan" ]
|
|
then
|
|
sed -i '/^Renderer =/c\Renderer = Vulkan' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$RENDERER" = "software" ]
|
|
then
|
|
sed -i '/^Renderer =/c\Renderer = Software' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
|
|
#VSYNC
|
|
if [ "$VSYNC" = "off" ]
|
|
then
|
|
sed -i '/^VSync =/c\VSync = false' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
if [ "$VSYNC" = "on" ]
|
|
then
|
|
sed -i '/^VSync =/c\VSync = true' /storage/.config/duckstation/settings.ini
|
|
fi
|
|
|
|
|
|
#Run Duckstation
|
|
${EMUPERF} duckstation-nogui -fullscreen -settings "/storage/.config/duckstation/settings.ini" -- "${1}" > /dev/null 2>&1
|