Files
scripts/create_retroarch_chd_playlist.sh
T
2021-01-17 17:18:38 +01:00

313 lines
6.6 KiB
Bash
Executable File

#!/bin/bash
function help_message() {
echo "$USAGE"
echo
echo "Where [SYSTEMS] are:"
for WORD in $SYSTEMS; do
echo -e "\t$WORD"
done
}
readonly USAGE="
USAGE:
$(basename "$0") [SYSTEM] [ROM_FOLDER] [PLAYLISTS_FOLDER]"
readonly SYSTEMS="pcenginecd 3do 3ds amiga amstradcpc apple2 arcade arcadia astrocde atari800 atari2600 atari5200 atari7800 atarijaguar atarilynx atarist c16 c64 c128 coco coleco daphne dragon32 dreamcast fba fds gameandwatch gamegear gb gba gbc gc genesis intellivision mame-advmame mame-libretro mame-mame4all mastersystem megacd megadrive msx n64 nds neogeo nes ngp ngpc oric pc pc88 pc98 pcfx pcengine pokemini ports ps2 psp psx saturn scummvm sega32x segacd sg-1000 snes steam ti99 trs-80 vectrex vic20 videopac virtualboy wii wonderswan wonderswancolor x68000 x1 zmachine zx81 zxspectrum"
# check if there are all the parameters
if [ "$#" -ne 3 ]; then
help_message
exit 0
fi
# check if the system parameter is valid
if ! echo "$SYSTEMS" | grep -w "$1" >/dev/null; then
printf "%s\n" "You must enter a valid system name."
help_message
exit 0
fi
if ! test -d "${ROM_FOLDER}"/"${SYSTEM}"; then
echo "${ROM_FOLDER}"/"${SYSTEM}" does not exists
exit 0
fi
#readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
readonly SYSTEM="$1"
readonly ROM_FOLDER="$2"
readonly PLAYLISTS_FOLDER="$3"
readonly BASE_PATH="/Users/sergio/Roms/roms.retroachievements.2020/"
case $SYSTEM in
3do)
readonly PLAYLIST_NAME=""
;;
3ds)
readonly PLAYLIST_NAME=""
;;
amiga)
readonly PLAYLIST_NAME=""
;;
amstradcpc)
readonly PLAYLIST_NAME=""
;;
apple2)
readonly PLAYLIST_NAME=""
;;
arcade)
readonly PLAYLIST_NAME="FBNeo - Arcade Games"
;;
arcadia)
readonly PLAYLIST_NAME=""
;;
astrocde)
readonly PLAYLIST_NAME=""
;;
atari800)
readonly PLAYLIST_NAME=""
;;
atari2600)
readonly PLAYLIST_NAME="Atari - 2600"
;;
atari5200)
readonly PLAYLIST_NAME=""
;;
atari7800)
readonly PLAYLIST_NAME="Atari - 7800"
;;
atarijaguar)
readonly PLAYLIST_NAME=""
;;
atarilynx)
readonly PLAYLIST_NAME="Atari - Lynx"
;;
atarist)
readonly PLAYLIST_NAME=""
;;
c16)
readonly PLAYLIST_NAME=""
;;
c64)
readonly PLAYLIST_NAME=""
;;
c128)
readonly PLAYLIST_NAME=""
;;
coco)
readonly PLAYLIST_NAME=""
;;
coleco)
readonly PLAYLIST_NAME="Coleco - ColecoVision"
;;
daphne)
readonly PLAYLIST_NAME=""
;;
dragon32)
readonly PLAYLIST_NAME=""
;;
dreamcast)
readonly PLAYLIST_NAME=""
;;
fba)
readonly PLAYLIST_NAME=""
;;
fds)
readonly PLAYLIST_NAME=""
;;
gameandwatch)
readonly PLAYLIST_NAME=""
;;
gamegear)
readonly PLAYLIST_NAME="Sega - Game Gear"
;;
gb)
readonly PLAYLIST_NAME="Nintendo - Game Boy"
;;
gba)
readonly PLAYLIST_NAME="Nintendo - Game Boy Advance"
;;
gbc)
readonly PLAYLIST_NAME="Nintendo - Game Boy Color"
;;
gc)
readonly PLAYLIST_NAME=""
;;
genesis)
readonly PLAYLIST_NAME=""
;;
intellivision)
readonly PLAYLIST_NAME=""
;;
mame-advmame)
readonly PLAYLIST_NAME=""
;;
mame-libretro)
readonly PLAYLIST_NAME=""
;;
mame-mame4all)
readonly PLAYLIST_NAME=""
;;
mastersystem)
readonly PLAYLIST_NAME="Sega - Master System - Mark III"
;;
megacd)
readonly PLAYLIST_NAME="Sega - Mega-CD - Sega CD"
;;
megadrive)
readonly PLAYLIST_NAME="Sega - Mega Drive - Genesis"
;;
msx)
readonly PLAYLIST_NAME="Microsoft - MSX"
;;
msx2)
readonly PLAYLIST_NAME="Microsoft - MSX2"
;;
n64)
readonly PLAYLIST_NAME="Nintendo - Nintendo 64"
;;
nds)
readonly PLAYLIST_NAME="Nintendo - Nintendo DS"
;;
neogeo)
readonly PLAYLIST_NAME=""
;;
nes)
readonly PLAYLIST_NAME="Nintendo - Nintendo Entertainment System"
;;
ngp)
readonly PLAYLIST_NAME="SNK - Neo Geo Pocket"
;;
ngpc)
readonly PLAYLIST_NAME="SNK - Neo Geo Pocket Color"
;;
oric)
readonly PLAYLIST_NAME=""
;;
pc)
readonly PLAYLIST_NAME=""
;;
pc88)
readonly PLAYLIST_NAME=""
;;
pc98)
readonly PLAYLIST_NAME=""
;;
pcfx)
readonly PLAYLIST_NAME=""
;;
pcengine)
readonly PLAYLIST_NAME="NEC - PC Engine - TurboGrafx 16"
;;
pcenginecd)
readonly PLAYLIST_NAME="NEC - PC Engine CD"
;;
pokemini)
readonly PLAYLIST_NAME=""
;;
ports)
readonly PLAYLIST_NAME=""
;;
ps2)
readonly PLAYLIST_NAME=""
;;
psp)
readonly PLAYLIST_NAME=""
;;
psx)
readonly PLAYLIST_NAME="Sony - PlayStation"
;;
saturn)
readonly PLAYLIST_NAME=""
;;
scummvm)
readonly PLAYLIST_NAME=""
;;
sega32x)
readonly PLAYLIST_NAME=""
;;
segacd)
readonly PLAYLIST_NAME="Sega - Mega-CD - Sega CD"
;;
sg-1000)
readonly PLAYLIST_NAME="Sega - SG-1000"
;;
snes)
readonly PLAYLIST_NAME="Nintendo - Super Nintendo Entertainment System"
;;
steam)
readonly PLAYLIST_NAME=""
;;
ti99)
readonly PLAYLIST_NAME=""
;;
trs-80)
readonly PLAYLIST_NAME=""
;;
vectrex)
readonly PLAYLIST_NAME=""
;;
vic20)
readonly PLAYLIST_NAME=""
;;
videopac)
readonly PLAYLIST_NAME=""
;;
virtualboy)
readonly PLAYLIST_NAME=""
;;
wii)
readonly PLAYLIST_NAME=""
;;
wonderswan)
readonly PLAYLIST_NAME="Bandai - WonderSwan"
;;
wonderswancolor)
readonly PLAYLIST_NAME="Bandai - WonderSwan Color"
;;
x68000)
readonly PLAYLIST_NAME=""
;;
x1)
readonly PLAYLIST_NAME=""
;;
zmachine)
readonly PLAYLIST_NAME=""
;;
zx81)
readonly PLAYLIST_NAME=""
;;
zxspectrum)
readonly PLAYLIST_NAME=""
;;
esac
if test -f "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl; then
rm "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
fi
touch "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
(echo "{";
echo " \"version\": \"1.4\",";
echo " \"default_core_path\": \"\",";
echo " \"default_core_name\": \"\",";
echo " \"label_display_mode\": 0,";
echo " \"right_thumbnail_mode\": 0,";
echo " \"left_thumbnail_mode\": 0,";
echo " \"sort_mode\": 0,";
echo " \"items\": [") >>"${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
for CHDFILE in "${ROM_FOLDER}"/*.chd; do
GAMENAME="$(basename "$CHDFILE" .chd)"
FOLDER="$(basename "$ROM_FOLDER")"
(echo " {";
echo " \"path\": \"${BASE_PATH}/${FOLDER}/${GAMENAME}.chd\",";
echo " \"label\": \"${GAMENAME}\",";
echo " \"core_path\": \"DETECT\",";
echo " \"core_name\": \"DETECT\",";
echo " \"db_name\": \"${PLAYLIST_NAME}.lpl\"";
echo " },") >>"${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
done
(echo " ]";
echo "}") >>"${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl