uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
892
pkgs/applications/emulators/retroarch/cores.nix
Normal file
892
pkgs/applications/emulators/retroarch/cores.nix
Normal file
|
|
@ -0,0 +1,892 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, alsa-lib
|
||||
, boost
|
||||
, bzip2
|
||||
, cmake
|
||||
, curl
|
||||
, fetchFromGitHub
|
||||
, ffmpeg
|
||||
, fluidsynth
|
||||
, gcc10Stdenv
|
||||
, gettext
|
||||
, hexdump
|
||||
, hidapi
|
||||
, icu
|
||||
, libaio
|
||||
, libevdev
|
||||
, libGL
|
||||
, libGLU
|
||||
, libjpeg
|
||||
, libpcap
|
||||
, libpng
|
||||
, libvorbis
|
||||
, libxml2
|
||||
, libzip
|
||||
, makeWrapper
|
||||
, nasm
|
||||
, openssl
|
||||
, pcre
|
||||
, pkg-config
|
||||
, portaudio
|
||||
, python3
|
||||
, retroarch
|
||||
, SDL
|
||||
, sfml
|
||||
, snappy
|
||||
, udev
|
||||
, which
|
||||
, xorg
|
||||
, xxd
|
||||
, xz
|
||||
, zlib
|
||||
}:
|
||||
|
||||
let
|
||||
hashesFile = builtins.fromJSON (builtins.readFile ./hashes.json);
|
||||
|
||||
getCoreSrc = core:
|
||||
fetchFromGitHub (builtins.getAttr core hashesFile);
|
||||
|
||||
mkLibRetroCore =
|
||||
{ core
|
||||
, description
|
||||
# Check https://github.com/libretro/libretro-core-info for license information
|
||||
, license
|
||||
, stdenvOverride ? stdenv
|
||||
, src ? (getCoreSrc core)
|
||||
, broken ? false
|
||||
, version ? "unstable-2022-04-21"
|
||||
, platforms ? retroarch.meta.platforms
|
||||
# The resulting core file is based on core name
|
||||
# Setting `normalizeCore` to `true` will convert `-` to `_` on the core filename
|
||||
, normalizeCore ? true
|
||||
, ...
|
||||
}@args:
|
||||
stdenvOverride.mkDerivation (
|
||||
let
|
||||
inherit (stdenvOverride) hostPlatform;
|
||||
d2u = if normalizeCore then (lib.replaceChars [ "-" ] [ "_" ]) else (x: x);
|
||||
in
|
||||
(rec {
|
||||
pname = "libretro-${core}";
|
||||
inherit version src;
|
||||
|
||||
buildInputs = [ zlib ] ++ args.extraBuildInputs or [ ];
|
||||
nativeBuildInputs = [ makeWrapper ] ++ args.extraNativeBuildInputs or [ ];
|
||||
|
||||
makefile = "Makefile.libretro";
|
||||
makeFlags = [
|
||||
"platform=${{
|
||||
linux = "unix";
|
||||
darwin = "osx";
|
||||
windows = "win";
|
||||
}.${hostPlatform.parsed.kernel.name} or hostPlatform.parsed.kernel.name}"
|
||||
"ARCH=${{
|
||||
armv7l = "arm";
|
||||
armv6l = "arm";
|
||||
i686 = "x86";
|
||||
}.${hostPlatform.parsed.cpu.name} or hostPlatform.parsed.cpu.name}"
|
||||
] ++ (args.makeFlags or [ ]);
|
||||
|
||||
coreDir = "${placeholder "out"}/lib/retroarch/cores";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $coreDir
|
||||
mv ${d2u args.core}_libretro${hostPlatform.extensions.sharedLibrary} $coreDir
|
||||
makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch-${core} \
|
||||
--add-flags "-L $coreDir/${d2u core}_libretro${hostPlatform.extensions.sharedLibrary} $@"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = {
|
||||
inherit core;
|
||||
libretroCore = "/lib/retroarch/cores";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
inherit broken description license platforms;
|
||||
homepage = "https://www.libretro.com/";
|
||||
maintainers = with maintainers; [ edwtjo hrdinka MP2E thiagokokada ];
|
||||
};
|
||||
}) // builtins.removeAttrs args [ "core" "src" "description" "license" "makeFlags" ]
|
||||
);
|
||||
in
|
||||
{
|
||||
inherit mkLibRetroCore;
|
||||
|
||||
atari800 = mkLibRetroCore {
|
||||
core = "atari800";
|
||||
description = "Port of Atari800 to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "GIT_VERSION=" ];
|
||||
};
|
||||
|
||||
beetle-gba = mkLibRetroCore {
|
||||
core = "mednafen-gba";
|
||||
src = getCoreSrc "beetle-gba";
|
||||
description = "Port of Mednafen's GameBoy Advance core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-lynx = mkLibRetroCore {
|
||||
core = "mednafen-lynx";
|
||||
src = getCoreSrc "beetle-lynx";
|
||||
description = "Port of Mednafen's Lynx core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-ngp = mkLibRetroCore {
|
||||
core = "mednafen-ngp";
|
||||
src = getCoreSrc "beetle-ngp";
|
||||
description = "Port of Mednafen's NeoGeo Pocket core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-pce-fast = mkLibRetroCore {
|
||||
core = "mednafen-pce-fast";
|
||||
src = getCoreSrc "beetle-pce-fast";
|
||||
description = "Port of Mednafen's PC Engine core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-pcfx = mkLibRetroCore {
|
||||
core = "mednafen-pcfx";
|
||||
src = getCoreSrc "beetle-pcfx";
|
||||
description = "Port of Mednafen's PCFX core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-psx = mkLibRetroCore {
|
||||
core = "mednafen-psx";
|
||||
src = getCoreSrc "beetle-psx";
|
||||
description = "Port of Mednafen's PSX Engine core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "HAVE_HW=0" "HAVE_LIGHTREC=1" ];
|
||||
};
|
||||
|
||||
beetle-psx-hw = mkLibRetroCore {
|
||||
core = "mednafen-psx-hw";
|
||||
src = getCoreSrc "beetle-psx";
|
||||
description = "Port of Mednafen's PSX Engine (with HW accel) core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
extraBuildInputs = [ libGL libGLU ];
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "HAVE_VULKAN=1" "HAVE_OPENGL=1" "HAVE_HW=1" "HAVE_LIGHTREC=1" ];
|
||||
};
|
||||
|
||||
beetle-saturn = mkLibRetroCore {
|
||||
core = "mednafen-saturn";
|
||||
src = getCoreSrc "beetle-saturn";
|
||||
description = "Port of Mednafen's Saturn core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
};
|
||||
|
||||
beetle-snes = mkLibRetroCore {
|
||||
core = "mednafen-snes";
|
||||
src = getCoreSrc "beetle-snes";
|
||||
description = "Port of Mednafen's SNES core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-supergrafx = mkLibRetroCore {
|
||||
core = "mednafen-supergrafx";
|
||||
src = getCoreSrc "beetle-supergrafx";
|
||||
description = "Port of Mednafen's SuperGrafx core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-vb = mkLibRetroCore {
|
||||
core = "mednafen-vb";
|
||||
src = getCoreSrc "beetle-vb";
|
||||
description = "Port of Mednafen's VirtualBoy core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
beetle-wswan = mkLibRetroCore {
|
||||
core = "mednafen-wswan";
|
||||
src = getCoreSrc "beetle-wswan";
|
||||
description = "Port of Mednafen's WonderSwan core to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
blastem = mkLibRetroCore {
|
||||
core = "blastem";
|
||||
description = "Port of BlastEm to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
};
|
||||
|
||||
bluemsx = mkLibRetroCore {
|
||||
core = "bluemsx";
|
||||
description = "Port of BlueMSX to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
};
|
||||
|
||||
bsnes = mkLibRetroCore {
|
||||
core = "bsnes";
|
||||
description = "Port of bsnes to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
bsnes-hd =
|
||||
let
|
||||
# linux = bsd
|
||||
# https://github.com/DerKoun/bsnes-hd/blob/f0b6cf34e9780d53516977ed2de64137a8bcc3c5/bsnes/GNUmakefile#L37
|
||||
platform = if stdenv.isDarwin then "macos" else "linux";
|
||||
in
|
||||
mkLibRetroCore {
|
||||
core = "bsnes-hd-beta";
|
||||
src = getCoreSrc "bsnes-hd";
|
||||
description = "Port of bsnes-hd to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "GNUmakefile";
|
||||
makeFlags = [
|
||||
"-C"
|
||||
"bsnes"
|
||||
"target=libretro"
|
||||
"platform=${platform}"
|
||||
];
|
||||
extraBuildInputs = [ xorg.libX11 xorg.libXext ];
|
||||
postBuild = "cd bsnes/out";
|
||||
};
|
||||
|
||||
bsnes-mercury = mkLibRetroCore {
|
||||
core = "bsnes-mercury-accuracy";
|
||||
src = getCoreSrc "bsnes-mercury";
|
||||
description = "Fork of bsnes with HLE DSP emulation restored";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "PROFILE=accuracy" ];
|
||||
};
|
||||
|
||||
bsnes-mercury-balanced = mkLibRetroCore {
|
||||
core = "bsnes-mercury-balanced";
|
||||
src = getCoreSrc "bsnes-mercury";
|
||||
description = "Fork of bsnes with HLE DSP emulation restored";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "PROFILE=balanced" ];
|
||||
};
|
||||
|
||||
bsnes-mercury-performance = mkLibRetroCore {
|
||||
core = "bsnes-mercury-performance";
|
||||
src = getCoreSrc "bsnes-mercury";
|
||||
description = "Fork of bsnes with HLE DSP emulation restored";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "PROFILE=performance" ];
|
||||
};
|
||||
|
||||
citra = mkLibRetroCore {
|
||||
core = "citra";
|
||||
description = "Port of Citra to libretro";
|
||||
stdenvOverride = gcc10Stdenv;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
extraBuildInputs = [ libGLU libGL boost ffmpeg nasm ];
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "HAVE_FFMPEG_STATIC=0" ];
|
||||
};
|
||||
|
||||
desmume = mkLibRetroCore {
|
||||
core = "desmume";
|
||||
description = "libretro wrapper for desmume NDS emulator";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ];
|
||||
preBuild = "cd desmume/src/frontend/libretro";
|
||||
makeFlags = lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
|
||||
++ lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
|
||||
};
|
||||
|
||||
desmume2015 = mkLibRetroCore {
|
||||
core = "desmume2015";
|
||||
description = "libretro wrapper for desmume NDS emulator from 2015";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ];
|
||||
makeFlags = lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix"
|
||||
++ lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0";
|
||||
preBuild = "cd desmume";
|
||||
};
|
||||
|
||||
dolphin = mkLibRetroCore {
|
||||
core = "dolphin";
|
||||
description = "Port of Dolphin to libretro";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
|
||||
extraNativeBuildInputs = [ cmake curl pkg-config ];
|
||||
extraBuildInputs = [
|
||||
libGLU
|
||||
libGL
|
||||
pcre
|
||||
sfml
|
||||
gettext
|
||||
hidapi
|
||||
libevdev
|
||||
udev
|
||||
] ++ (with xorg; [ libSM libX11 libXi libpthreadstubs libxcb xcbutil libXext libXrandr libXinerama libXxf86vm ]);
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [
|
||||
"-DLIBRETRO=ON"
|
||||
"-DLIBRETRO_STATIC=1"
|
||||
"-DENABLE_QT=OFF"
|
||||
"-DENABLE_LTO=OFF"
|
||||
"-DUSE_UPNP=OFF"
|
||||
"-DUSE_DISCORD_PRESENCE=OFF"
|
||||
];
|
||||
dontUseCmakeBuildDir = true;
|
||||
};
|
||||
|
||||
dosbox = mkLibRetroCore {
|
||||
core = "dosbox";
|
||||
description = "Port of DOSBox to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
stdenvOverride = gcc10Stdenv;
|
||||
};
|
||||
|
||||
eightyone = mkLibRetroCore {
|
||||
core = "81";
|
||||
src = getCoreSrc "eightyone";
|
||||
description = "Port of EightyOne to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
};
|
||||
|
||||
fbalpha2012 = mkLibRetroCore {
|
||||
core = "fbalpha2012";
|
||||
description = "Port of Final Burn Alpha ~2012 to libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "makefile.libretro";
|
||||
preBuild = "cd svn-current/trunk";
|
||||
};
|
||||
|
||||
fbneo = mkLibRetroCore {
|
||||
core = "fbneo";
|
||||
description = "Port of FBNeo to libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd src/burner/libretro";
|
||||
};
|
||||
|
||||
fceumm = mkLibRetroCore {
|
||||
core = "fceumm";
|
||||
description = "FCEUmm libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
};
|
||||
|
||||
flycast = mkLibRetroCore {
|
||||
core = "flycast";
|
||||
description = "Flycast libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
extraBuildInputs = [ libGL libGLU ];
|
||||
makefile = "Makefile";
|
||||
makeFlags = lib.optional stdenv.hostPlatform.isAarch64 [ "platform=arm64" ];
|
||||
platforms = [ "aarch64-linux" "x86_64-linux" ];
|
||||
};
|
||||
|
||||
fmsx = mkLibRetroCore {
|
||||
core = "fmsx";
|
||||
description = "FMSX libretro port";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
freeintv = mkLibRetroCore {
|
||||
core = "freeintv";
|
||||
description = "FreeIntv libretro port";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
gambatte = mkLibRetroCore {
|
||||
core = "gambatte";
|
||||
description = "Gambatte libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
};
|
||||
|
||||
genesis-plus-gx = mkLibRetroCore {
|
||||
core = "genesis-plus-gx";
|
||||
description = "Enhanced Genesis Plus libretro port";
|
||||
license = "Non-commercial";
|
||||
};
|
||||
|
||||
gpsp = mkLibRetroCore {
|
||||
core = "gpsp";
|
||||
description = "Port of gpSP to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
gw = mkLibRetroCore {
|
||||
core = "gw";
|
||||
description = "Port of Game and Watch to libretro";
|
||||
license = lib.licenses.zlib;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
handy = mkLibRetroCore {
|
||||
core = "handy";
|
||||
description = "Port of Handy to libretro";
|
||||
license = lib.licenses.zlib;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
hatari = mkLibRetroCore {
|
||||
core = "hatari";
|
||||
description = "Port of Hatari to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
extraBuildInputs = [ SDL zlib ];
|
||||
extraNativeBuildInputs = [ which ];
|
||||
dontConfigure = true;
|
||||
makeFlags = [ "EXTERNAL_ZLIB=1" ];
|
||||
};
|
||||
|
||||
mame = mkLibRetroCore {
|
||||
core = "mame";
|
||||
description = "Port of MAME to libretro";
|
||||
license = with lib.licenses; [ bsd3 gpl2Plus ];
|
||||
extraBuildInputs = [ alsa-lib libGLU libGL portaudio python3 xorg.libX11 ];
|
||||
};
|
||||
|
||||
mame2000 = mkLibRetroCore {
|
||||
core = "mame2000";
|
||||
description = "Port of MAME ~2000 to libretro";
|
||||
license = "MAME";
|
||||
makefile = "Makefile";
|
||||
makeFlags = lib.optional (!stdenv.hostPlatform.isx86) "IS_X86=0";
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
mame2003 = mkLibRetroCore {
|
||||
core = "mame2003";
|
||||
description = "Port of MAME ~2003 to libretro";
|
||||
license = "MAME";
|
||||
makefile = "Makefile";
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
mame2003-plus = mkLibRetroCore {
|
||||
core = "mame2003-plus";
|
||||
description = "Port of MAME ~2003+ to libretro";
|
||||
license = "MAME";
|
||||
makefile = "Makefile";
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
mame2010 = mkLibRetroCore {
|
||||
core = "mame2010";
|
||||
description = "Port of MAME ~2010 to libretro";
|
||||
license = "MAME";
|
||||
makefile = "Makefile";
|
||||
makeFlags = lib.optionals stdenv.hostPlatform.isAarch64 [ "PTR64=1" "ARM_ENABLED=1" "X86_SH2DRC=0" "FORCE_DRC_C_BACKEND=1" ];
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
mame2015 = mkLibRetroCore {
|
||||
core = "mame2015";
|
||||
description = "Port of MAME ~2015 to libretro";
|
||||
license = "MAME";
|
||||
makeFlags = [ "PYTHON=python3" ];
|
||||
extraNativeBuildInputs = [ python3 ];
|
||||
extraBuildInputs = [ alsa-lib ];
|
||||
makefile = "Makefile";
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
mame2016 = mkLibRetroCore {
|
||||
core = "mame2016";
|
||||
description = "Port of MAME ~2016 to libretro";
|
||||
license = with lib.licenses; [ bsd3 gpl2Plus ];
|
||||
extraNativeBuildInputs = [ python3 ];
|
||||
extraBuildInputs = [ alsa-lib ];
|
||||
makeFlags = [ "PYTHON_EXECUTABLE=python3" ];
|
||||
postPatch = ''
|
||||
# Prevent the failure during the parallel building of:
|
||||
# make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o
|
||||
mkdir -p 3rdparty/genie/build/gmake.linux/obj/Release/src/host/lua-5.3.0/src
|
||||
'';
|
||||
enableParallelBuilding = false;
|
||||
};
|
||||
|
||||
melonds = mkLibRetroCore {
|
||||
core = "melonds";
|
||||
description = "Port of MelonDS to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraBuildInputs = [ libGL libGLU ];
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
mesen = mkLibRetroCore {
|
||||
core = "mesen";
|
||||
description = "Port of Mesen to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd Libretro";
|
||||
};
|
||||
|
||||
mesen-s = mkLibRetroCore {
|
||||
core = "mesen-s";
|
||||
description = "Port of Mesen-S to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd Libretro";
|
||||
normalizeCore = false;
|
||||
};
|
||||
|
||||
meteor = mkLibRetroCore {
|
||||
core = "meteor";
|
||||
description = "Port of Meteor to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd libretro";
|
||||
};
|
||||
|
||||
mgba = mkLibRetroCore {
|
||||
core = "mgba";
|
||||
description = "Port of mGBA to libretro";
|
||||
license = lib.licenses.mpl20;
|
||||
};
|
||||
|
||||
mupen64plus = mkLibRetroCore {
|
||||
core = "mupen64plus-next";
|
||||
src = getCoreSrc "mupen64plus";
|
||||
description = "Libretro port of Mupen64 Plus, GL only";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraBuildInputs = [ libGLU libGL libpng nasm xorg.libX11 ];
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
neocd = mkLibRetroCore {
|
||||
core = "neocd";
|
||||
description = "NeoCD libretro port";
|
||||
license = lib.licenses.lgpl3Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
nestopia = mkLibRetroCore {
|
||||
core = "nestopia";
|
||||
description = "Nestopia libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd libretro";
|
||||
};
|
||||
|
||||
np2kai = mkLibRetroCore rec {
|
||||
core = "np2kai";
|
||||
src = getCoreSrc core;
|
||||
description = "Neko Project II kai libretro port";
|
||||
license = lib.licenses.mit;
|
||||
makeFlags = [
|
||||
# See https://github.com/AZO234/NP2kai/tags
|
||||
"NP2KAI_VERSION=rev.22"
|
||||
"NP2KAI_HASH=${src.rev}"
|
||||
];
|
||||
preBuild = "cd sdl";
|
||||
};
|
||||
|
||||
o2em = mkLibRetroCore {
|
||||
core = "o2em";
|
||||
description = "Port of O2EM to libretro";
|
||||
license = lib.licenses.artistic1;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
opera = mkLibRetroCore {
|
||||
core = "opera";
|
||||
description = "Opera is a port of 4DO/libfreedo to libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "CC_PREFIX=${stdenv.cc.targetPrefix}" ];
|
||||
};
|
||||
|
||||
parallel-n64 = mkLibRetroCore {
|
||||
core = "parallel-n64";
|
||||
description = "Parallel Mupen64plus rewrite for libretro.";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraBuildInputs = [ libGLU libGL libpng ];
|
||||
makefile = "Makefile";
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isAarch64 ''
|
||||
sed -i -e '1 i\CPUFLAGS += -DARM_FIX -DNO_ASM -DARM_ASM -DDONT_WANT_ARM_OPTIMIZATIONS -DARM64' Makefile \
|
||||
&& sed -i -e 's,CPUFLAGS :=,,g' Makefile
|
||||
'';
|
||||
};
|
||||
|
||||
pcsx2 = mkLibRetroCore {
|
||||
core = "pcsx2";
|
||||
description = "Port of PCSX2 to libretro";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
extraNativeBuildInputs = [
|
||||
cmake
|
||||
gettext
|
||||
pkg-config
|
||||
];
|
||||
extraBuildInputs = [
|
||||
libaio
|
||||
libGL
|
||||
libGLU
|
||||
libpcap
|
||||
libpng
|
||||
libxml2
|
||||
xz
|
||||
xxd
|
||||
];
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [
|
||||
"-DLIBRETRO=ON"
|
||||
];
|
||||
postPatch = ''
|
||||
# remove ccache
|
||||
substituteInPlace CMakeLists.txt --replace "ccache" ""
|
||||
'';
|
||||
postBuild = "cd /build/source/build/pcsx2";
|
||||
platforms = lib.platforms.x86;
|
||||
};
|
||||
|
||||
pcsx_rearmed = mkLibRetroCore {
|
||||
core = "pcsx_rearmed";
|
||||
description = "Port of PCSX ReARMed with GNU lightning to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
dontConfigure = true;
|
||||
};
|
||||
|
||||
picodrive = mkLibRetroCore {
|
||||
core = "picodrive";
|
||||
description = "Fast MegaDrive/MegaCD/32X emulator";
|
||||
license = "MAME";
|
||||
|
||||
extraBuildInputs = [ libpng SDL ];
|
||||
SDL_CONFIG = "${lib.getDev SDL}/bin/sdl-config";
|
||||
dontAddPrefix = true;
|
||||
configurePlatforms = [ ];
|
||||
makeFlags = lib.optional stdenv.hostPlatform.isAarch64 [ "platform=aarch64" ];
|
||||
};
|
||||
|
||||
play = mkLibRetroCore {
|
||||
core = "play";
|
||||
description = "Port of Play! to libretro";
|
||||
license = lib.licenses.bsd2;
|
||||
extraBuildInputs = [ boost bzip2 curl openssl icu libGL libGLU xorg.libX11 ];
|
||||
extraNativeBuildInputs = [ cmake ];
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [ "-DBUILD_PLAY=OFF" "-DBUILD_LIBRETRO_CORE=ON" ];
|
||||
postBuild = "cd Source/ui_libretro";
|
||||
};
|
||||
|
||||
ppsspp = mkLibRetroCore {
|
||||
core = "ppsspp";
|
||||
description = "ppsspp libretro port";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
extraNativeBuildInputs = [ cmake pkg-config python3 ];
|
||||
extraBuildInputs = [ libGLU libGL libzip ffmpeg snappy xorg.libX11 ];
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [
|
||||
"-DLIBRETRO=ON"
|
||||
"-DUSE_SYSTEM_FFMPEG=ON"
|
||||
"-DUSE_SYSTEM_SNAPPY=ON"
|
||||
"-DUSE_SYSTEM_LIBZIP=ON"
|
||||
"-DOpenGL_GL_PREFERENCE=GLVND"
|
||||
];
|
||||
postBuild = "cd lib";
|
||||
};
|
||||
|
||||
prboom = mkLibRetroCore {
|
||||
core = "prboom";
|
||||
description = "Prboom libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
prosystem = mkLibRetroCore {
|
||||
core = "prosystem";
|
||||
description = "Port of ProSystem to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
quicknes = mkLibRetroCore {
|
||||
core = "quicknes";
|
||||
description = "QuickNES libretro port";
|
||||
license = lib.licenses.lgpl21Plus;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
sameboy = mkLibRetroCore {
|
||||
core = "sameboy";
|
||||
description = "SameBoy libretro port";
|
||||
license = lib.licenses.mit;
|
||||
extraNativeBuildInputs = [ which hexdump ];
|
||||
preBuild = "cd libretro";
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
scummvm = mkLibRetroCore {
|
||||
core = "scummvm";
|
||||
description = "Libretro port of ScummVM";
|
||||
license = lib.licenses.gpl2Only;
|
||||
extraBuildInputs = [ fluidsynth libjpeg libvorbis libGLU libGL SDL ];
|
||||
makefile = "Makefile";
|
||||
preConfigure = "cd backends/platform/libretro/build";
|
||||
};
|
||||
|
||||
smsplus-gx = mkLibRetroCore {
|
||||
core = "smsplus";
|
||||
src = getCoreSrc "smsplus-gx";
|
||||
description = "SMS Plus GX libretro port";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
};
|
||||
|
||||
snes9x = mkLibRetroCore {
|
||||
core = "snes9x";
|
||||
description = "Port of SNES9x git to libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd libretro";
|
||||
};
|
||||
|
||||
snes9x2002 = mkLibRetroCore {
|
||||
core = "snes9x2002";
|
||||
description = "Optimized port/rewrite of SNES9x 1.39 to Libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
snes9x2005 = mkLibRetroCore {
|
||||
core = "snes9x2005";
|
||||
description = "Optimized port/rewrite of SNES9x 1.43 to Libretro";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
snes9x2005-plus = mkLibRetroCore {
|
||||
core = "snes9x2005-plus";
|
||||
src = getCoreSrc "snes9x2005";
|
||||
description = "Optimized port/rewrite of SNES9x 1.43 to Libretro, with Blargg's APU";
|
||||
license = "Non-commercial";
|
||||
makefile = "Makefile";
|
||||
makeFlags = [ "USE_BLARGG_APU=1" ];
|
||||
};
|
||||
|
||||
snes9x2010 = mkLibRetroCore {
|
||||
core = "snes9x2010";
|
||||
description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro";
|
||||
license = "Non-commercial";
|
||||
};
|
||||
|
||||
stella = mkLibRetroCore {
|
||||
core = "stella";
|
||||
description = "Port of Stella to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
extraBuildInputs = [ libpng pkg-config SDL ];
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd src/libretro";
|
||||
dontConfigure = true;
|
||||
};
|
||||
|
||||
stella2014 = mkLibRetroCore {
|
||||
core = "stella2014";
|
||||
description = "Port of Stella to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
swanstation = mkLibRetroCore {
|
||||
core = "swanstation";
|
||||
description = "Port of SwanStation (a fork of DuckStation) to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraNativeBuildInputs = [ cmake ];
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [
|
||||
"-DBUILD_LIBRETRO_CORE=ON"
|
||||
];
|
||||
};
|
||||
|
||||
tgbdual = mkLibRetroCore {
|
||||
core = "tgbdual";
|
||||
description = "Port of TGBDual to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
thepowdertoy = mkLibRetroCore {
|
||||
core = "thepowdertoy";
|
||||
description = "Port of The Powder Toy to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraNativeBuildInputs = [ cmake ];
|
||||
makefile = "Makefile";
|
||||
postBuild = "cd src";
|
||||
};
|
||||
|
||||
tic80 = mkLibRetroCore {
|
||||
core = "tic80";
|
||||
description = "Port of TIC-80 to libretro";
|
||||
license = lib.licenses.mit;
|
||||
extraNativeBuildInputs = [ cmake pkg-config libGL libGLU ];
|
||||
makefile = "Makefile";
|
||||
cmakeFlags = [
|
||||
"-DBUILD_LIBRETRO=ON"
|
||||
"-DBUILD_DEMO_CARTS=OFF"
|
||||
"-DBUILD_PRO=OFF"
|
||||
"-DBUILD_PLAYER=OFF"
|
||||
"-DBUILD_SDL=OFF"
|
||||
"-DBUILD_SOKOL=OFF"
|
||||
];
|
||||
preConfigure = "cd core";
|
||||
postBuild = "cd lib";
|
||||
};
|
||||
|
||||
vba-m = mkLibRetroCore {
|
||||
core = "vbam";
|
||||
src = getCoreSrc "vba-m";
|
||||
description = "vanilla VBA-M libretro port";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
preBuild = "cd src/libretro";
|
||||
};
|
||||
|
||||
vba-next = mkLibRetroCore {
|
||||
core = "vba-next";
|
||||
description = "VBA-M libretro port with modifications for speed";
|
||||
license = lib.licenses.gpl2Only;
|
||||
};
|
||||
|
||||
vecx = mkLibRetroCore {
|
||||
core = "vecx";
|
||||
description = "Port of Vecx to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
extraBuildInputs = [ libGL libGLU ];
|
||||
};
|
||||
|
||||
virtualjaguar = mkLibRetroCore {
|
||||
core = "virtualjaguar";
|
||||
description = "Port of VirtualJaguar to libretro";
|
||||
license = lib.licenses.gpl3Only;
|
||||
makefile = "Makefile";
|
||||
};
|
||||
|
||||
yabause = mkLibRetroCore {
|
||||
core = "yabause";
|
||||
description = "Port of Yabause to libretro";
|
||||
license = lib.licenses.gpl2Only;
|
||||
makefile = "Makefile";
|
||||
# Disable SSE for non-x86. DYNAREC doesn't build on aarch64.
|
||||
makeFlags = lib.optional (!stdenv.hostPlatform.isx86) "HAVE_SSE=0";
|
||||
preBuild = "cd yabause/src/libretro";
|
||||
};
|
||||
}
|
||||
139
pkgs/applications/emulators/retroarch/default.nix
Normal file
139
pkgs/applications/emulators/retroarch/default.nix
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, enableNvidiaCgToolkit ? false
|
||||
, withGamemode ? stdenv.isLinux
|
||||
, withVulkan ? stdenv.isLinux
|
||||
, alsa-lib
|
||||
, AppKit
|
||||
, fetchFromGitHub
|
||||
, ffmpeg_4
|
||||
, Foundation
|
||||
, freetype
|
||||
, gamemode
|
||||
, libdrm
|
||||
, libGL
|
||||
, libGLU
|
||||
, libobjc
|
||||
, libpulseaudio
|
||||
, libv4l
|
||||
, libX11
|
||||
, libXdmcp
|
||||
, libXext
|
||||
, libxkbcommon
|
||||
, libxml2
|
||||
, libXxf86vm
|
||||
, makeWrapper
|
||||
, mesa
|
||||
, nvidia_cg_toolkit
|
||||
, pkg-config
|
||||
, python3
|
||||
, SDL2
|
||||
, udev
|
||||
, vulkan-loader
|
||||
, wayland
|
||||
, which
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.10.3";
|
||||
libretroCoreInfo = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "libretro-core-info";
|
||||
sha256 = "sha256-wIIMEWrria8bZe/rcoJwDA9aCMWwbkDQFyEU80TZXFQ=";
|
||||
rev = "v${version}";
|
||||
};
|
||||
runtimeLibs = lib.optional withVulkan vulkan-loader
|
||||
++ lib.optional withGamemode gamemode.lib;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "retroarch-bare";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "RetroArch";
|
||||
sha256 = "sha256-nAv1yv0laqlOmB8UUkK5wSYy/ySqXloEErm+yV30bbA=";
|
||||
rev = "v${version}";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./disable-menu_show_core_updater.patch
|
||||
./use-fixed-paths-on-libretro_info_path.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace "frontend/drivers/platform_unix.c" \
|
||||
--replace "@libretro_directory@" "$out/lib" \
|
||||
--replace "@libretro_info_path@" "$out/share/libretro/info"
|
||||
substituteInPlace "frontend/drivers/platform_darwin.m" \
|
||||
--replace "@libretro_directory@" "$out/lib" \
|
||||
--replace "@libretro_info_path@" "$out/share/libretro/info"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ pkg-config ] ++
|
||||
lib.optional stdenv.isLinux wayland ++
|
||||
lib.optional (runtimeLibs != [ ]) makeWrapper;
|
||||
|
||||
buildInputs = [ ffmpeg_4 freetype libxml2 libGLU libGL python3 SDL2 which ] ++
|
||||
lib.optional enableNvidiaCgToolkit nvidia_cg_toolkit ++
|
||||
lib.optional withVulkan vulkan-loader ++
|
||||
lib.optionals stdenv.isDarwin [ libobjc AppKit Foundation ] ++
|
||||
lib.optionals stdenv.isLinux [
|
||||
alsa-lib
|
||||
libX11
|
||||
libXdmcp
|
||||
libXext
|
||||
libXxf86vm
|
||||
libdrm
|
||||
libpulseaudio
|
||||
libv4l
|
||||
libxkbcommon
|
||||
mesa
|
||||
udev
|
||||
wayland
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
configureFlags = lib.optionals stdenv.isLinux [ "--enable-kms" "--enable-egl" ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/libretro/info
|
||||
# TODO: ideally each core should have its own core information
|
||||
cp -r ${libretroCoreInfo}/* $out/share/libretro/info
|
||||
'' + lib.optionalString (runtimeLibs != [ ]) ''
|
||||
wrapProgram $out/bin/retroarch \
|
||||
--prefix LD_LIBRARY_PATH ':' ${lib.makeLibraryPath runtimeLibs}
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
# https://github.com/libretro/RetroArch/blob/master/retroarch-apple-packaging.sh
|
||||
app=$out/Applications/RetroArch.app
|
||||
mkdir -p $app/Contents/MacOS
|
||||
cp -r pkg/apple/OSX/* $app/Contents
|
||||
cp $out/bin/retroarch $app/Contents/MacOS
|
||||
# FIXME: using Info_Metal.plist results in input not working
|
||||
# mv $app/Contents/Info_Metal.plist $app/Contents/Info.plist
|
||||
|
||||
substituteInPlace $app/Contents/Info.plist \
|
||||
--replace '${"\${EXECUTABLE_NAME}"}' 'RetroArch' \
|
||||
--replace '$(PRODUCT_BUNDLE_IDENTIFIER)' 'com.libretro.RetroArch' \
|
||||
--replace '${"\${PRODUCT_NAME}"}' 'RetroArch' \
|
||||
--replace '${"\${MACOSX_DEPLOYMENT_TARGET}"}' '10.13'
|
||||
|
||||
cp media/retroarch.icns $app/Contents/Resources/
|
||||
'';
|
||||
|
||||
preFixup = "rm $out/bin/retroarch-cg2glsl";
|
||||
|
||||
# Workaround for the following error affecting newer versions of Clang:
|
||||
# ./config.def.h:xxx:x: error: 'TARGET_OS_TV' is not defined, evaluates to 0 [-Werror,-Wundef-prefix=TARGET_OS_]
|
||||
NIX_CFLAGS_COMPILE = lib.optional stdenv.cc.isClang [ "-Wno-undef-prefix" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://libretro.com";
|
||||
description = "Multi-platform emulator frontend for libretro cores";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.unix;
|
||||
changelog = "https://github.com/libretro/RetroArch/blob/v${version}/CHANGES.md";
|
||||
maintainers = with maintainers; [ MP2E edwtjo matthewbauer kolbycrouch thiagokokada ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From 546b343294209abbb193883ab76b679b7f99c6d3 Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Kenji Okada <thiagokokada@gmail.com>
|
||||
Date: Sat, 20 Nov 2021 16:03:50 -0300
|
||||
Subject: [PATCH] Disable "menu_show_core_updater"
|
||||
|
||||
---
|
||||
retroarch.cfg | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/retroarch.cfg b/retroarch.cfg
|
||||
index cdcb199c9f..ab72f3920f 100644
|
||||
--- a/retroarch.cfg
|
||||
+++ b/retroarch.cfg
|
||||
@@ -681,7 +681,7 @@
|
||||
# menu_show_online_updater = true
|
||||
|
||||
# If disabled, will hide the ability to update cores (and core info files) inside the menu.
|
||||
-# menu_show_core_updater = true
|
||||
+menu_show_core_updater = false
|
||||
|
||||
# If disabled, the libretro core will keep running in the background when we
|
||||
# are in the menu.
|
||||
--
|
||||
2.31.1
|
||||
|
||||
26
pkgs/applications/emulators/retroarch/fix-config.patch
Normal file
26
pkgs/applications/emulators/retroarch/fix-config.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
diff --git a/retroarch.cfg b/retroarch.cfg
|
||||
index cdcb199c9f..08b9b1cf10 100644
|
||||
--- a/retroarch.cfg
|
||||
+++ b/retroarch.cfg
|
||||
@@ -681,7 +681,7 @@
|
||||
# menu_show_online_updater = true
|
||||
|
||||
# If disabled, will hide the ability to update cores (and core info files) inside the menu.
|
||||
-# menu_show_core_updater = true
|
||||
+menu_show_core_updater = false
|
||||
|
||||
# If disabled, the libretro core will keep running in the background when we
|
||||
# are in the menu.
|
||||
@@ -823,10 +823,10 @@
|
||||
# rgui_browser_directory =
|
||||
|
||||
# Core directory for libretro core implementations.
|
||||
-# libretro_directory =
|
||||
+libretro_directory = @libretro_directory@
|
||||
|
||||
# Core info directory for libretro core information.
|
||||
-# libretro_info_path =
|
||||
+libretro_info_path = @libretro_info_path@
|
||||
|
||||
# Path to content database directory.
|
||||
# content_database_path =
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
diff --git a/configuration.c b/configuration.c
|
||||
index e6a3841324..afb1d6e2ce 100644
|
||||
--- a/configuration.c
|
||||
+++ b/configuration.c
|
||||
@@ -1456,7 +1456,7 @@ static struct config_path_setting *populate_settings_path(
|
||||
SETTING_PATH("core_options_path",
|
||||
settings->paths.path_core_options, false, NULL, true);
|
||||
SETTING_PATH("libretro_info_path",
|
||||
- settings->paths.path_libretro_info, false, NULL, true);
|
||||
+ settings->paths.path_libretro_info, false, NULL, false);
|
||||
SETTING_PATH("content_database_path",
|
||||
settings->paths.path_content_database, false, NULL, true);
|
||||
SETTING_PATH("cheat_database_path",
|
||||
diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c
|
||||
index 722e1c595c..e7313ee038 100644
|
||||
--- a/frontend/drivers/platform_unix.c
|
||||
+++ b/frontend/drivers/platform_unix.c
|
||||
@@ -1825,8 +1825,8 @@ static void frontend_unix_get_env(int *argc,
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path,
|
||||
"core_info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
#else
|
||||
- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path,
|
||||
- "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
+ fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], "@libretro_info_path@",
|
||||
+ "", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
#endif
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], base_path,
|
||||
"autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]));
|
||||
488
pkgs/applications/emulators/retroarch/hashes.json
Normal file
488
pkgs/applications/emulators/retroarch/hashes.json
Normal file
|
|
@ -0,0 +1,488 @@
|
|||
{
|
||||
"atari800": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-atari800",
|
||||
"rev": "beab30e7ea10b7ed14d0514064f47d16f76cd995",
|
||||
"sha256": "r9MsnasNhhYdFyr2VHJXkTXssB5U00JW6wN/+i+SNUk="
|
||||
},
|
||||
"beetle-gba": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-gba-libretro",
|
||||
"rev": "38182572571a48cb58057cde64b915237c4e2d58",
|
||||
"sha256": "4xnXWswozlcXBNI1lbGSNW/gAdIeLLO9Bf1SxOFLhSo="
|
||||
},
|
||||
"beetle-lynx": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-lynx-libretro",
|
||||
"rev": "de0d520d679cb92767876d4e98da908b1ea6a2d6",
|
||||
"sha256": "BszU5bnlHBOwQSZOM9P4WIP863rS5RluNWvGBFxqzYs="
|
||||
},
|
||||
"beetle-ngp": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-ngp-libretro",
|
||||
"rev": "facf8e1f5440c5d289258ee3c483710f3bf916fb",
|
||||
"sha256": "vDKDt7MvCB9XQYP291cwcEPDxfNIVgNSWtBYz9PVgcw="
|
||||
},
|
||||
"beetle-pce-fast": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-pce-fast-libretro",
|
||||
"rev": "e8801687f232a6f8828b3ff5dadbc9fe1b0076fc",
|
||||
"sha256": "YM+URLnMqsdmk/5yqCg8U4mPpgtmj5qne2CrbTpTeN8="
|
||||
},
|
||||
"beetle-pcfx": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-pcfx-libretro",
|
||||
"rev": "bfc0954e14b261a04dcf8dbe0df8798f16ae3f3c",
|
||||
"sha256": "XzCb1lZFYgsg+3eQ1OqyycNxCgLtZFA30rno3ytdnoM="
|
||||
},
|
||||
"beetle-psx": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-psx-libretro",
|
||||
"rev": "5a24d54d30dd00d817d267cf92fd5b3f4640928f",
|
||||
"sha256": "uG1BhElNW75PnfM+rEYfbl97iwRT89hnl84yvlgx6fg="
|
||||
},
|
||||
"beetle-saturn": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-saturn-libretro",
|
||||
"rev": "dd18f9c477106263b3b7b050f4970d331ff7b23a",
|
||||
"sha256": "RN5dmORtNOjIklSz/n11lz37bZ4IcPD7cyRcBGS4Oi8="
|
||||
},
|
||||
"beetle-snes": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-bsnes-libretro",
|
||||
"rev": "d770563fc3c4bd9abb522952cefb4aa923ba0b91",
|
||||
"sha256": "zHPtfgp9hc8Q4gXJ5VgfJLWLeYjCsQhkfU1T5RM7AL0="
|
||||
},
|
||||
"beetle-supergrafx": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-supergrafx-libretro",
|
||||
"rev": "59991a98c232b1a8350a9d67ac554c5b22771d3c",
|
||||
"sha256": "zv3dAPWrj6hkNaFQ5vUKm5Orcrb2XO48WSkAFiAVUO0="
|
||||
},
|
||||
"beetle-vb": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-vb-libretro",
|
||||
"rev": "246555f8ed7e0b9e5748b2ee2ed6743187c61393",
|
||||
"sha256": "96lQlDqx2bvFeovqGGkemxqS2zlHw92O6YeTEGlgf34="
|
||||
},
|
||||
"beetle-wswan": {
|
||||
"owner": "libretro",
|
||||
"repo": "beetle-wswan-libretro",
|
||||
"rev": "d1fb3f399a2bc16b9ad0f2e8c8ba9f7051cd26bd",
|
||||
"sha256": "p9mJv7zBFjNh1sh5iAjBZzxP6k8ydUNDXLQIjHl9doQ="
|
||||
},
|
||||
"blastem": {
|
||||
"owner": "libretro",
|
||||
"repo": "blastem",
|
||||
"rev": "0786858437ed71996f43b7af0fbe627eb88152fc",
|
||||
"sha256": "uEP5hSgLAle1cLv/EM7D11TJMAggu7pqWxfrUt3rhEg="
|
||||
},
|
||||
"bluemsx": {
|
||||
"owner": "libretro",
|
||||
"repo": "bluemsx-libretro",
|
||||
"rev": "92d0c41b4973854114c7b2d06ab727a266d404c5",
|
||||
"sha256": "dL4k+zG8L4KK4lwf9eXPVGk/u5xQn2htIEpoKyj9kQI="
|
||||
},
|
||||
"bsnes": {
|
||||
"owner": "libretro",
|
||||
"repo": "bsnes-libretro",
|
||||
"rev": "26c583e1c5d09253b6c61e2b9d418e8758eef632",
|
||||
"sha256": "Qa0ScFHcEgBUoWouNoW4JINZ2aHjNATndxhcwKw476Q="
|
||||
},
|
||||
"bsnes-hd": {
|
||||
"owner": "DerKoun",
|
||||
"repo": "bsnes-hd",
|
||||
"rev": "65f24e56c37f46bb752190024bd4058e64ad77d1",
|
||||
"sha256": "1dk2i71NOLeTTOZjVll8wrkr5dIH5bGSGUeeHqWjZHE="
|
||||
},
|
||||
"bsnes-mercury": {
|
||||
"owner": "libretro",
|
||||
"repo": "bsnes-mercury",
|
||||
"rev": "4ba6d8d88e57d3193d95e1bcf39e8d31121f76d4",
|
||||
"sha256": "w2MVslgRlxW4SMzgcXP4gXr9A8B07N7LNrB1LXzk1Zk="
|
||||
},
|
||||
"citra": {
|
||||
"owner": "libretro",
|
||||
"repo": "citra",
|
||||
"rev": "44e01f99016008eff18bc7a28234d1098382358d",
|
||||
"sha256": "vIrUStv+VM8pYeznnWSVBRfSA71/B7VIY7B/syymGzE=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"desmume": {
|
||||
"owner": "libretro",
|
||||
"repo": "desmume",
|
||||
"rev": "5d0ae2be2c9fb6362af528b3722e81323318eb9f",
|
||||
"sha256": "4bJ6fLZ+fV7SnZ71YT3JFcXFOgmskNUCmCHwc2QNl0A="
|
||||
},
|
||||
"desmume2015": {
|
||||
"owner": "libretro",
|
||||
"repo": "desmume2015",
|
||||
"rev": "af397ff3d1f208c27f3922cc8f2b8e08884ba893",
|
||||
"sha256": "kEb+og4g7rJvCinBZKcb42geZO6W8ynGsTG9yqYgI+U="
|
||||
},
|
||||
"dolphin": {
|
||||
"owner": "libretro",
|
||||
"repo": "dolphin",
|
||||
"rev": "6a0b6ee8a4d5363e669f5faf43abc8f17e4278a8",
|
||||
"sha256": "TeeHnttGmCeOTDTK/gJM+RpusjDDndapZAa3T+oLiq0="
|
||||
},
|
||||
"dosbox": {
|
||||
"owner": "libretro",
|
||||
"repo": "dosbox-libretro",
|
||||
"rev": "74cd17ed0ff810ff78cb8c1f1e45513bfe8a0f32",
|
||||
"sha256": "0PIloW7j/87asDJ8IDw4r3r4muxNF+RbvkIRPLZQvRc="
|
||||
},
|
||||
"eightyone": {
|
||||
"owner": "libretro",
|
||||
"repo": "81-libretro",
|
||||
"rev": "2e34567a320cba27b9162b1776db4de3cdb7cf03",
|
||||
"sha256": "vjrHRLzc9Fy0MwV9d+LlcJTGJfVsRauEig8R+erBtfw="
|
||||
},
|
||||
"fbalpha2012": {
|
||||
"owner": "libretro",
|
||||
"repo": "fbalpha2012",
|
||||
"rev": "7f8860543a81ba79c0e1ce1aa219af44568c628a",
|
||||
"sha256": "r1lH+CR+nVRCPkVo0XwLi35/ven/FEkNhWUTA6cUVxc="
|
||||
},
|
||||
"fbneo": {
|
||||
"owner": "libretro",
|
||||
"repo": "fbneo",
|
||||
"rev": "e4625a196b9232ba93a156e3a5164aa11193f20a",
|
||||
"sha256": "/5JmwuLWWBQWXnqCMjKzOC2XG6wo5a6xgQOYX1P1zcw="
|
||||
},
|
||||
"fceumm": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-fceumm",
|
||||
"rev": "b3c35b6515b2b6a789c589f976a4a323ebebe3eb",
|
||||
"sha256": "zwFQGQyO0Vj/IBM1k8JB3D/jB3OwDuGdSHLavr8Fxgw="
|
||||
},
|
||||
"flycast": {
|
||||
"owner": "libretro",
|
||||
"repo": "flycast",
|
||||
"rev": "4c293f306bc16a265c2d768af5d0cea138426054",
|
||||
"sha256": "9IxpRBY1zifhOebLJSDMA/wiOfcZj+KOiPrgmjiFxvo="
|
||||
},
|
||||
"fmsx": {
|
||||
"owner": "libretro",
|
||||
"repo": "fmsx-libretro",
|
||||
"rev": "11fa9f3c08cde567394c41320ca76798c2c64670",
|
||||
"sha256": "1u5c5oDIjjXEquh6UBv2H1F/Ln7h44DTF1ohDG0Qnww="
|
||||
},
|
||||
"freeintv": {
|
||||
"owner": "libretro",
|
||||
"repo": "freeintv",
|
||||
"rev": "295dd3c9e4b2d4f652f6a6a904afbe90a8187068",
|
||||
"sha256": "tz0X6AfD7IL3Y50vjgSO5r6sDhu++6Gj8Rp7de5OqMk="
|
||||
},
|
||||
"gambatte": {
|
||||
"owner": "libretro",
|
||||
"repo": "gambatte-libretro",
|
||||
"rev": "15536214cdce31894d374b2ffa2494543057082b",
|
||||
"sha256": "cTSoK6rezRajnuWPt7WkYn3SWL0sTu7h5X3Ig1KukDA="
|
||||
},
|
||||
"genesis-plus-gx": {
|
||||
"owner": "libretro",
|
||||
"repo": "Genesis-Plus-GX",
|
||||
"rev": "7520ac8aae7b08262c0472e724e6ef0bfe41d285",
|
||||
"sha256": "wKcO/dulgZKgXTuHdcQvfSrfxSI5UA0az6qMLtP4K6g="
|
||||
},
|
||||
"gpsp": {
|
||||
"owner": "libretro",
|
||||
"repo": "gpsp",
|
||||
"rev": "f0f0b31f9ab95946965b75fed8d31e19290f3d43",
|
||||
"sha256": "aiegBSpQDyXzVkyWuUpI66QvA1tqS8PQ8+75U89K10A="
|
||||
},
|
||||
"gw": {
|
||||
"owner": "libretro",
|
||||
"repo": "gw-libretro",
|
||||
"rev": "d08a08154ce8ed8e9de80582c108f157e4c6b226",
|
||||
"sha256": "PWd/r4BBmhiNqJdV6OaXHr4XCdR1GyVipq3zvyBcqEs="
|
||||
},
|
||||
"handy": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-handy",
|
||||
"rev": "517bb2d02909271836604c01c8f09a79ad605297",
|
||||
"sha256": "Igf/OvmnCzoWjCZBoep7T0pXsoBKq3NJpXlYhE7nr3s="
|
||||
},
|
||||
"hatari": {
|
||||
"owner": "libretro",
|
||||
"repo": "hatari",
|
||||
"rev": "e5e36a5262cfeadc3d1c7b411b7a70719c4f293c",
|
||||
"sha256": "T4I3NVEMBKr5HLs60x48VNRl2TMnhqvaF+LTtYQ7qdU="
|
||||
},
|
||||
"mame": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame",
|
||||
"rev": "b7dd999590717638ceade2e24d16d63147aa12ad",
|
||||
"sha256": "QgENNjykhO+WSxAb//J+R7QP3/rZnxqv7sarO4eBYuc="
|
||||
},
|
||||
"mame2000": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2000-libretro",
|
||||
"rev": "dd9d6612c29bf5b29bc2f94cab2d43fe3dcd69ee",
|
||||
"sha256": "X0fP0bNBk2hqXVdRspylLIjZO563aMXkyX4qgx/3Vr8="
|
||||
},
|
||||
"mame2003": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2003-libretro",
|
||||
"rev": "3eb27d5f161522cf873c0642f14b8e2267b3820f",
|
||||
"sha256": "TQ4FwboKeEP58hOL2hYs4OYes2o0wSKFSp4CqZV5r6I="
|
||||
},
|
||||
"mame2003-plus": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2003-plus-libretro",
|
||||
"rev": "e5ee29ecb8182952f861f22516e5791625fe2671",
|
||||
"sha256": "YunfAITR/Etm8lvEab/HigZoBz+ayJQ7ezjItWI/HvE="
|
||||
},
|
||||
"mame2010": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2010-libretro",
|
||||
"rev": "932e6f2c4f13b67b29ab33428a4037dee9a236a8",
|
||||
"sha256": "HSZRSnc+0300UE9fPcUOMrXABlxHhTewkFPTqQ4Srxs="
|
||||
},
|
||||
"mame2015": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2015-libretro",
|
||||
"rev": "e6a7aa4d53726e61498f68d6b8e2c092a2169fa2",
|
||||
"sha256": "IgiLxYYuUIn3YE+kQCXzgshES2VNpUHn0Qjsorw0w/s="
|
||||
},
|
||||
"mame2016": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2016-libretro",
|
||||
"rev": "01058613a0109424c4e7211e49ed83ac950d3993",
|
||||
"sha256": "IsM7f/zlzvomVOYlinJVqZllUhDfy4NNTeTPtNmdVak="
|
||||
},
|
||||
"melonds": {
|
||||
"owner": "libretro",
|
||||
"repo": "melonds",
|
||||
"rev": "e93ec3e462d3dfc1556781510a3cee113f02abb2",
|
||||
"sha256": "NDrsqX17OKw1/PIZSrWAxhVl+Qk/xG7lCnr6Ts+7YJ4="
|
||||
},
|
||||
"mesen": {
|
||||
"owner": "libretro",
|
||||
"repo": "mesen",
|
||||
"rev": "bb9ea02eba28682986044a6f49329ec533aa26ba",
|
||||
"sha256": "G2NQDpByvI9RFEwrRiKXcMnPtVtqpvEoZgk7/fk5qCU="
|
||||
},
|
||||
"mesen-s": {
|
||||
"owner": "libretro",
|
||||
"repo": "mesen-s",
|
||||
"rev": "b0b53409eecb696fb13f411ffde72e8f576feb09",
|
||||
"sha256": "lDHyeIsVsI5+ZK8EJI50alrFuu0uJmxscda5bR1UmQQ="
|
||||
},
|
||||
"meteor": {
|
||||
"owner": "libretro",
|
||||
"repo": "meteor-libretro",
|
||||
"rev": "e533d300d0561564451bde55a2b73119c768453c",
|
||||
"sha256": "zMkgzUz2rk0SD5ojY4AqaDlNM4k4QxuUxVBRBcn6TqQ="
|
||||
},
|
||||
"mgba": {
|
||||
"owner": "libretro",
|
||||
"repo": "mgba",
|
||||
"rev": "5d48e0744059ebf38a4e937b256ffd5df4e0d103",
|
||||
"sha256": "OYw2nlldFx5B7WX0E8Gbgfp1j4h65ZxyKDS9tneHXQg="
|
||||
},
|
||||
"mupen64plus": {
|
||||
"owner": "libretro",
|
||||
"repo": "mupen64plus-libretro-nx",
|
||||
"rev": "6e9dcd2cd9d23d3e79eaf2349bf7e9f25ad45bf1",
|
||||
"sha256": "rs/VL2K6aS8Rl01IyxUiWipzLEzg+7+fbXxI0qN5X/I="
|
||||
},
|
||||
"neocd": {
|
||||
"owner": "libretro",
|
||||
"repo": "neocd_libretro",
|
||||
"rev": "327aeceecdf71c8a0c0af3d6dc53686c94fe44ad",
|
||||
"sha256": "cY0P+0EQ0b9df+YT2EMvrxjp5L+DwIg31rEJqchU+hc="
|
||||
},
|
||||
"nestopia": {
|
||||
"owner": "libretro",
|
||||
"repo": "nestopia",
|
||||
"rev": "a9e197f2583ef4f36e9e77d930a677e63a2c2f62",
|
||||
"sha256": "QqmWSk8Ejf7QMJk0cVBgpnyqcK6oLjCnnXMXInuWfYc="
|
||||
},
|
||||
"np2kai": {
|
||||
"owner": "AZO234",
|
||||
"repo": "NP2kai",
|
||||
"rev": "2b09ea6a589cdcae27bca27160b3f82638fbb45d",
|
||||
"sha256": "M3kGA1TU3xui6of9XgUspI+Zf+hjYP1d2mgKwxsy3IQ=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"o2em": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-o2em",
|
||||
"rev": "641f06d67d192a0677ec861fcb731d3ce8da0f87",
|
||||
"sha256": "s3FreOziXeGhUyQdSoOywZldD21m3+OXK0EJ2Z8rXiY="
|
||||
},
|
||||
"opera": {
|
||||
"owner": "libretro",
|
||||
"repo": "opera-libretro",
|
||||
"rev": "3849c969c64b82e622a7655b327fa94bc5a4c7cc",
|
||||
"sha256": "McSrvjrYTemqAAnfHELf9qXC6n6Dg4kNsUDA7e2DvkE="
|
||||
},
|
||||
"parallel-n64": {
|
||||
"owner": "libretro",
|
||||
"repo": "parallel-n64",
|
||||
"rev": "b804ab1a199d6ff1f8fef4aa7dfcf663990e430b",
|
||||
"sha256": "zAet6hYa/79CBbvwZNTNs/ayWuHHlwg+0Y4BAUFddBc="
|
||||
},
|
||||
"pcsx2": {
|
||||
"owner": "libretro",
|
||||
"repo": "pcsx2",
|
||||
"rev": "0251730a21d7238856d79aa25e2942b48edb38f6",
|
||||
"sha256": "a/lWLBCww4QwxdO7Sbvmfq0XF9FnP4xzF51ljsWk46I="
|
||||
},
|
||||
"pcsx_rearmed": {
|
||||
"owner": "libretro",
|
||||
"repo": "pcsx_rearmed",
|
||||
"rev": "e24732050e902bd5402b2b7da7c391d2ca8fa799",
|
||||
"sha256": "tPz5E3QO6FucjYOzdjbY2FHLPz1Fmms10tdt7rZIW8U="
|
||||
},
|
||||
"picodrive": {
|
||||
"owner": "libretro",
|
||||
"repo": "picodrive",
|
||||
"rev": "7ff457f2f833570013f2a7e2608ac40632e0735d",
|
||||
"sha256": "xEG5swvvWFhvosC1XpFaZphESNaf4AtX+6UE02B57j8=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"play": {
|
||||
"owner": "jpd002",
|
||||
"repo": "Play-",
|
||||
"rev": "39eb5c2eb6da65dc76b1c4d1319175a68120a77a",
|
||||
"sha256": "EF3p0lvHjKGt4pxtTAkDM+uHsnW72lN+Ki8BaZIk/BQ=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"ppsspp": {
|
||||
"owner": "hrydgard",
|
||||
"repo": "ppsspp",
|
||||
"rev": "83b8211abf7fb705835eb1ccf8feae04816ae96c",
|
||||
"sha256": "8K4bz/GUnE8GrlAVFULMXLC+i3ZYvR28EpehEg6up4s=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"prboom": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-prboom",
|
||||
"rev": "b22a6b19fd976a14374db9083baea9c91b079106",
|
||||
"sha256": "NmEWRTHaZjV2Y6Wrc3WOamXCnOawKc2ja1KBDxokRiY="
|
||||
},
|
||||
"prosystem": {
|
||||
"owner": "libretro",
|
||||
"repo": "prosystem-libretro",
|
||||
"rev": "fbf62c3dacaac694f7ec26cf9be10a51b27271e7",
|
||||
"sha256": "Opb6CUeT/bnaTg4MJo7DNsVyaPa73PLbIor25HHWzZ0="
|
||||
},
|
||||
"quicknes": {
|
||||
"owner": "libretro",
|
||||
"repo": "QuickNES_Core",
|
||||
"rev": "e6f08c165af45fc2d2f26c80ba0cfc33e26f9cfe",
|
||||
"sha256": "JQtlqN3mvIwKy6iN9opHPHnh0E7AIn9JVitIfXklI/I="
|
||||
},
|
||||
"sameboy": {
|
||||
"owner": "libretro",
|
||||
"repo": "sameboy",
|
||||
"rev": "b154b7d3d885a3cf31203f0b8f50d3b37c8b742b",
|
||||
"sha256": "tavGHiNpRiPkibi66orMf93cnCqQCD8XhSl/36nl/9M="
|
||||
},
|
||||
"scummvm": {
|
||||
"owner": "libretro",
|
||||
"repo": "scummvm",
|
||||
"rev": "2fb2e4c551c9c1510c56f6e890ee0300b7b3fca3",
|
||||
"sha256": "wrlFqu+ONbYH4xMFDByOgySobGrkhVc7kYWI4JzA4ew="
|
||||
},
|
||||
"smsplus-gx": {
|
||||
"owner": "libretro",
|
||||
"repo": "smsplus-gx",
|
||||
"rev": "9de9847dc8ba458e9522d5ae8b87bf71ad437257",
|
||||
"sha256": "XzqQ/3XH5L79UQep+DZ+mDHnUJKZQXzjNCZNZw2mGvY="
|
||||
},
|
||||
"snes9x": {
|
||||
"owner": "snes9xgit",
|
||||
"repo": "snes9x",
|
||||
"rev": "3c729a9763263bc3a69f48370e43ae05e672970a",
|
||||
"sha256": "01M6Wvbu1omMwh3Xg4RGh028jirGs7mLpxwKJgMRQxA="
|
||||
},
|
||||
"snes9x2002": {
|
||||
"owner": "libretro",
|
||||
"repo": "snes9x2002",
|
||||
"rev": "c4397de75a5f11403d154abd935e39fe969bca94",
|
||||
"sha256": "yL4SIRR1Er+7Iq3YPfoe5ES47nvyA3UmGK+upLzKiFA="
|
||||
},
|
||||
"snes9x2005": {
|
||||
"owner": "libretro",
|
||||
"repo": "snes9x2005",
|
||||
"rev": "23f759bc4bf2e39733296f7749e446418e3cd0f3",
|
||||
"sha256": "/bZrMp7NHgdYvA3Tw1ZoWXRg7VxmatRUX5cCJsU3NCY="
|
||||
},
|
||||
"snes9x2010": {
|
||||
"owner": "libretro",
|
||||
"repo": "snes9x2010",
|
||||
"rev": "c98224bc74aa0bbf355d128b22e4a2a4e94215b0",
|
||||
"sha256": "mf5msdwdcRRfFWHwmWLS/qKd7gNlLwexGEB6wB6TfhE="
|
||||
},
|
||||
"stella": {
|
||||
"owner": "stella-emu",
|
||||
"repo": "stella",
|
||||
"rev": "efb2a9f299cad241e12d811580f28d75b6c3438d",
|
||||
"sha256": "QYwDTd8EZUMXJiuSJtoW8XQXgl+Wx0lPkNLOwzM5bzA="
|
||||
},
|
||||
"stella2014": {
|
||||
"owner": "libretro",
|
||||
"repo": "stella2014-libretro",
|
||||
"rev": "1351a4fe2ca6b1f3a66c7db0df2ec268ab002d41",
|
||||
"sha256": "/sVDOfP5CE8k808lhmH3tT47oZ1ka3pgDG5LglfPmHc="
|
||||
},
|
||||
"swanstation": {
|
||||
"owner": "libretro",
|
||||
"repo": "swanstation",
|
||||
"rev": "0e53a5ac09a30d73d78b628f7e4954ebe5615801",
|
||||
"sha256": "vOu99fsm2oeSi96tWR+vV5suZSYCyXJVgOdvjnKbNhg="
|
||||
},
|
||||
"tgbdual": {
|
||||
"owner": "libretro",
|
||||
"repo": "tgbdual-libretro",
|
||||
"rev": "1e0c4f931d8c5e859e6d3255d67247d7a2987434",
|
||||
"sha256": "0wHv9DpKuzJ/q5vERqCo4GBLre2ggClBIWSjGnMLQq8="
|
||||
},
|
||||
"thepowdertoy": {
|
||||
"owner": "libretro",
|
||||
"repo": "ThePowderToy",
|
||||
"rev": "ac620c0a89a18774c3ad176a8a1bc596df23ff57",
|
||||
"sha256": "C/X1DbmnucRddemEYml2zN3qr5yoXY3b+nvqfpboS0M="
|
||||
},
|
||||
"tic80": {
|
||||
"owner": "libretro",
|
||||
"repo": "tic-80",
|
||||
"rev": "e9f62f85a154796c6baaee8a9f6fd0cfdd447019",
|
||||
"sha256": "JTAoIqxqpaLjsQiIpJ4wQsREI5/rTxVxDywoL3oLI4Q=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"vba-m": {
|
||||
"owner": "libretro",
|
||||
"repo": "vbam-libretro",
|
||||
"rev": "254f6effebe882b7d3d29d9e417c6aeeabc08026",
|
||||
"sha256": "vJWjdqJ913NLGL4G15sRPqO/wp9xPsuhUMLUuAbDRKk="
|
||||
},
|
||||
"vba-next": {
|
||||
"owner": "libretro",
|
||||
"repo": "vba-next",
|
||||
"rev": "4191e09e2b0fcf175a15348c1fa8a12bbc6320dd",
|
||||
"sha256": "IG2oH4F17tlSv1cXYZobggb37tFNE53JOHzan/X0+ws="
|
||||
},
|
||||
"vecx": {
|
||||
"owner": "libretro",
|
||||
"repo": "libretro-vecx",
|
||||
"rev": "141af284202c86ed0d4ce9030c76954a144287cf",
|
||||
"sha256": "p5vMuG2vr3BTJOQWNcTPb89MlkVrRvJNTIJSU8r9zfU="
|
||||
},
|
||||
"virtualjaguar": {
|
||||
"owner": "libretro",
|
||||
"repo": "virtualjaguar-libretro",
|
||||
"rev": "263c979be4ca757c43fb525bd6f0887998e57041",
|
||||
"sha256": "6Q6Y0IFUWS9ZPhnAK3EUo4hMGPdBn8eNEYCK/zLgAKU="
|
||||
},
|
||||
"yabause": {
|
||||
"owner": "libretro",
|
||||
"repo": "yabause",
|
||||
"rev": "17dfcd8de4700341d972993501d3a043925675ce",
|
||||
"sha256": "xwW7Oe3Cy3yC0xC5acLW6OGUIG+dKd1mwiXK5ZAumdo="
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{ stdenv, pkgs, lib, runtimeShell, cores ? [ ] }:
|
||||
|
||||
let
|
||||
|
||||
script = exec: ''
|
||||
#!${runtimeShell}
|
||||
nohup sh -c "pkill -SIGTSTP kodi" &
|
||||
# https://forum.kodi.tv/showthread.php?tid=185074&pid=1622750#pid1622750
|
||||
nohup sh -c "sleep 10 && ${exec} '$@' -f;pkill -SIGCONT kodi"
|
||||
'';
|
||||
scriptSh = exec: pkgs.writeScript ("kodi-"+exec.name) (script exec.path);
|
||||
execs = map (core: rec { name = core.core; path = core+"/bin/retroarch-"+name;}) cores;
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "kodi-retroarch-advanced-launchers";
|
||||
version = "0.2";
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
buildCommand = ''
|
||||
mkdir -p $out/bin
|
||||
${lib.concatMapStrings (exec: "ln -s ${scriptSh exec} $out/bin/kodi-${exec.name};") execs}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Kodi retroarch advanced launchers";
|
||||
longDescription = ''
|
||||
These retroarch launchers are intended to be used with
|
||||
advanced (emulation) launcher for Kodi since device input is
|
||||
otherwise caught by both Kodi and the retroarch process.
|
||||
'';
|
||||
license = lib.licenses.gpl3;
|
||||
};
|
||||
}
|
||||
173
pkgs/applications/emulators/retroarch/update_cores.py
Executable file
173
pkgs/applications/emulators/retroarch/update_cores.py
Executable file
|
|
@ -0,0 +1,173 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -I nixpkgs=../../../../ -i python3 -p "python3.withPackages (ps: with ps; [ requests nix-prefetch-github ])" -p "git"
|
||||
|
||||
import json
|
||||
import sys
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_PATH = Path(__file__).absolute().parent
|
||||
HASHES_PATH = SCRIPT_PATH / "hashes.json"
|
||||
CORES = {
|
||||
"atari800": {"repo": "libretro-atari800"},
|
||||
"beetle-gba": {"repo": "beetle-gba-libretro"},
|
||||
"beetle-lynx": {"repo": "beetle-lynx-libretro"},
|
||||
"beetle-ngp": {"repo": "beetle-ngp-libretro"},
|
||||
"beetle-pce-fast": {"repo": "beetle-pce-fast-libretro"},
|
||||
"beetle-pcfx": {"repo": "beetle-pcfx-libretro"},
|
||||
"beetle-psx": {"repo": "beetle-psx-libretro"},
|
||||
"beetle-saturn": {"repo": "beetle-saturn-libretro"},
|
||||
"beetle-snes": {"repo": "beetle-bsnes-libretro"},
|
||||
"beetle-supergrafx": {"repo": "beetle-supergrafx-libretro"},
|
||||
"beetle-vb": {"repo": "beetle-vb-libretro"},
|
||||
"beetle-wswan": {"repo": "beetle-wswan-libretro"},
|
||||
"blastem": {"repo": "blastem"},
|
||||
"bluemsx": {"repo": "bluemsx-libretro"},
|
||||
"bsnes": {"repo": "bsnes-libretro"},
|
||||
"bsnes-hd": {"repo": "bsnes-hd", "owner": "DerKoun"},
|
||||
"bsnes-mercury": {"repo": "bsnes-mercury"},
|
||||
"citra": { "repo": "citra", "fetch_submodules": True },
|
||||
"desmume": {"repo": "desmume"},
|
||||
"desmume2015": {"repo": "desmume2015"},
|
||||
"dolphin": {"repo": "dolphin"},
|
||||
"dosbox": {"repo": "dosbox-libretro"},
|
||||
"eightyone": {"repo": "81-libretro"},
|
||||
"fbalpha2012": {"repo": "fbalpha2012"},
|
||||
"fbneo": {"repo": "fbneo"},
|
||||
"fceumm": {"repo": "libretro-fceumm"},
|
||||
"flycast": {"repo": "flycast"},
|
||||
"fmsx": {"repo": "fmsx-libretro"},
|
||||
"freeintv": {"repo": "freeintv"},
|
||||
"gambatte": {"repo": "gambatte-libretro"},
|
||||
"genesis-plus-gx": {"repo": "Genesis-Plus-GX"},
|
||||
"gpsp": {"repo": "gpsp"},
|
||||
"gw": {"repo": "gw-libretro"},
|
||||
"handy": {"repo": "libretro-handy"},
|
||||
"hatari": {"repo": "hatari"},
|
||||
"mame": {"repo": "mame"},
|
||||
"mame2000": {"repo": "mame2000-libretro"},
|
||||
"mame2003": {"repo": "mame2003-libretro"},
|
||||
"mame2003-plus": {"repo": "mame2003-plus-libretro"},
|
||||
"mame2010": {"repo": "mame2010-libretro"},
|
||||
"mame2015": {"repo": "mame2015-libretro"},
|
||||
"mame2016": {"repo": "mame2016-libretro"},
|
||||
"melonds": {"repo": "melonds"},
|
||||
"mesen": {"repo": "mesen"},
|
||||
"mesen-s": {"repo": "mesen-s"},
|
||||
"meteor": {"repo": "meteor-libretro"},
|
||||
"mgba": {"repo": "mgba"},
|
||||
"mupen64plus": {"repo": "mupen64plus-libretro-nx"},
|
||||
"neocd": {"repo": "neocd_libretro"},
|
||||
"nestopia": {"repo": "nestopia"},
|
||||
"np2kai": {"repo": "NP2kai", "owner": "AZO234", "fetch_submodules": True},
|
||||
"o2em": {"repo": "libretro-o2em"},
|
||||
"opera": {"repo": "opera-libretro"},
|
||||
"parallel-n64": {"repo": "parallel-n64"},
|
||||
"pcsx2": {"repo": "pcsx2"},
|
||||
"pcsx_rearmed": {"repo": "pcsx_rearmed"},
|
||||
"picodrive": {"repo": "picodrive", "fetch_submodules": True},
|
||||
"play": {"repo": "Play-", "owner": "jpd002", "fetch_submodules": True},
|
||||
"ppsspp": {"repo": "ppsspp", "owner": "hrydgard", "fetch_submodules": True},
|
||||
"prboom": {"repo": "libretro-prboom"},
|
||||
"prosystem": {"repo": "prosystem-libretro"},
|
||||
"quicknes": {"repo": "QuickNES_Core"},
|
||||
"sameboy": {"repo": "sameboy"},
|
||||
"scummvm": {"repo": "scummvm"},
|
||||
"smsplus-gx": {"repo": "smsplus-gx"},
|
||||
"snes9x": {"repo": "snes9x", "owner": "snes9xgit"},
|
||||
"snes9x2002": {"repo": "snes9x2002"},
|
||||
"snes9x2005": {"repo": "snes9x2005"},
|
||||
"snes9x2010": {"repo": "snes9x2010"},
|
||||
"stella": {"repo": "stella", "owner": "stella-emu"},
|
||||
"stella2014": {"repo": "stella2014-libretro"},
|
||||
"swanstation": {"repo": "swanstation"},
|
||||
"tgbdual": {"repo": "tgbdual-libretro"},
|
||||
"thepowdertoy": {"repo": "ThePowderToy"},
|
||||
"tic80": {"repo": "tic-80", "fetch_submodules": True},
|
||||
"vba-m": {"repo": "vbam-libretro"},
|
||||
"vba-next": {"repo": "vba-next"},
|
||||
"vecx": {"repo": "libretro-vecx"},
|
||||
"virtualjaguar": {"repo": "virtualjaguar-libretro"},
|
||||
"yabause": {"repo": "yabause"},
|
||||
}
|
||||
|
||||
|
||||
def info(*msg):
|
||||
print(*msg, file=sys.stderr)
|
||||
|
||||
|
||||
def get_repo_hash_fetchFromGitHub(
|
||||
repo,
|
||||
owner="libretro",
|
||||
deep_clone=False,
|
||||
fetch_submodules=False,
|
||||
leave_dot_git=False,
|
||||
rev=None,
|
||||
):
|
||||
extra_args = []
|
||||
if deep_clone:
|
||||
extra_args.append("--deep-clone")
|
||||
else:
|
||||
extra_args.append("--no-deep-clone")
|
||||
if fetch_submodules:
|
||||
extra_args.append("--fetch-submodules")
|
||||
else:
|
||||
extra_args.append("--no-fetch-submodules")
|
||||
if leave_dot_git:
|
||||
extra_args.append("--leave-dot-git")
|
||||
else:
|
||||
extra_args.append("--no-leave-dot-git")
|
||||
if rev:
|
||||
extra_args.append("--rev")
|
||||
extra_args.append(rev)
|
||||
result = subprocess.run(
|
||||
["nix-prefetch-github", owner, repo, *extra_args],
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
j = json.loads(result.stdout)
|
||||
# Remove False values
|
||||
return {k: v for k, v in j.items() if v}
|
||||
|
||||
|
||||
def get_repo_hash(fetcher="fetchFromGitHub", **kwargs):
|
||||
if fetcher == "fetchFromGitHub":
|
||||
return get_repo_hash_fetchFromGitHub(**kwargs)
|
||||
else:
|
||||
raise ValueError(f"Unsupported fetcher: {fetcher}")
|
||||
|
||||
|
||||
def get_repo_hashes(cores_to_update=[]):
|
||||
with open(HASHES_PATH) as f:
|
||||
repo_hashes = json.loads(f.read())
|
||||
|
||||
for core, repo in CORES.items():
|
||||
if core in cores_to_update:
|
||||
info(f"Getting repo hash for '{core}'...")
|
||||
repo_hashes[core] = get_repo_hash(**repo)
|
||||
else:
|
||||
info(f"Skipping '{core}'...")
|
||||
|
||||
return repo_hashes
|
||||
|
||||
|
||||
def main():
|
||||
# If you don't want to update all cores, pass the name of the cores you
|
||||
# want to update on the command line. E.g.:
|
||||
# $ ./update.py citra snes9x
|
||||
if len(sys.argv) > 1:
|
||||
cores_to_update = sys.argv[1:]
|
||||
else:
|
||||
cores_to_update = CORES.keys()
|
||||
|
||||
repo_hashes = get_repo_hashes(cores_to_update)
|
||||
info(f"Generating '{HASHES_PATH}'...")
|
||||
with open(HASHES_PATH, "w") as f:
|
||||
f.write(json.dumps(dict(sorted(repo_hashes.items())), indent=4))
|
||||
f.write("\n")
|
||||
info("Finished!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
From 7bf021529ff15ca2580b15b3c0bfdc137d5beffe Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Kenji Okada <thiagokokada@gmail.com>
|
||||
Date: Wed, 9 Mar 2022 18:24:15 +0000
|
||||
Subject: [PATCH] Use fixed paths on "libretro_info_path"
|
||||
|
||||
This patch sets "libretro_info_path" to `handle = false`, so instead of
|
||||
using the values from `retroarch.cfg`, it will always use the default.
|
||||
|
||||
Also, it patches the default "libretro_info_path" to the
|
||||
`@libretro_info_path` string, so we can substitute it with the full path
|
||||
to it during build.
|
||||
---
|
||||
configuration.c | 2 +-
|
||||
frontend/drivers/platform_darwin.m | 9 ++-------
|
||||
frontend/drivers/platform_unix.c | 12 ++++--------
|
||||
3 files changed, 7 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/configuration.c b/configuration.c
|
||||
index 7e346ff6e9..c4b2100203 100644
|
||||
--- a/configuration.c
|
||||
+++ b/configuration.c
|
||||
@@ -1466,7 +1466,7 @@ static struct config_path_setting *populate_settings_path(
|
||||
SETTING_PATH("core_options_path",
|
||||
settings->paths.path_core_options, false, NULL, true);
|
||||
SETTING_PATH("libretro_info_path",
|
||||
- settings->paths.path_libretro_info, false, NULL, true);
|
||||
+ settings->paths.path_libretro_info, false, NULL, false);
|
||||
SETTING_PATH("content_database_path",
|
||||
settings->paths.path_content_database, false, NULL, true);
|
||||
SETTING_PATH("cheat_database_path",
|
||||
diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m
|
||||
index 6c5fdca400..552dcb7e2b 100644
|
||||
--- a/frontend/drivers/platform_darwin.m
|
||||
+++ b/frontend/drivers/platform_darwin.m
|
||||
@@ -388,14 +388,9 @@ static void frontend_darwin_get_env(int *argc, char *argv[],
|
||||
home_dir_buf, "shaders_glsl",
|
||||
sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
|
||||
#endif
|
||||
-#ifdef HAVE_UPDATE_CORES
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE],
|
||||
- home_dir_buf, "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
-#else
|
||||
- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE],
|
||||
- bundle_path_buf, "modules", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
-#endif
|
||||
- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], home_dir_buf, "info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
+ "@libretro_directory@", "", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
+ fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], "@libretro_info_path@", "", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], home_dir_buf, "overlays", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY]));
|
||||
#ifdef HAVE_VIDEO_LAYOUT
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT], home_dir_buf, "layouts", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_LAYOUT]));
|
||||
diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c
|
||||
index b3b5dad173..7f1561e523 100644
|
||||
--- a/frontend/drivers/platform_unix.c
|
||||
+++ b/frontend/drivers/platform_unix.c
|
||||
@@ -1820,12 +1820,8 @@ static void frontend_unix_get_env(int *argc,
|
||||
strcpy_literal(base_path, "retroarch");
|
||||
#endif
|
||||
|
||||
- if (!string_is_empty(libretro_directory))
|
||||
- strlcpy(g_defaults.dirs[DEFAULT_DIR_CORE], libretro_directory,
|
||||
- sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
- else
|
||||
- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE], base_path,
|
||||
- "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
+ fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE], "@libretro_directory@",
|
||||
+ "", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE]));
|
||||
#if defined(DINGUX)
|
||||
/* On platforms that require manual core installation/
|
||||
* removal, placing core info files in the same directory
|
||||
@@ -1834,8 +1830,8 @@ static void frontend_unix_get_env(int *argc,
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path,
|
||||
"core_info", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
#else
|
||||
- fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], base_path,
|
||||
- "cores", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
+ fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CORE_INFO], "@libretro_info_path@",
|
||||
+ "", sizeof(g_defaults.dirs[DEFAULT_DIR_CORE_INFO]));
|
||||
#endif
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG], base_path,
|
||||
"autoconfig", sizeof(g_defaults.dirs[DEFAULT_DIR_AUTOCONFIG]));
|
||||
--
|
||||
2.32.0
|
||||
|
||||
41
pkgs/applications/emulators/retroarch/wrapper.nix
Normal file
41
pkgs/applications/emulators/retroarch/wrapper.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ stdenv, lib, makeWrapper, retroarch, cores ? [ ] }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "retroarch";
|
||||
version = lib.getVersion retroarch;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildCommand = ''
|
||||
mkdir -p $out/lib
|
||||
for coreDir in $cores; do
|
||||
ln -s $coreDir/* $out/lib/.
|
||||
done
|
||||
|
||||
ln -s -t $out ${retroarch}/share
|
||||
|
||||
if [ -d ${retroarch}/Applications ]; then
|
||||
ln -s -t $out ${retroarch}/Applications
|
||||
fi
|
||||
|
||||
makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch \
|
||||
--suffix-each LD_LIBRARY_PATH ':' "$cores" \
|
||||
--add-flags "-L $out/lib/" \
|
||||
'';
|
||||
|
||||
cores = map (x: x + x.libretroCore) cores;
|
||||
preferLocalBuild = true;
|
||||
|
||||
meta = with retroarch.meta; {
|
||||
inherit changelog description homepage license maintainers platforms;
|
||||
longDescription = ''
|
||||
RetroArch is the reference frontend for the libretro API.
|
||||
|
||||
The following cores are included:
|
||||
${lib.concatStringsSep "\n" (map (x: " - ${x.name}") cores)}
|
||||
'';
|
||||
# FIXME: exits with error on macOS:
|
||||
# No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue