179 lines
4.9 KiB
Bash
Executable File
179 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
rom_dir=$(echo "$1" | sed -e 's/\/$//')
|
|
sys_type="$(basename "$rom_dir")"
|
|
ROM_PREFIX=${ROM_PREFIX:-"/storage/roms"}
|
|
CORE_PREFIX=${CORE_PREFIX:-"/tmp/cores"}
|
|
|
|
case "$sys_type" in
|
|
'nes')
|
|
rom_ext="nes"
|
|
core_path="$CORE_PREFIX/fceumm_libretro.so"
|
|
core_name="Nintendo - NES / Famicom (FCEUmm)"
|
|
db_name="Nintendo - Nintendo Entertainment System.lpl"
|
|
;;
|
|
'atari2600')
|
|
rom_ext="a26"
|
|
core_path="$CORE_PREFIX/stella_libretro.so"
|
|
core_name="Atari - 2600 (Stella)"
|
|
db_name="Atari - 2600.lpl"
|
|
;;
|
|
'lynx')
|
|
rom_ext="lnx"
|
|
core_path="$CORE_PREFIX/handy_libretro.so"
|
|
core_name="Atari - Lynx (Handy)"
|
|
db_name="Atari - Lynx.lpl"
|
|
;;
|
|
'mame')
|
|
rom_ext="zip"
|
|
core_path="$CORE_PREFIX/mame2003_plus_libretro.so"
|
|
core_name="Arcade (MAME 2003-Plus)"
|
|
db_name="MAME 2003-Plus.lpl"
|
|
;;
|
|
'pcengine')
|
|
rom_ext="pce"
|
|
core_path="$CORE_PREFIX/mednafen_supergrafx_libretro.so"
|
|
core_name="NEC - PC Engine SuperGrafx (Beetle SuperGrafx)"
|
|
db_name="NEC - PC Engine - TurboGrafx 16.lpl"
|
|
;;
|
|
'gba')
|
|
rom_ext="gba"
|
|
core_path="$CORE_PREFIX/mgba_libretro.so"
|
|
core_name="Nintendo - Game Boy Advance (mGBA)"
|
|
db_name="Nintendo - Game Boy Advance.lpl"
|
|
;;
|
|
'gbc')
|
|
rom_ext="gbc"
|
|
core_path="$CORE_PREFIX/gambatte_libretro.so"
|
|
core_name="Nintendo - Game Boy / Color (Gambatte)"
|
|
db_name="Nintendo - Game Boy Color.lpl"
|
|
;;
|
|
'gb')
|
|
rom_ext="gb"
|
|
core_path="$CORE_PREFIX/gambatte_libretro.so"
|
|
core_name="Nintendo - Game Boy / Color (Gambatte)"
|
|
db_name="Nintendo - Game Boy.lpl"
|
|
;;
|
|
'n64')
|
|
rom_ext="z64"
|
|
core_path="$CORE_PREFIX/mupen64plus_next_libretro.so"
|
|
core_name="Nintendo - Nintendo 64 (Mupen64Plus-Next)"
|
|
db_name="Nintendo - Nintendo 64.lpl"
|
|
;;
|
|
'snes')
|
|
rom_ext="sfc"
|
|
core_path="$CORE_PREFIX/snes9x_libretro.so"
|
|
core_name="Nintendo - SNES / SFC (Snes9x - Current)"
|
|
db_name="Nintendo - Super Nintendo Entertainment System.lpl"
|
|
;;
|
|
'ngpc')
|
|
rom_ext="ngc"
|
|
core_path="$CORE_PREFIX/mednafen_ngp_libretro.so"
|
|
core_name="SNK - Neo Geo Pocket / Color (Beetle NeoPop)"
|
|
db_name="SNK - Neo Geo Pocket Color.lpl"
|
|
;;
|
|
'gamegear')
|
|
rom_ext="gg"
|
|
core_path="$CORE_PREFIX/genesis_plus_gx_libretro.so"
|
|
core_name="Sega - MS/GG/MD/CD (Genesis Plus GX)"
|
|
db_name="Sega - Game Gear.lpl"
|
|
;;
|
|
'mastersystem')
|
|
rom_ext="sms"
|
|
core_path="$CORE_PREFIX/genesis_plus_gx_libretro.so"
|
|
core_name="Sega - MS/GG/MD/CD (Genesis Plus GX)"
|
|
db_name="Sega - Master System - Mark III.lpl"
|
|
;;
|
|
'megadrive')
|
|
rom_ext="md"
|
|
core_path="$CORE_PREFIX/genesis_plus_gx_libretro.so"
|
|
core_name="Sega - MS/GG/MD/CD (Genesis Plus GX)"
|
|
db_name="Sega - Mega Drive - Genesis.lpl"
|
|
;;
|
|
'psx')
|
|
rom_ext="cue"
|
|
core_path="$CORE_PREFIX/pcsx_rearmed_libretro.so"
|
|
core_name="Sony - PlayStation (PCSX ReARMed)"
|
|
db_name="Sony - PlayStation.lpl"
|
|
;;
|
|
'psp')
|
|
rom_ext="iso"
|
|
core_path="$CORE_PREFIX/ppsspp_libretro.so"
|
|
core_name="Sony - PlayStation Portable (PPSSPP)"
|
|
db_name="Sony - PlayStation Portable.lpl"
|
|
;;
|
|
'wswan')
|
|
rom_ext="ws"
|
|
core_path="$CORE_PREFIX/mednafen_wswan_libretro.so"
|
|
core_name="Bandai - WonderSwan (Beetle Cygne)"
|
|
db_name="Bandai - WonderSwan.lpl"
|
|
;;
|
|
'wswanc')
|
|
rom_ext="wsc"
|
|
core_path="$CORE_PREFIX/mednafen_wswan_libretro.so"
|
|
core_name="Bandai - WonderSwan Color (Beetle Cygne)"
|
|
db_name="Bandai - WonderSwan Color.lpl"
|
|
;;
|
|
'nds')
|
|
rom_ext="nds"
|
|
core_path="$CORE_PREFIX/desmume_libretro.so"
|
|
core_name="Nintendo - DS (DeSmuME)"
|
|
db_name="Nintendo - Nintendo DS.lpl"
|
|
;;
|
|
'prboom')
|
|
# special case, use template
|
|
echo 'Generating DOOM.lpl from template...'
|
|
sed "s|\\\$CORE_PREFIX|$CORE_PREFIX|g" DOOM.lpl | sed "s|\\\$ROM_PREFIX|$ROM_PREFIX|g" > out/DOOM.lpl
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Don't recognize system for roms in $sys_type directory..."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
cat > out/temp.json <<EOF
|
|
{
|
|
"version": "1.5",
|
|
"default_core_path": "$core_path",
|
|
"default_core_name": "$core_name",
|
|
"label_display_mode": 0,
|
|
"right_thumbnail_mode": 0,
|
|
"left_thumbnail_mode": 0,
|
|
"sort_mode": 0,
|
|
"items": [
|
|
EOF
|
|
|
|
mkdir -p out
|
|
echo "Reading roms from $rom_dir/*.$rom_ext..."
|
|
comma=
|
|
for rom in "$rom_dir"/*."$rom_ext"; do
|
|
rom_file="$(basename "$rom" | sed 's/"/\\"/g')"
|
|
if [ "$sys_type" = "arcade" ]; then
|
|
mame_name="${rom_file%."$rom_ext"}"
|
|
rom_label="$(jq -r '.[] | select(.name=="'"$mame_name"'") | .description' mame2003plusdb.json | sed 's/\( ([^)]\+)\)*$//')"
|
|
else
|
|
rom_label="$(echo "$rom_file" | sed 's/ \?\[[^]]\+\]//g' | sed 's/\( ([^)]\+)\)*\.[^.]\+$//')"
|
|
|
|
fi
|
|
rom_path="$ROM_PREFIX/$sys_type/$rom_file"
|
|
cat >> out/temp.json <<EOF
|
|
$comma{
|
|
"path": "$rom_path",
|
|
"label": "$rom_label",
|
|
"crc32": "DETECT",
|
|
"db_name": "$db_name"
|
|
}
|
|
EOF
|
|
comma=','
|
|
done
|
|
|
|
cat >> out/temp.json <<EOF
|
|
]
|
|
}
|
|
EOF
|
|
|
|
if jq . out/temp.json > "out/$db_name"; then
|
|
rm out/temp.json
|
|
fi
|