#!/bin/bash readonly USAGE=" USAGE: $(basename "$0") [BUILD or SCRAP] [PATH] [SYSTEM]" function help_message() { echo "$USAGE" echo echo "Where [SYSTEM] are:" for WORD in $SYSTEMS; do echo -e "\t$WORD" done } 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 systems parameter is valid if ! echo "$SYSTEMS" | grep -w "$3" >/dev/null; then printf "%s\n" "You must enter a valid SYSTEM name." help_message exit 0 fi # variables #readonly COLOR_BLACK=$(tput setaf 0) #readonly COLOR_RED=$(tput setaf 1) #readonly COLOR_GREEN=$(tput setaf 2) #readonly COLOR_YELLOW=$(tput setaf 3) #readonly COLOR_BLUE=$(tput setaf 4) #readonly COLOR_MAGENTA=$(tput setaf 5) #readonly COLOR_CYAN=$(tput setaf 6) readonly COLOR_WHITE=$(tput setaf 7) #readonly COLOR_BACKGROUND_BLACK=$(tput setab 0) readonly COLOR_BACKGROUND_RED=$(tput setab 1) #readonly COLOR_BACKGROUND_GREEN=$(tput setab 2) #readonly COLOR_BACKGROUND_YELLOW=$(tput setab 3) #readonly COLOR_BACKGROUND_BLUE=$(tput setab 4) #readonly COLOR_BACKGROUND_MAGENTA=$(tput setab 5) #readonly COLOR_BACKGROUND_CYAN=$(tput setab 6) #readonly COLOR_BACKGROUND_WHITE=$(tput setab 7) readonly RESET_COLOR=$(tput sgr0) #readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" readonly ROM_DIR="$2" readonly SYSTEM_NAME="$3" readonly FRONTEND="emulationstation" readonly CONSOLE_ART=artwork.xml.retroarch readonly ARCADE_ART=artwork.xml.retroarch readonly CONSOLE_SCRAPERS="screenscraper mobygames thegamesdb" readonly ARCADE_SCRAPERS="screenacraper arcadedb" readonly BUILD_FLAGS_CONSOLE="unattend,forcefilename,relative" readonly BUILD_FLAGS_ARCADE="unattend,relative" readonly CONSOLE="3do 3ds amiga amstradcpc apple2 arcadia astrocde atari800 atari2600 atari5200 atari7800 atarijaguar atarilynx atarist c16 c64 c128 coco coleco daphne dragon32 dreamcast fds gameandwatch gamegear gb gba gbc gc genesis intellivision mastersystem megacd megadrive msx n64 nds nes ngp ngpc oric pc pc88 pc98 pcfx pcengine pokemini ports ps2 psp psx saturn scummvm sega32x segacd sg-1000 snes ti99 trs-80 vectrex vic20 videopac virtualboy wii wonderswan wonderswancolor x68000 x1 zmachine zx81 zxspectrum" readonly ARCADE="fba neogeo mame-advmame mame-mame4all" SCRAP=true BUILD=true if [ "$1" = SCRAP ]; then BUILD=false printf "%s\n" "${COLOR_WHITE}${COLOR_BACKGROUND_RED}## SCRAP ONLY ${RESET_COLOR}" sleep 1 fi if [ "$1" = BUILD ]; then SCRAP=false printf "%s\n" "${COLOR_WHITE}${COLOR_BACKGROUND_RED}## BUILD ONLY ${RESET_COLOR}" sleep 1 fi ## console systems if echo "${CONSOLE}" | grep -w "${SYSTEM_NAME}" >/dev/null; then if [ "${SCRAP}" = true ]; then for SCRAPER in ${CONSOLE_SCRAPERS}; do Skyscraper --flags videos,unattend,noresize,unpack -p "${SYSTEM_NAME}" -s "${SCRAPER}" -i "${ROM_DIR}"/"${SYSTEM_NAME}" done fi if [ "${BUILD}" = true ]; then Skyscraper --flags "${BUILD_FLAGS_CONSOLE}" -a $CONSOLE_ART -p "${SYSTEM_NAME}" -f "${FRONTEND}" -i "${ROM_DIR}"/"${SYSTEM_NAME}" fi exit 0 fi ## arcade systems if echo "${ARCADE}" | grep -w "${SYSTEM_NAME}" >/dev/null; then if [ "${SCRAP}" = true ]; then for SCRAPER in ${ARCADE_SCRAPERS}; do Skyscraper --flags videos,unattend,noresize -p "${SYSTEM_NAME}" -s "${SCRAPER}" -i "${ROM_DIR}"/"${SYSTEM_NAME}" done fi if [ "${BUILD}" = true ]; then Skyscraper --flags "${BUILD_FLAGS_ARCADE}" -a $ARCADE_ART -p "${SYSTEM_NAME}" -f "${FRONTEND}" -i "${ROM_DIR}"/"${SYSTEM_NAME}" fi exit 0 fi ## pcenginecd folder if test -d "${ROM_DIR}"/pcenginecd; then if [ "$SCRAP" = true ]; then for SCRAPER in $CONSOLE_SCRAPERS; do Skyscraper --flags videos,unattend,noresize,unpack -p pcengine -s "$SCRAPER" -i "${ROM_DIR}"/pcenginecd done fi if [ "$BUILD" = true ]; then Skyscraper --flags "${BUILD_FLAGS_CONSOLE}" -a $CONSOLE_ART -p pcengine -f "${FRONTEND}" -i "${ROM_DIR}"/pcenginecd fi fi ## arcade folder if test -d "${ROM_DIR}"/arcade; then if [ "$SCRAP" = true ]; then for SCRAPER in $ARCADE_SCRAPERS; do Skyscraper --flags videos,unattend,noresize -p fba -s "$SCRAPER" -i "${ROM_DIR}"/arcade done fi if [ "$BUILD" = true ]; then Skyscraper --flags "${BUILD_FLAGS_ARCADE}" -a $ARCADE_ART -p mame-advmame -f "${FRONTEND}" -i "${ROM_DIR}"/arcade fi fi