mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-24 10:02:29 +01:00
7ae7eadf48
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
73 lines
2.2 KiB
Bash
73 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# extract_roms.sh: find the Intellivision and/or ECS ROM images,
|
|
# either as zip files (which get unzipped) or as extracted contents,
|
|
# and copy them to the destination dir (if it exists). This script is
|
|
# intended to be run by jzintv.SlackBuild.
|
|
|
|
# First arg: the SlackBuild dir ($CWD in the caller).
|
|
srcdir="$1"
|
|
|
|
# 2nd arg: where the .bin files should go ($ROMDIR in the caller).
|
|
destdir="$2"
|
|
|
|
# Full list of dirs where we'll look for ROMs.
|
|
alldirs="$srcdir /usr/share/jzintv/rom /usr/share/games/jzintv/rom /usr/share/games/mame/roms ${JZINTV_ROM_PATH//: }"
|
|
|
|
echo "=== Will search for ROMs in: $alldirs"
|
|
|
|
# nocaseglob means we can handle intv.zip, intv.ZIP, INTV.ZIP, etc.
|
|
shopt -s nocaseglob
|
|
|
|
shopt -s nullglob
|
|
|
|
# First, extract any likely-looking zip files we find.
|
|
for dir in $alldirs; do
|
|
[ -d $dir ] || continue
|
|
for zipfile in $dir/intv*.zip $dir/ecs*.zip; do
|
|
echo "===> Extracting $zipfile"
|
|
unzip -o -LL $zipfile '*.rom' '*.bin' '*.int' '*.20' '*.70' '*.e0' '*.u21'
|
|
done
|
|
cd -
|
|
done
|
|
|
|
# Handle MAME/MESS split rom.
|
|
if [ -e ecs_rom.20 -a -e ecs_rom.70 -a -e ecs_rom.e0 ]; then
|
|
echo "===> found split ECS ROM, combining"
|
|
cat ecs_rom.20 ecs_rom.70 ecs_rom.e0 > ecs.bin
|
|
fi
|
|
|
|
# Handle the new MAME name for grom.bin.
|
|
if [ -e "ro-3-9503-003.u21" ]; then
|
|
echo "===> found MAME's ro-3-9503-003.u21, renaming to grom.bin"
|
|
mv ro-3-9503-003.u21 grom.bin
|
|
fi
|
|
|
|
# Now look for the actual ROMs, including any we just extracted above.
|
|
for dir in $(pwd) $alldirs; do
|
|
[ -d $dir ] || continue
|
|
echo "===> Looking for unzipped ROMs in $dir"
|
|
for file in $dir/{exec,grom,ecs}.{rom,bin,int}*; do
|
|
tmp_name="$( echo $file | tr A-Z a-z | sed 's,\.[^.]*$,.bin,' )"
|
|
dest_name="$( basename $tmp_name )"
|
|
if [ "$dest_name" = "intv_ecs.bin" ]; then
|
|
dest_name="ecs.bin"
|
|
fi
|
|
size="$( stat -c %s "$file" )"
|
|
echo "===> candidate for $dest_name: $file, size $size"
|
|
case "$dest_name" in
|
|
grom.bin)
|
|
[ "$size" != 2048 ] && break ;;
|
|
exec.bin)
|
|
[ "$size" != 8192 ] && break ;;
|
|
esc.bin)
|
|
[ "$size" != 24576 ] && break ;;
|
|
esac
|
|
case "$dest_name" in
|
|
grom.bin|exec.bin|ecs.bin)
|
|
echo "===> found $dest_name as $file"
|
|
[ -d "$destdir" ] && cp "$file" "$destdir/$dest_name"
|
|
;;
|
|
esac
|
|
done
|
|
done
|