Skip to content

Commit

Permalink
Merge pull request #3508 from joolswills/amiberry_v5.x
Browse files Browse the repository at this point in the history
Update amiberry version to v5.1
  • Loading branch information
joolswills committed May 3, 2022
2 parents 1aa7823 + 1416b9e commit 5cf9b95
Show file tree
Hide file tree
Showing 6 changed files with 212 additions and 112 deletions.
2 changes: 1 addition & 1 deletion platforms.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
ags_exts=".exe"
ags_fullname="Adventure Game Studio"

amiga_exts=".adf .adz .cue .dms .ipf .lha .m3u .sh .uae .zip"
amiga_exts=".adf .adz .chd .cue .dms .ipf .lha .m3u .sh .uae .zip"
amiga_fullname="Commodore Amiga"

amstradcpc_exts=".cdt .cpc .dsk .zip"
Expand Down
77 changes: 64 additions & 13 deletions scriptmodules/emulators/amiberry.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,27 @@

rp_module_id="amiberry"
rp_module_desc="Amiga emulator with JIT support (forked from uae4arm)"
rp_module_help="ROM Extension: .adf .ipf .zip\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir"
rp_module_help="ROM Extension: .adf .chd .ipf .lha .zip\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir/amiga"
rp_module_licence="GPL3 https://raw.githubusercontent.com/midwan/amiberry/master/COPYING"
rp_module_repo="git https://github.com/midwan/amiberry v3.3"
rp_module_repo="git https://github.com/midwan/amiberry v5.1"
rp_module_section="opt"
rp_module_flags="!all arm"
rp_module_flags="!all arm rpi3 rpi4"

function _update_hook_amiberry() {
local rom
for rom in kick13.rom kick20.rom kick31.rom; do
# if we have a kickstart rom in $biosdir, move it to $biosdir/amiga and symlink the old location
if [[ -f "$biosdir/$rom" && ! -h "$biosdir/$rom" ]]; then
moveConfigFile "$biosdir/$rom" "$biosdir/amiga/$rom"
fi
done
}

