307 lines
7.0 KiB
Bash
Executable File
307 lines
7.0 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="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"
|
|
|
|
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
|
|
|
|
touch "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
|
|
echo "{" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"version\": \"1.4\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"default_core_path\": \"\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"default_core_name\": \"\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"label_display_mode\": 0," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"right_thumbnail_mode\": 0," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"left_thumbnail_mode\": 0," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"sort_mode\": 0," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"items\": [" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
for CHDFILE in "${ROM_FOLDER}"/"${SYSTEM}"/*.chd; do
|
|
echo " {" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"path\": \"$(basename "${CHDFILE}" .chd)\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"label\": \"${CHDFILE}\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"core_path\": \"DETECT\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"core_name\": \"DETECT\"," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " \"db_name\": \"${PLAYLIST_NAME}\"" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo " }," >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
done
|
|
echo " ]" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|
|
echo "}" >> "${PLAYLISTS_FOLDER}"/"${PLAYLIST_NAME}".lpl
|