Last active
October 26, 2025 21:35
-
-
Save Langerz82/61493b8e67274cc26e7318316c6aba32 to your computer and use it in GitHub Desktop.
EmuELEC - amiberry.start
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # 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) 2025-present Langerz82 (https://github.com/Langerz82) | |
| . /etc/profile | |
| # 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=/emuelec/logs/amiberry.log | |
| MAX_DRIVES=4 | |
| i=0 | |
| echo "EmuELEC Amiberry Log" > "${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_MODEL() { | |
| local MODEL=A500 | |
| if [ `echo $1 | grep -e 'AGA' | wc -l` -eq 1 -o `echo "${AMIBERRY_TMP_DIR}"/* | grep -e 'AGA' | wc -l` -eq 1 ] || [[ "$1" = */amiga1200/* ]]; then | |
| MODEL=A1200 | |
| elif [ `echo $1 | grep -e 'CD32' | wc -l` -eq 1 -o `echo "${AMIBERRY_TMP_DIR}"/* | grep -e 'CD32' | wc -l` -eq 1 ] || [[ "$1" = */cd32/* ]] || [[ "$1" = */amigacd32/* ]]; then | |
| MODEL=CD32 | |
| fi | |
| echo ${MODEL} | |
| } | |
| AMIBERRY_SET_CONF() { | |
| local CONFIG_FILE="${AMIBERRY_DIR}/conf/Amiga${1}-custom.uae" | |
| if [[ -f "${CONFIG_FILE}" ]]; then | |
| cp ${CONFIG_FILE} "${AMIBERRY_TMP_CONFIG}" | |
| echo -f "${AMIBERRY_TMP_CONFIG}" | |
| fi | |
| CONFIG_FILE="${AMIBERRY_DIR}/conf/custom.uae" | |
| if [[ -f "${CONFIG_FILE}" ]]; then | |
| cp ${CONFIG_FILE} "${AMIBERRY_TMP_CONFIG}" | |
| echo -f "${AMIBERRY_TMP_CONFIG}" | |
| fi | |
| echo "" | |
| } | |
| AMIBERRY_GET_ARGS() { | |
| local MODEL=$( AMIBERRY_SET_MODEL "${1}" ) | |
| local CONF_ARG=$( AMIBERRY_SET_CONF ${MODEL} ) | |
| if [[ -z ${CONF_ARG} ]]; then | |
| CONF_ARG="--model ${MODEL} ${AMIBERRY_ADD_ARGS}" | |
| else | |
| CONF_ARG="${CONF_ARG} ${AMIBERRY_ADD_ARGS}" | |
| fi | |
| echo ${CONF_ARG} --log | |
| } | |
| AMIBERRY_ADD_ARGS="${2}" | |
| # 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} | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| amiberry ${AMIBERRY_ARGS} --autoload "$1" >> ${AMIBERRY_LOG} 2>&1 | |
| else | |
| # .zip file detected | |
| echo "Loading a .zip file..." >> ${AMIBERRY_LOG} | |
| MODEL=$( AMIBERRY_SET_MODEL "${1}" ) | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| # Assign files to floppy0-3 | |
| FLOPPY_FILE=/tmp/emulation/amiberry_floppy | |
| FLOPPY_ARG=() | |
| i=0 | |
| for FILE in "${AMIBERRY_TMP_DIR}"/* | |
| do | |
| FLOPPY_ARG+=(-${i} "${FILE}") | |
| [[ "${FILE}" = *.cue ]] && CUE_FILE=${FILE} && break | |
| if [ `echo $1 | grep -i -e .chd -e .cue -e .iso -e .bin | wc -l` -eq 1 ]; then | |
| CD_FILE=${FILE} | |
| fi | |
| i=$(($i+1)) | |
| # This emulator supports 4 floppies max | |
| if [ ${i} -eq ${MAX_DRIVES} ]; then | |
| break; | |
| fi | |
| done | |
| # cd ${AMIBERRY_TMP_DIR} | |
| if [[ ! -z ${CUE_FILE} ]]; then | |
| amiberry ${AMIBERRY_ARGS} --cdimage "${CUE_FILE}" >> ${AMIBERRY_LOG} 2>&1 | |
| elif [[ ! -z ${CD_FILE} ]]; then | |
| amiberry ${AMIBERRY_ARGS} --autoload "${CD_FILE}" >> ${AMIBERRY_LOG} 2>&1 | |
| else | |
| amiberry ${AMIBERRY_ARGS} "${FLOPPY_ARG[@]}" >> ${AMIBERRY_LOG} 2>&1 | |
| fi | |
| 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} | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| amiberry ${AMIBERRY_ARGS} --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} | |
| # AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| # Load .uae config file | |
| amiberry -f "$1" >> ${AMIBERRY_LOG} 2>&1 | |
| # Check for CD / CD32 images (.chd .cue .iso .bin) | |
| elif [ `echo $1 | grep -i -e .cue | wc -l` -eq 1 ]; then | |
| # CD / CD32 image detected | |
| echo "Loading a CD/CD32 image file..." >> ${AMIBERRY_LOG} | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| # Autoload lets Amiberry mount CD32 CDs directly instead of treating them as DF0 | |
| amiberry ${AMIBERRY_ARGS} --cdimage "$1" >> ${AMIBERRY_LOG} 2>&1 | |
| # All other files (.adf .adz .ipf) | |
| elif [ `echo $1 | grep -i -e .chd -e .iso -e .bin | wc -l` -eq 1 ]; then | |
| # CD / CD32 image detected | |
| echo "Loading a CD/CD32 image file..." >> ${AMIBERRY_LOG} | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| # Autoload lets Amiberry mount CD32 CDs directly instead of treating them as DF0 | |
| amiberry ${AMIBERRY_ARGS} --autoload "$1" >> ${AMIBERRY_LOG} 2>&1 | |
| else | |
| #.adf or .adz or .ipf file detected | |
| echo "Loading a single .adf or .adz or .ipf file..." >> ${AMIBERRY_LOG} | |
| AMIBERRY_ARGS=$( AMIBERRY_GET_ARGS "${1}" ) | |
| amiberry ${AMIBERRY_ARGS} -0 "${1}" >> ${AMIBERRY_LOG} 2>&1 | |
| fi | |
| # Remove temporary dir | |
| rm -rf "${AMIBERRY_TMP_DIR}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment