160 lines
4.9 KiB
Bash
Executable file
160 lines
4.9 KiB
Bash
Executable file
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 0riginally created by Escalade (https://github.com/escalade)
|
|
# Copyright (C) 2018-present 5schatten (https://github.com/5schatten)
|
|
# Copyright (C) 2022-present Fewtarius
|
|
|
|
. /etc/profile
|
|
|
|
jslisten set "-9 amiberry"
|
|
|
|
# Set some common variables
|
|
AMIBERRY_DIR="/storage/.config/amiberry"
|
|
AMIBERRY_CONFIG_DIR="${AMIBERRY_DIR}/conf"
|
|
AMIBERRY_TMP_DIR="/tmp/emulation/amiberry"
|
|
AMIBERRY_TMP_CONFIG="${AMIBERRY_TMP_DIR}/.amiberry_conf.uae"
|
|
AMIBERRY_LOG="/var/log/amiberry.log"
|
|
BIOS_PATH="/storage/roms/bios"
|
|
MAX_DRIVES=4
|
|
i=0
|
|
|
|
FBWIDTH=$(fbset | awk '/geometry/ {print $2}')
|
|
FBHEIGHT=$(fbset | awk '/geometry/ {print $3}')
|
|
|
|
echo "Amiberry Log" > "${AMIBERRY_LOG}"
|
|
|
|
if [ ! -d "${AMIBERRY_TMP_DIR}" ]
|
|
then
|
|
mkdir -p "${AMIBERRY_TMP_DIR}"
|
|
fi
|
|
|
|
if [ ! -d "${AMIBERRY_DIR}" ]
|
|
then
|
|
cp -rf /usr/config/amiberry ${AMIBERRY_DIR}
|
|
fi
|
|
|
|
### Refresh the configs so we can manage them.
|
|
cp -f /usr/config/amiberry/conf/* ${AMIBERRY_DIR}/conf
|
|
|
|
find_gamepad() {
|
|
GAMEPAD=$(grep -b4 js0 /proc/bus/input/devices | awk 'BEGIN {FS="\""}; /Name/ {printf $2}')
|
|
sed -i "s|joyport1_friendlyname=.*|joyport1_friendlyname=${GAMEPAD}|" "${AMIBERRY_TMP_CONFIG}"
|
|
echo "Gamepad used ${GAMEPAD}" >> "${AMIBERRY_LOG}"
|
|
}
|
|
|
|
# Set SDL audio driver to alsa
|
|
SDL_AUDIODRIVER=alsa
|
|
|
|
# Which file should amiberry load?
|
|
echo "Trying to boot this game:" "$1" >> ${AMIBERRY_LOG}
|
|
|
|
# Change working directory cause amiberry loads assets from there
|
|
cd ${AMIBERRY_DIR}
|
|
|
|
# Create a clean working directory
|
|
if [ -d "${AMIBERRY_TMP_DIR}" ]; then
|
|
echo "Clean up old working directory." >> ${AMIBERRY_LOG}
|
|
rm -rf "${AMIBERRY_TMP_DIR}"
|
|
fi
|
|
mkdir -p "${AMIBERRY_TMP_DIR}"
|
|
|
|
# Check if the file is an Amiga 1200/CD32 game and set configuration options for an Amiga 1200
|
|
AMIBERRY_SET_CONF() {
|
|
if [ `echo $1 | grep -E 'AGA|CD32' | wc -l` -eq 1 -o `echo "${AMIBERRY_TMP_DIR}"/* | grep -e 'AGA|CD32' | wc -l` -eq 1 ]; then
|
|
echo "Loading Amiga 1200/CD32 config." >> ${AMIBERRY_LOG}
|
|
cp ${AMIBERRY_CONFIG_DIR}/AmigaA1200-default.uae "${AMIBERRY_TMP_CONFIG}"
|
|
else
|
|
echo "Loading Amiga 500 config." >> ${AMIBERRY_LOG}
|
|
cp ${AMIBERRY_CONFIG_DIR}/AmigaA500-default.uae "${AMIBERRY_TMP_CONFIG}"
|
|
fi
|
|
sed -i "s#@BIOS_PATH@#${BIOS_PATH}#g" ${AMIBERRY_TMP_CONFIG}
|
|
sed -i "s#gfx_width=.*\$#${FBWIDTH}#g" ${AMIBERRY_TMP_CONFIG}
|
|
sed -i "s#gfx_height=.*\$#${FBHEIGHT}#g" ${AMIBERRY_TMP_CONFIG}
|
|
find_gamepad
|
|
}
|
|
|
|
# Check if we are loading a .zip file
|
|
if [ `echo $1 | grep -i .zip | wc -l` -eq 1 ]; then
|
|
|
|
# Unpack the zip file
|
|
unzip -q -o "$1" -d "${AMIBERRY_TMP_DIR}"
|
|
|
|
if [ -f "${AMIBERRY_TMP_DIR}"/*.*nfo ] && [ -f "${AMIBERRY_TMP_DIR}"/*/*.*lave ]; then
|
|
|
|
# WHDLoad file detected
|
|
echo "Loading a WHDLoad (.zip) file..." >> ${AMIBERRY_LOG}
|
|
|
|
# Set default config
|
|
AMIBERRY_SET_CONF "$1"
|
|
|
|
# Add amiberry.uae conf & start amiberry with WHDLoad
|
|
amiberry -f "${AMIBERRY_TMP_CONFIG}" --autoload "$1" >> ${AMIBERRY_LOG} 2>&1
|
|
|
|
else
|
|
# .zip file detected
|
|
echo "Loading a .zip file..." >> ${AMIBERRY_LOG}
|
|
|
|
# Set default config
|
|
AMIBERRY_SET_CONF "$1"
|
|
|
|
# Assign files to floppy0-3
|
|
for FILE in "${AMIBERRY_TMP_DIR}"/*
|
|
do
|
|
ARGS="${ARGS}\nfloppy$i="${FILE}""
|
|
i=$(($i+1))
|
|
# This emulator supports 4 floppies max
|
|
if [ $i -eq ${MAX_DRIVES} ]; then
|
|
break;
|
|
fi
|
|
done
|
|
|
|
# Add game files as floppies 0-3 to amiberry.uae & start amiberry
|
|
echo -e ";" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e "; *** temporary added Floppy Drives" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e ";" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e ${ARGS} >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e "\nAssigned floppy drives:" ${ARGS} "\n" >> "${AMIBERRY_LOG}"
|
|
amiberry -f "${AMIBERRY_TMP_CONFIG}" >> ${AMIBERRY_LOG} 2>&1
|
|
fi
|
|
|
|
# Check for WHDload files (.lha)
|
|
elif [ `echo $1 | grep -i .lha | wc -l` -eq 1 ]; then
|
|
|
|
#.lha file detected
|
|
echo "Loading a WHDLoad (.lha) file..." >> ${AMIBERRY_LOG}
|
|
|
|
# Set default config
|
|
AMIBERRY_SET_CONF "$1"
|
|
|
|
# Add amiberry.uae conf & start amiberry with WHDLoad
|
|
amiberry -f "${AMIBERRY_TMP_CONFIG}" --autoload "$1" >> ${AMIBERRY_LOG} 2>&1
|
|
|
|
# Check for .uae config file
|
|
elif [ `echo $1 | grep -i .uae | wc -l` -eq 1 ]; then
|
|
|
|
# .uae file detected
|
|
echo "Loading an .uae file..." >> ${AMIBERRY_LOG}
|
|
|
|
# Load .uae config file
|
|
amiberry -f "$1" >> ${AMIBERRY_LOG} 2>&1
|
|
|
|
# All other files (.adf .adz .ipf)
|
|
else
|
|
|
|
#.adf or .adz or .ipf file detected
|
|
echo "Loading a single .adf or .adz or .ipf file..." >> ${AMIBERRY_LOG}
|
|
|
|
# Set default config
|
|
AMIBERRY_SET_CONF "$1"
|
|
|
|
# Add game file as floppy0 to amiberry.uae & start amiberry
|
|
echo -e ";" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e "; *** temporary added Floppy Drives" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e ";" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e "\nfloppy0=$1" >> "${AMIBERRY_TMP_CONFIG}"
|
|
echo -e "\nAssigned floppy drive:\nfloppy0=$1\n" >> "${AMIBERRY_LOG}"
|
|
amiberry -f "${AMIBERRY_TMP_CONFIG}" >> ${AMIBERRY_LOG} 2>&1
|
|
fi
|
|
|
|
# Remove temporary dir
|
|
rm -rf "${AMIBERRY_TMP_DIR}"
|