dotfiles/recipes/emulationstation

132 lines
6.3 KiB
Bash

#!/bin/bash
# Description: A frontend for multiple emulators
set -e
function __emulationstation_config {
mkdir -p $HOME/.emulationstation
if test -f $HOME/.emulationstation/es_systems.cfg; then
return
fi
cat > $HOME/.emulationstation/es_systems.cfg <<EOF
<!-- This is the EmulationStation Systems configuration file.
All systems must be contained within the <systemList> tag.-->
<systemList>
<!-- Here's an example system to get you started. -->
<system>
<!-- A short name, used internally. Traditionally lower-case. -->
<name>nes</name>
<!-- A "pretty" name, displayed in menus and such. -->
<fullname>Nintendo Entertainment System</fullname>
<!-- The path to start searching for ROMs in. '~' will be expanded to $HOME on Linux or %HOMEPATH% on Windows. -->
<path>~/roms/nes</path>
<!-- A list of extensions to search for, delimited by any of the whitespace characters (", \r\n\t").
You MUST include the period at the start of the extension! It's also case sensitive. -->
<extension>.nes .NES</extension>
<!-- The shell command executed when a game is selected. A few special tags are replaced if found in a command:
%ROM% is replaced by a bash-special-character-escaped absolute path to the ROM.
%BASENAME% is replaced by the "base" name of the ROM. For example, "/foo/bar.rom" would have a basename of "bar". Useful for MAME.
%ROM_RAW% is the raw, unescaped path to the ROM. -->
<command>retroarch -L /usr/lib/libretro/mesen_libretro.so %ROM%</command>
<!-- The platform to use when scraping. You can see the full list of accepted platforms in src/PlatformIds.cpp.
It's case sensitive, but everything is lowercase. This tag is optional.
You can use multiple platforms too, delimited with any of the whitespace characters (", \r\n\t"), eg: "genesis, megadrive" -->
<platform>nes</platform>
<!-- The theme to load from the current theme set. See THEMES.md for more information.
This tag is optional. If not set, it will default to the value of <name>. -->
<theme>nes</theme>
</system>
<system>
<name>snes</name>
<fullname>Super Nintendo Entertainment System</fullname>
<path>~/roms/snes</path>
<extension>.smc .sfc .SMC .SFC</extension>
<command> retroarch -L /usr/lib/libretro/snes9x_libretro.so %ROM%</command>
<platform>snes</platform>
<theme>snes</theme>
</system>
<system>
<name>ps2</name>
<fullname>Playstation 2</fullname>
<path>~/roms/ps2</path>
<extension>.iso .ISO</extension>
<command>retroarch -L /usr/lib/libretro/pcsx2_libretro.so %ROM%</command>
<platform>ps2</platform>
<theme>ps2</theme>
</system>
</systemList>
EOF
}
function __emulationstation_theme_simple {
if test -d $HOME/.emulationstation/themes/simple; then
return
fi
echo "[curl] Downloading simple emulationstation theme"
local tempdir=$(mktemp -d)
curl -skL https://www.emulationstation.org/downloads/themes/simple_latest.zip --output "$tempdir/simple.zip"
unzip -qd $HOME/.emulationstation/themes "$tempdir/simple.zip"
rm -rf "$tempdir"
}
case $_PLATFORM in
arch)
_recipe _arch
_yay emulationstation-git
_yay retroarch
# _yay libretro-beetle-pce # NEC PC Engine/SuperGrafx/CD core
# _yay libretro-beetle-pce-fast # NEC PC Engine/CD core
# _yay libretro-beetle-psx # Sony PlayStation core
# _yay libretro-beetle-psx-hw # Sony PlayStation core
# _yay libretro-beetle-supergrafx # NEC SuperGrafx core
# _yay libretro-blastem # Sega Mega Drive core
# _yay libretro-bsnes # Super Nintendo Entertainment System cores
# _yay libretro-bsnes-hd # Super Nintendo Entertainment System core
# _yay libretro-bsnes2014 # Super Nintendo Entertainment System cores
# _yay libretro-citra # Nintendo 3DS core
# _yay libretro-core-info # Libretro core info files
# _yay libretro-desmume # Nintendo DS core
# _yay libretro-dolphin # Nintendo GC/Wii core
# _yay libretro-duckstation # Sony PlayStation core
# _yay libretro-flycast # Sega Dreamcast core
# _yay libretro-gambatte # Nintendo Game Boy/Game Boy Color core
# _yay libretro-genesis-plus-gx # Sega MS/GG/MD/CD core
# _yay libretro-kronos # Sega Saturn core
# _yay libretro-mame # MAME Arcade core
# _yay libretro-mame2016 # MAME 2016 Arcade core
# _yay libretro-melonds # Nintendo DS core
_yay libretro-mesen # Nintendo Entertainment System core
# _yay libretro-mesen-s # Super Nintendo Entertainment System core
# _yay libretro-mgba # Nintendo Game Boy Advance core
# _yay libretro-mupen64plus-next # Nintendo 64 core
# _yay libretro-nestopia # Nintendo Entertainment System core
# _yay libretro-overlays # Collection of overlays for libretro
# _yay libretro-parallel-n64 # Nintendo 64 core
_yay libretro-pcsx2 # Sony PlayStation 2 core
# _yay libretro-picodrive # Sega MS/MD/CD/32X core
# _yay libretro-play # Sony PlayStation 2 core
# _yay libretro-ppsspp # Sony PlayStation Portable core
# _yay libretro-retrodream # Sega Dreamcast core
# _yay libretro-sameboy # Nintendo Game Boy/Game Boy Color core
# _yay libretro-scummvm # ScummVM core
# _yay libretro-shaders-slang # Collection of shaders for libretro
_yay libretro-snes9x # Super Nintendo Entertainment System core
# _yay libretro-yabause # Sega Saturn core
# _yay libretro-mame-git # libretro implementation of MAME. (Arcade)
# _yay libretro-opera-git # libretro implementation of 4DO/libfreedo (3DO)
# _yay libretro-stella2014-git # libretro implementation of Stella. (Atari 2600)
_run "[emulationstation] Configuring systems" __emulationstation_config
__emulationstation_theme_simple
;;
esac