Files
PS5_RetroArch/tools/build-opera.sh
T
Mihawk 8c6e8911ae Four cores: 3DO, Commodore Amiga, Neo Geo CD and ScummVM
Each from my local fork with a PS5 platform commit, through
tools/core-fork.sh:
- Opera (PS5_Opera, 3DO): FreeDO's modified LGPL forbids commercial use,
  so it joins the non-commercial parts (text from its sources' headers,
  tooling/notices/texts/opera-freedo.txt).
- PUAE (PS5_PUAE, Amiga): GPL-2.0-or-later; it boots Kickstart 1.3 from
  system/kick34005.A500, AROS without one.
- NeoCD (PS5_NeoCD, Neo Geo CD): LGPL-3.0-or-later; BIOS in system/neocd/.
- ScummVM (PS5_ScummVM: scummvm/scummvm v2026.3.0, every engine, no
  OpenGL): GPL-3.0-or-later. Its Makefile empties LDFLAGS, so the title's
  link flags go in as PS5_LDFLAGS (without them the wrapper linked
  libSceNet, which the core loader refuses); AR carries its flags (ar cru);
  its pinned libretro deps are kept across clean checkouts.
build-title.sh stages the four; notices list them; README: systems, forks,
credits, licences (thirty-three cores).

Verified on the base PS5 (13.40), runs 224859-230600: BattleSport (from
its .iso: the archive's .cue names a file it does not hold), 3D Pool,
Metal Slug and Day of the Tentacle load, run and exit with 0
(evidence/four-cores-2026-10-06). Disc images inside archives do not load:
RetroArch extracts only the .cue; unpacked into folders on the console
they do. tools/verify.sh format, unit and evidence PASS (91 captures).
Before a release: publish the four forks.
2026-10-06 23:09:36 -04:00

29 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Cross-build Opera's libretro core (3DO), from my fork ../PS5_Opera
# (github.com/mihawk-99/PS5_Opera) at its pinned revision (tools/core-fork.sh).
#
# Output: build/cores/stage/{cores,info}/opera_libretro.{so,info}; build-title.sh
# stages those in /app0. It renders in software. Games need a 3DO BIOS in system/
# (panafz10.bin and the others its info file lists).
set -euo pipefail
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cd "$root"
core_name=opera
source "$root/tools/core-stamp.sh"
source "$root/tools/core-fork.sh"
core_stamp_skip opera \
"$root/build/cores/stage/cores/opera_libretro.so" \
"$root/build/cores/stage/info/opera_libretro.info" \
-- "$root/tools/build-opera.sh" "$root/tools/core-fork.sh"
[[ $# == 0 ]] || { echo "usage: ${0##*/}" >&2; exit 2; }
revision=ab5cb34feb169c4f65921c5ee433f7d29baccb29 # ../PS5_Opera main
core_fork_setup
core_fork_checkout PS5_Opera "$revision"
core_fork_info opera_libretro.info 3edce84cd4bd8afba0727a07a70fef7ccc44e7db7e1e0f00897ed6805087d94f
# LDFLAGS goes in the environment: the makefiles add their own to it.
LDFLAGS="$core_ldflags $core_libs" make -C "$source_dir" -j"${JOBS:-16}" platform=ps5 \
CC="$core_cc" CXX="$core_cxx" AR="$AR"
core_fork_stage "$source_dir/opera_libretro.so" "$core_info" "$revision" tools/build-opera.sh