function _get_platform_amiberry() {
local platform="$__platform-sdl2"
if isPlatform "dispmanx"; then
if isPlatform "aarch64" && isPlatform "rpi"; then
platform="$__platform-64-sdl2"
elif isPlatform "dispmanx"; then
platform="$__platform"
elif isPlatform "odroid-xu"; then
platform="xu4"
Expand All @@ -34,7 +46,7 @@ function _get_platform_amiberry() {
}

function depends_amiberry() {
local depends=(autoconf libpng-dev libmpeg2-4-dev zlib1g-dev libmpg123-dev libflac-dev libxml2-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev)
local depends=(autoconf libpng-dev libmpeg2-4-dev zlib1g-dev libmpg123-dev libflac-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev)

isPlatform "dispmanx" && depends+=(libraspberrypi-dev)
isPlatform "vero4k" && depends+=(vero3-userland-dev-osmc)
Expand All @@ -44,43 +56,70 @@ function depends_amiberry() {

function sources_amiberry() {
gitPullOrClone
applyPatch "$md_data/01_preserve_env.diff"
# use our default optimisation level
sed -i "s/-Ofast//" "$md_build/Makefile"
sed -i "/CFLAGS += -O3/d" "$md_build/Makefile"
}

function build_amiberry() {
local platform=$(_get_platform_amiberry)
cd external/capsimg
./bootstrap.fs
./configure.fs
make -f Makefile.fs clean
make -f Makefile.fs
./bootstrap
./configure
make clean
make
cd "$md_build"
make clean
make PLATFORM="$platform"
make PLATFORM="$platform" CPUFLAGS="$__cpu_flags"
md_ret_require="$md_build/amiberry"
}

function install_amiberry() {
md_ret_files=(
'abr'
'amiberry'
'data'
'external/capsimg/capsimg.so'
'kickstarts'
)

cp -R "$md_build/whdboot" "$md_inst/whdboot-dist"
}

function configure_amiberry() {
configure_uae4arm
addEmulator 1 "amiberry" "amiga" "$md_inst/amiberry.sh %ROM%"
addEmulator 0 "amiberry-a500" "amiga" "$md_inst/amiberry.sh %ROM% --model A500"
addEmulator 0 "amiberry-a500plus" "amiga" "$md_inst/amiberry.sh %ROM% --model A500P"
addEmulator 0 "amiberry-a1200" "amiga" "$md_inst/amiberry.sh %ROM% --model A1200"
addEmulator 0 "amiberry-a4000" "amiga" "$md_inst/amiberry.sh %ROM% --model A4000"
addEmulator 0 "amiberry-cdtv" "amiga" "$md_inst/amiberry.sh %ROM% --model CDTV"
addEmulator 0 "amiberry-cd32" "amiga" "$md_inst/amiberry.sh %ROM% --model CD32"
addSystem "amiga"

[[ "$md_mode" == "remove" ]] && return

mkRomDir "amiga"

mkUserDir "$md_conf_root/amiga"
mkUserDir "$md_conf_root/amiga/amiberry"

# move config / save folders to $md_conf_root/amiga/amiberry
local dir
for dir in conf savestates screenshots; do
moveConfigDir "$md_inst/$dir" "$md_conf_root/amiga/amiberry/$dir"
done

# symlink cd32.nvr from $md_inst/data to "$md_conf_root/amiga/amiberry
moveConfigFile "$md_inst/data/cd32.nvr" "$md_conf_root/amiga/amiberry/cd32.nvr"

moveConfigDir "$md_inst/kickstarts" "$biosdir/amiga"
chown -R $user:$user "$biosdir/amiga"

# symlink the retroarch config / autoconfigs for amiberry to use
ln -sf "$configdir/all/retroarch/autoconfig" "$md_inst/controllers"
ln -sf "$configdir/all/retroarch.cfg" "$md_inst/conf/retroarch.cfg"

local config_dir="$md_conf_root/amiga/$md_id"
local config_dir="$md_conf_root/amiga/amiberry"

# create whdboot config area
moveConfigDir "$md_inst/whdboot" "$config_dir/whdboot"
Expand All @@ -89,4 +128,16 @@ function configure_amiberry() {
cp -R "$md_inst/whdboot-dist/"{game-data,save-data,boot-data.zip,WHDLoad} "$config_dir/whdboot/"

chown -R $user:$user "$config_dir/whdboot"

# copy shared uae4arm/amiberry launch script while setting is_amiberry=1
sed "s/is_amiberry=0/is_amiberry=1/" "$md_data/../uae4arm/uae4arm.sh" >"$md_inst/amiberry.sh"
chmod a+x "$md_inst/amiberry.sh"

local script="+Start Amiberry.sh"
cat > "$romdir/amiga/$script" << _EOF_
#!/bin/bash
"$md_inst/amiberry.sh"
_EOF_
chmod a+x "$romdir/amiga/$script"
chown $user:$user "$romdir/amiga/$script"
}
18 changes: 18 additions & 0 deletions scriptmodules/emulators/amiberry/01_preserve_env.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --git a/Makefile b/Makefile
index 29969690..dc798edf 100644
--- a/Makefile
+++ b/Makefile
@@ -17,10 +17,10 @@ SDL_CONFIG ?= sdl2-config
export SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags)
export SDL_LDFLAGS := $(shell $(SDL_CONFIG) --libs)

-CPPFLAGS = -MD -MT $@ -MF $(@:%.o=%.d) $(SDL_CFLAGS) -Iexternal/libguisan/include -Isrc -Isrc/osdep -Isrc/threaddep -Isrc/include -Isrc/archivers -Isrc/floppybridge -DAMIBERRY -D_FILE_OFFSET_BITS=64
-CFLAGS=-pipe -Wno-shift-overflow -Wno-narrowing
+CPPFLAGS += -MD -MT $@ -MF $(@:%.o=%.d) $(SDL_CFLAGS) -Iexternal/libguisan/include -Isrc -Isrc/osdep -Isrc/threaddep -Isrc/include -Isrc/archivers -Isrc/floppybridge -DAMIBERRY -D_FILE_OFFSET_BITS=64
+CFLAGS += -pipe -Wno-shift-overflow -Wno-narrowing
USE_LD ?= gold
-LDFLAGS = $(SDL_LDFLAGS) -lSDL2_image -lSDL2_ttf -lguisan -Lexternal/libguisan/lib
+LDFLAGS += $(SDL_LDFLAGS) -lSDL2_image -lSDL2_ttf -lguisan -Lexternal/libguisan/lib
ifneq ($(strip $(USE_LD)),)
LDFLAGS += -fuse-ld=$(USE_LD)
endif
6 changes: 3 additions & 3 deletions scriptmodules/emulators/uae4all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

rp_module_id="uae4all"
rp_module_desc="Amiga emulator UAE4All"
rp_module_help="ROM Extension: .adf\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir"
rp_module_help="ROM Extension: .adf\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir/amiga"
rp_module_licence="GPL2 https://raw.githubusercontent.com/RetroPie/uae4all2/retropie/copying"
rp_module_repo="git https://github.com/RetroPie/uae4all2.git retropie"
rp_module_section="opt"
Expand Down Expand Up @@ -76,13 +76,13 @@ function configure_uae4all() {
if [[ ! -h "$md_inst/kickstarts" ]]; then
rm -f "$md_inst/kickstarts/"{kick12.rom,kick13.rom,kick20.rom,kick31.rom}
fi
moveConfigDir "$md_inst/kickstarts" "$biosdir"
moveConfigDir "$md_inst/kickstarts" "$biosdir/amiga"

rm -f "$romdir/amiga/+Start UAE4All.sh"
if [[ "$md_mode" == "install" ]]; then
if [[ ! -f "$biosdir/aros-amiga-m68k-ext.bin" ]]; then
# unpack aros kickstart
unzip -j "aros20140110.zip" -d "$biosdir"
unzip -j "aros20140110.zip" -d "$biosdir/amiga"
fi

cat > "$romdir/amiga/+Start UAE4All.sh" << _EOF_
Expand Down
115 changes: 54 additions & 61 deletions scriptmodules/emulators/uae4arm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@

rp_module_id="uae4arm"
rp_module_desc="Amiga emulator with JIT support"
rp_module_help="ROM Extension: .adf\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir"
rp_module_help="ROM Extension: .adf .ipf\n\nCopy your Amiga games to $romdir/amiga\n\nCopy the required BIOS files\nkick13.rom\nkick20.rom\nkick31.rom\nto $biosdir/amiga"
rp_module_licence="GPL2"
rp_module_repo="git https://github.com/Chips-fr/uae4arm-rpi.git master"
rp_module_section="opt"
rp_module_flags="!all videocore"
rp_module_flags="!all dispmanx"

function depends_uae4arm() {
getDepends libsdl1.2-dev libsdl-gfx1.2-dev libsdl-ttf2.0-dev libguichan-dev libmpg123-dev libxml2-dev libflac-dev libmpeg2-4-dev
Expand Down Expand Up @@ -43,67 +43,60 @@ function install_uae4arm() {
}

function configure_uae4arm() {
addEmulator 1 "uae4arm" "amiga" "$md_inst/uae4arm.sh %ROM%"
addEmulator 0 "uae4arm-a500" "amiga" "$md_inst/uae4arm.sh %ROM% -config=conf/rp-a500.uae"
addEmulator 0 "uae4arm-a1200" "amiga" "$md_inst/uae4arm.sh %ROM% -config=conf/rp-a1200.uae"
addSystem "amiga"

[[ "$md_mode" == "remove" ]] && return

mkRomDir "amiga"

if [[ "$md_mode" == "install" ]]; then
mkUserDir "$md_conf_root/amiga"
mkUserDir "$md_conf_root/amiga/$md_id"

# move config / save folders to $md_conf_root/amiga/$md_id
local dir
for dir in conf savestates screenshots; do
moveConfigDir "$md_inst/$dir" "$md_conf_root/amiga/$md_id/$dir"
done

# and kickstart dir (removing old symlinks first)
if [[ ! -h "$md_inst/kickstarts" ]]; then
rm -f "$md_inst/kickstarts/"{kick12.rom,kick13.rom,kick20.rom,kick31.rom}
fi
moveConfigDir "$md_inst/kickstarts" "$biosdir"

local conf="$(mktemp)"
iniConfig "=" "" "$conf"
iniSet "config_description" "RetroPie A500, 68000, OCS, 512KB Chip + 512KB Slow Fast"
iniSet "chipmem_size" "1"
iniSet "bogomem_size" "2"
iniSet "chipset" "ocs"
iniSet "cachesize" "0"
iniSet "kickstart_rom_file" "\$(FILE_PATH)/kick13.rom"
copyDefaultConfig "$conf" "$md_conf_root/amiga/$md_id/conf/rp-a500.uae"
rm "$conf"

conf="$(mktemp)"
iniConfig "=" "" "$conf"
iniSet "config_description" "RetroPie A1200, 68EC020, AGA, 2MB Chip"
iniSet "chipmem_size" "4"
iniSet "finegrain_cpu_speed" "1024"
iniSet "cpu_type" "68ec020"
iniSet "cpu_model" "68020"
iniSet "chipset" "aga"
iniSet "cachesize" "0"
iniSet "kickstart_rom_file" "\$(FILE_PATH)/kick31.rom"
copyDefaultConfig "$conf" "$md_conf_root/amiga/$md_id/conf/rp-a1200.uae"
rm "$conf"

# copy launch script (used for uae4arm and amiberry)
sed "s/EMULATOR/$md_id/" "$scriptdir/scriptmodules/$md_type/uae4arm/uae4arm.sh" >"$md_inst/$md_id.sh"
chmod a+x "$md_inst/$md_id.sh"

local script="+Start UAE4Arm.sh"
[[ "$md_id" == "amiberry" ]] && script="+Start Amiberry.sh"
rm -f "$romdir/amiga/$script"
if [[ "$md_mode" == "install" ]]; then
cat > "$romdir/amiga/$script" << _EOF_
mkUserDir "$md_conf_root/amiga"
mkUserDir "$md_conf_root/amiga/uae4arm"

# move config / save folders to $md_conf_root/amiga/uae4arm
local dir
for dir in conf savestates screenshots; do
moveConfigDir "$md_inst/$dir" "$md_conf_root/amiga/uae4arm/$dir"
done

moveConfigDir "$md_inst/kickstarts" "$biosdir/amiga"
chown -R $user:$user "$biosdir/amiga"

local conf="$(mktemp)"
iniConfig "=" "" "$conf"
iniSet "config_description" "RetroPie A500, 68000, OCS, 512KB Chip + 512KB Slow Fast"
iniSet "chipmem_size" "1"
iniSet "bogomem_size" "2"
iniSet "chipset" "ocs"
iniSet "cachesize" "0"
iniSet "kickstart_rom_file" "\$(FILE_PATH)/kick13.rom"
copyDefaultConfig "$conf" "$md_conf_root/amiga/uae4arm/conf/rp-a500.uae"
rm "$conf"

conf="$(mktemp)"
iniConfig "=" "" "$conf"
iniSet "config_description" "RetroPie A1200, 68EC020, AGA, 2MB Chip"
iniSet "chipmem_size" "4"
iniSet "finegrain_cpu_speed" "1024"
iniSet "cpu_type" "68ec020"
iniSet "cpu_model" "68020"
iniSet "chipset" "aga"
iniSet "cachesize" "0"
iniSet "kickstart_rom_file" "\$(FILE_PATH)/kick31.rom"
copyDefaultConfig "$conf" "$md_conf_root/amiga/uae4arm/conf/rp-a1200.uae"
rm "$conf"

# copy shared uae4arm/amiberry launch script
cp "$md_data/uae4arm.sh" "$md_inst/"
chmod a+x "$md_inst/uae4arm.sh"

local script="+Start UAE4Arm.sh"
cat > "$romdir/amiga/$script" << _EOF_
#!/bin/bash
"$md_inst/$md_id.sh"
"$md_inst/uae4arm.sh"
_EOF_
chmod a+x "$romdir/amiga/$script"
chown $user:$user "$romdir/amiga/$script"
fi
fi

addEmulator 1 "$md_id" "amiga" "$md_inst/$md_id.sh auto %ROM%"
addEmulator 1 "$md_id-a500" "amiga" "$md_inst/$md_id.sh rp-a500.uae %ROM%"
addEmulator 1 "$md_id-a1200" "amiga" "$md_inst/$md_id.sh rp-a1200.uae %ROM%"
addSystem "amiga"
chmod a+x "$romdir/amiga/$script"
chown $user:$user "$romdir/amiga/$script"
}
Loading

0 comments on commit 5cf9b95

Please sign in to comment.