Files
PS5_RetroArch/tools/build-pokemini.sh
T
Mihawk 7414eba5cf Thirteen cores: 32X, PC Engine, PC-FX, Virtual Boy, Neo Geo Pocket, WonderSwan, Pokemon Mini, Lynx, Jaguar, 2600, 5200, 7800, MS-DOS
Each from my fork beside this repository (all local, not yet on GitHub),
upstream plus a PS5 platform commit (no --no-undefined, no LTO, zstd without
trace hooks), built through tools/core-fork.sh:
- PicoDrive (PS5_PicoDrive): the 32X SH-2s on the interpreter (the
  recompiler's static read-write-execute buffer faults on the PS5); frames
  go out as XRGB8888. Non-commercial licence, like Snes9x and FBNeo.
- Beetle PCE (mednafen_pce, with SuperGrafx and CD), Beetle PC-FX, Beetle
  VB, Beetle NeoPop, Beetle Cygne: GPL-2.0-or-later.
- PokeMini (GPL-3.0-or-later), Handy (zlib; its text is in the source
  headers, tooling/notices/texts/handy-zlib.txt), Virtual Jaguar
  (GPL-3.0-or-later), Stella 7.0c, a5200 (built-in Altirra BIOS; its
  Makefile empties LDFLAGS, so the link flags go in as PS5_LDFLAGS),
  ProSystem: GPL-2.0-or-later unless noted.
- DOSBox Pure 1.0-preview7 (now on Codeberg): the dynamic x86 core's code
  cache is ps5_exec_allocate memory, and stdio replaces the VFS wrapper,
  whose funopen the console lacks.
build-title.sh stages all thirteen; the notices list each; README: the
systems, forks, credits and licences (twenty-nine cores). On the console the
owner's BIOS files were moved where the cores look: system/pcfx.rom,
system/lynxboot.img, system/bios.min.

Verified on the base PS5 (13.40), one game per core with
tests/pad/boot-and-start.txt (runs 212433-220552): every core loads, runs at
its system's rate (Virtual Boy 50.3, Pokemon Mini 72, the rest 60 frames a
second) and exits with 0; pictures inspected
(evidence/new-cores-2026-10-06). tools/verify.sh format, unit and evidence
PASS (90 captures, 0 failed); build and integration not rerun this step.
Before a release: publish the thirteen forks the notices and README name.
2026-10-06 22:11:05 -04:00

28 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Cross-build PokeMini's libretro core (Pokemon Mini), from my fork ../PS5_PokeMini (github.com/mihawk-99/PS5_PokeMini)
# at its pinned revision (tools/core-fork.sh).
#
# Output: build/cores/stage/{cores,info}/pokemini_libretro.{so,info}; build-title.sh
# stages those in /app0. It renders in software; it has its own free BIOS, and uses bios.min from system/ when there is one.
set -euo pipefail
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cd "$root"
core_name=pokemini
source "$root/tools/core-stamp.sh"
source "$root/tools/core-fork.sh"
core_stamp_skip pokemini \
"$root/build/cores/stage/cores/pokemini_libretro.so" \
"$root/build/cores/stage/info/pokemini_libretro.info" \
-- "$root/tools/build-pokemini.sh" "$root/tools/core-fork.sh"
[[ $# == 0 ]] || { echo "usage: ${0##*/}" >&2; exit 2; }
revision=df8163e56fcbc6608489432a421ee851411677f3 # ../PS5_PokeMini main
core_fork_setup
core_fork_checkout PS5_PokeMini "$revision"
core_fork_info pokemini_libretro.info 514da066db31dd673aabf9c0e54b1b24e485775615217a02ac7de635d621b8b2
# LDFLAGS goes in the environment: the makefiles add their own to it.
LDFLAGS="$core_ldflags $core_libs" make -C "$source_dir" -f Makefile.libretro -j"${JOBS:-16}" platform=ps5 \
CC="$core_cc" CXX="$core_cxx" AR="$AR"
core_fork_stage "$source_dir/pokemini_libretro.so" "$core_info" "$revision" tools/build-pokemini.sh