Replaced retroarchBare with retroarchBareMaster, also added a few new libretro cores

retroarchBare was too old for any practical use at this point, so it was removed in favor
of fetching releases from git. RetroArch often recommends checkout out the latest git master
if you are on a desktop platform, so we are conforming with their recommendation. I plan on
bumping the git of retroarch and each core every month, and I plan on adding more libretro
cores in the future.

The libretro cores that were added are nestopia, quicknes, snes9x, and vba-m

planned next are : bsnes-accuracy, bsnes-balanced, bsnes-performance, a few libretro mame ports

Closes #4448
This commit is contained in:
Cray Elliott 2014-10-09 20:11:54 -07:00 committed by Mateusz Kowalczyk
parent 74fde7c388
commit e39bf7a704
4 changed files with 112 additions and 92 deletions

View File

@ -9,7 +9,7 @@ let
stdenv.lib.makeOverridable stdenv.mkDerivation rec { stdenv.lib.makeOverridable stdenv.mkDerivation rec {
name = "libretro-${core}-${version}"; name = "libretro-${core}-${version}";
version = "20140902"; version = "20141009";
inherit src; inherit src;
buildInputs = [ makeWrapper retroarch zlib ] ++ a.extraBuildInputs or []; buildInputs = [ makeWrapper retroarch zlib ] ++ a.extraBuildInputs or [];
@ -53,8 +53,8 @@ in
core = "4do"; core = "4do";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core + "-libretro";
rev = "961812bc421f3fbfd83ea211783bb511a0b6d31c"; rev = "700e5c2b28252ed7d3fb086ab016b3b964a5030a";
sha256 = "0217iq8sj8gn161c3mj632csl1da8ir2ffxxdillpcddv6ppsayl"; sha256 = "0wxiapbp6i3r9ir75xgmah0jhrfvy9jgqr6i22grgmnga1qv5pcf";
}; };
description = "Port of 4DO/libfreedo to libretro"; description = "Port of 4DO/libfreedo to libretro";
}).override { }).override {
@ -65,30 +65,32 @@ in
core = "bsnes-mercury"; core = "bsnes-mercury";
src = fetchRetro { src = fetchRetro {
repo = core; repo = core;
rev = "cc44e91bfba6f7b3d1d3d51a9fa28b39a579f5e0"; rev = "5fa7c035a604cd207c5833af0fdd55d7cf68acb0";
sha256 = "0nzwjrbfvzywsimrvp4vbpj7zxf9iwpghd9z7f9f1q027l0vj42f"; sha256 = "19drxpspid0y3wi3zp3ls4jlhx1ndqmr51jici7w2vsajk9x9dyg";
}; };
description = "Fork of bsnes with HLE DSP emulation restored"; description = "Fork of bsnes with HLE DSP emulation restored";
}).override { }).override {
buildPhase = "make && cd out"; buildPhase = "make && cd out";
}; };
desmume = mkLibRetroCore rec { desmume = (mkLibRetroCore rec {
core = "desmume"; core = "desmume";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core;
rev = "1dd58e4a9fa375b6909cd8718165a429d4b8bd6d"; rev = "57bbabfe71fb8e131fa14ab1504f1959937b8ce5";
sha256 = "137bw9316qxm8s6p0bzyvk39dv5b5bn60fgllmyj9z5y8x5lrc9l"; sha256 = "19kbl361ggzhmmc5alsfwq9gcl0zc9zhz0nx562l6k2lj7fwwr0g";
}; };
description = "libretro wrapper for desmume NDS emulator"; description = "libretro wrapper for desmume NDS emulator";
}).override {
configurePhase = "cd desmume";
}; };
fceumm = mkLibRetroCore rec { fceumm = mkLibRetroCore rec {
core = "fceumm"; core = "fceumm";
src = fetchRetro { src = fetchRetro {
repo = "libretro-" + core; repo = "libretro-" + core;
rev = "17e081541c9d36d0658e7139afa5b085aa0316c9"; rev = "1b27f5abafa4ace43badebea82a8374be3a5a96b";
sha256 = "0cn74z976rgjh7hf0yb1sdjlm347157893s2z397rgjvks8xssb0"; sha256 = "04v0in7nazmkfsbvl0wn5klnz4f8rpjsar1v3c07j2qrma42k60w";
}; };
description = "FCEUmm libretro port"; description = "FCEUmm libretro port";
}; };
@ -97,8 +99,8 @@ in
core = "fba"; core = "fba";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core + "-libretro";
rev = "da6355526a9b02a642447994414baababe904c1e"; rev = "21a78df085a0d964828c5c0940c03e656e2ad808";
sha256 = "14kba506m9dnldmkpq3vgw416pm7cgc167hgm3f0l59ylp2592ff"; sha256 = "01ycszinral19ni22a3x8afiz23y9xw6idzx9a22xnc6zqvj0fjm";
}; };
description = "Port of Final Burn Alpha to libretro"; description = "Port of Final Burn Alpha to libretro";
}).override { }).override {
@ -113,8 +115,8 @@ in
core = "gambatte"; core = "gambatte";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core + "-libretro";
rev = "267a4e09bf8f0877483abdffde6295f29d7235ee"; rev = "6f3c97d86483368ec446b6b08ae21b1cb644312c";
sha256 = "1swx3mjb6qmlg6grcakhl17vrmy4vdvimxkv5gbv6gnj5riya4vl"; sha256 = "19kbisbl5lqxfsaff4knp2rrl17af21c1kgccxhgp5liqnqk92k5";
}; };
description = "Gambatte libretro port"; description = "Gambatte libretro port";
}).override { }).override {
@ -125,8 +127,8 @@ in
core = "genesis-plus-gx"; core = "genesis-plus-gx";
src = fetchRetro { src = fetchRetro {
repo = "Genesis-Plus-GX"; repo = "Genesis-Plus-GX";
rev = "c0015e27e3ae607ea0490b2accfe31097ef3cbce"; rev = "d634da83d29d39d293c1aba3c14f6259e13e525e";
sha256 = "1k4b5wib7nqzk53qwvhkh4a70gc4pq7vkrpvmfzp5f2c4vrbw1i7"; sha256 = "0mhn2h2wr2kh5rgda5rj7xkmg4b6glg4rnd0f1ak6rp3sh8dfhv1";
}; };
description = "Enhanced Genesis Plus libretro port"; description = "Enhanced Genesis Plus libretro port";
}; };
@ -135,8 +137,8 @@ in
core = "mupen64plus"; core = "mupen64plus";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core + "-libretro";
rev = "2251b3aba2a5bb233ff49dd9b6472f2c0feb9b83"; rev = "021ab383e2ac44533e9babd3e7f5fed97a988225";
sha256 = "04g93kj6n5vddbzfb30d8n711kg0yxfnl5v567aa854misn6gfxd"; sha256 = "13hph19b24bbp9d6s8zm4a939dhy96n2fbkcknmsp473kfnm9mf6";
}; };
description = "Libretro port of Mupen64 Plus, GL only"; description = "Libretro port of Mupen64 Plus, GL only";
@ -145,12 +147,24 @@ in
buildPhase = "make WITH_DYNAREC=${if stdenv.system == "x86_64-linux" then "x86_64" else "x86"}"; buildPhase = "make WITH_DYNAREC=${if stdenv.system == "x86_64-linux" then "x86_64" else "x86"}";
}; };
nestopia = (mkLibRetroCore rec {
core = "nestopia";
src = fetchRetro {
repo = core;
rev = "3468f3c16c80935e8c4078a5771e9379a981989c";
sha256 = "1k9kd25z4hyna48gwxb8rkm9q402xzhw18wmgbzkf8y6zqxn50j0";
};
description = "nestopia undead libretro port";
}).override {
buildPhase = "cd libretro && make";
};
picodrive = (mkLibRetroCore rec { picodrive = (mkLibRetroCore rec {
core = "picodrive"; core = "picodrive";
src = fetchRetro { src = fetchRetro {
repo = core; repo = core;
rev = "d84817550ac064fbba7ee718fb3baeda7d5546da"; rev = "3f4b091194d29dd90a3cb88fd6520f677ffece65";
sha256 = "17zh9m2v7h1cifzz8dcwqm4wn94zyhz6g85gf0aw6xylxahza627"; sha256 = "0jb89g5xmq7nzx4gm1mam1hym20fcyzp95k9as0k2gnwxrd4ymxv";
}; };
description = "Fast MegaDrive/MegaCD/32X emulator"; description = "Fast MegaDrive/MegaCD/32X emulator";
@ -164,8 +178,8 @@ in
core = "prboom"; core = "prboom";
src = fetchRetro { src = fetchRetro {
repo = "libretro-" + core; repo = "libretro-" + core;
rev = "de2f0a0fab1a73a28cd501fdb9291ffc7dc357f5"; rev = "7c5e74a8f8a973278d46604f2816aae538e9cce7";
sha256 = "01gxa6hh9vijic2n44q1lndhdyw0kdpmajabs0nizn7bni51b29c"; sha256 = "1mkxc7zcyc2nj7spsrasbnz6k182g8i1snahbbwj4qi41db6cjc9";
}; };
description = "Prboom libretro port"; description = "Prboom libretro port";
}).override { }).override {
@ -176,13 +190,25 @@ in
core = "ppsspp"; core = "ppsspp";
src = fetchRetro { src = fetchRetro {
repo = "libretro-" + core; repo = "libretro-" + core;
rev = "6ee828171218b26e124c5e8fa7877e6ee1d5ff79"; rev = "af5050be6b421e08be42d4edf0015693ceba1f06";
sha256 = "1559d4k3h0a2dv3684j4w924p2dg8z2j1fwhy7w9mhb5z4kddjhk"; sha256 = "0h4crdq6n6npbv6sidp3bgz5g2z3ws6ikg37f0amshh3rj36p7q0";
}; };
description = "ppsspp libretro port"; description = "ppsspp libretro port";
extraBuildInputs = [ mesa ffmpeg ]; extraBuildInputs = [ mesa ffmpeg ];
}).override{ }).override {
buildPhase = "cd libretro && make";
};
quicknes = (mkLibRetroCore rec {
core = "quicknes";
src = fetchRetro {
repo = "QuickNES_Core";
rev = "3e8935cc937d3bf64dc44b63cef5d584ec2673fa";
sha256 = "003hrxkskrkqv5h39p4gd9mg2k3ki5l1cmm0kxq7c454yliljjxc";
};
description = "QuickNES libretro port";
}).override {
buildPhase = "cd libretro && make"; buildPhase = "cd libretro && make";
}; };
@ -190,22 +216,34 @@ in
core = "scummvm"; core = "scummvm";
src = fetchRetro { src = fetchRetro {
repo = core; repo = core;
rev = "c00247171ba8201614e85556c638b8825dc9f225"; rev = "0a703f6546c5a0d8ef835aa624681f7877c36df6";
sha256 = "1wir3x928b37va6gn14bmwsydkpk4afma5hppmbivw4qp8mj25pa"; sha256 = "1v1a6zvc1sjvvnvcarcmdym7qwyqyvl4b6ianjgzbpaxwmw457g0";
}; };
description = "Libretro port of ScummVM"; description = "Libretro port of ScummVM";
extraBuildInputs = [ fluidsynth libjpeg libvorbis mesa SDL ]; extraBuildInputs = [ fluidsynth libjpeg libvorbis mesa SDL ];
}).override { }).override {
buildPhase = "cd backends/platform/libretro/build/;make"; buildPhase = "cd backends/platform/libretro/build && make";
};
snes9x = (mkLibRetroCore rec {
core = "snes9x";
src = fetchRetro {
repo = core;
rev = "0724786eb2ed1436946a2e2b42c77cddf8412a63";
sha256 = "15wnq12mkfz766dzafhlmmh8a8b463ybssj84fhijj8c1x75scd1";
};
description = " Port of SNES9x git to libretro";
}).override {
buildPhase = "cd libretro && make";
}; };
snes9x-next = mkLibRetroCore rec { snes9x-next = mkLibRetroCore rec {
core = "snes9x-next"; core = "snes9x-next";
src = fetchRetro { src = fetchRetro {
repo = core; repo = core;
rev = "461d92be09e1857d215f51aeea448a8e180bbfdd"; rev = "c701a1e4357bc80e46cae5bdfa0d359bcbce23ad";
sha256 = "0ci453qsyrv3brmy2szngis2xyvxilcv9yhc2qjz285mirg6fj57"; sha256 = "0410dj7rxcadvyghc1yqwqidn1g3scm52i3gb9d8haymg9q1zbjs";
}; };
description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro"; description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro";
}; };
@ -214,22 +252,33 @@ in
core = "stella"; core = "stella";
src = fetchRetro { src = fetchRetro {
repo = core + "-libretro"; repo = core + "-libretro";
rev = "c7ee7ca7e8a29c986f49306c75832972f5749f72"; rev = "394ef8c10b8057fe3f92ff9d7c73886ae2eefec2";
sha256 = "15wy9h3a2qk66lh8x40b3a9il0zkdflqil1h51zjmhq2zzsq8p95"; sha256 = "1a5m157fqpspi2zafmqhcd6864dvfpwh44d4n47ngswp6ii9bq0f";
}; };
description = "Port of Stella to libretro"; description = "Port of Stella to libretro";
}).override { }).override {
buildPhase = "make"; buildPhase = "make";
}; };
vba-m = (mkLibRetroCore rec {
core = "vbam";
src = fetchRetro {
repo = core + "-libretro";
rev = "26a030ce01a6473d35bac2a6db4f0a360989d72f";
sha256 = "065gljk2nijnjg2c2zbnpg25s5zam7x0z8lq7kbz9zb87sp73ha1";
};
description = "vanilla VBA-M libretro port";
}).override {
buildPhase = "cd src/libretro && make";
};
vba-next = mkLibRetroCore rec { vba-next = mkLibRetroCore rec {
core = "vba-next"; core = "vba-next";
src = fetchRetro { src = fetchRetro {
repo = core; repo = core;
rev = "fb095107f83df5f93b8ba4833eaf43901f42c0c0"; rev = "136fe2020e941f27036754dd0524bfec750025dc";
sha256 = "0fvq1dfll27vjbmyh4qsp2nw166jsd91sjmf1sl84z56ab3q3iw8"; sha256 = "17bvx2wp2r5lkgffvqrirhgic1bfy39m7c1v74z245hg6z1jvqcf";
}; };
description = "VBA-M libretro port"; description = "VBA-M libretro port with modifications for speed";
}; };
} }

View File

@ -1,31 +1,31 @@
{ stdenv, fetchgit, pkgconfig, which { stdenv, fetchgit, pkgconfig, ffmpeg, mesa, nvidia_cg_toolkit
, SDL, mesa, alsaLib , freetype, libxml2, libv4l, coreutils, python34, which, udev, alsaLib
, libXxf86vm, libXinerama, libXv , libX11, libXext, libXxf86vm, libXdmcp, SDL, pulseaudio ? null }:
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "retroarch-bare-0.9.9.7"; name = "retroarch-bare-${version}";
version = "20141009";
src = fetchgit { src = fetchgit {
url = "https://github.com/libretro/RetroArch.git"; url = git://github.com/libretro/RetroArch.git;
rev = "ea0c4880556e0f9d1fe8253ddc713bc743b00e1b"; rev = "72f26dfb49f236294c52eb9cb4c9d5c15da4837a";
sha256 = "1jhyh7f8ijy67fxslxqsp8pjl2lwayjljp06hp4n5cn33yajpbd7"; sha256 = "0dn9fh1frnbxykhw3q229ck50a800p8r4va8nssfcdxh8cys385w";
}; };
buildInputs = [ buildInputs = [ pkgconfig ffmpeg mesa nvidia_cg_toolkit freetype libxml2 libv4l coreutils
pkgconfig which SDL mesa alsaLib python34 which udev alsaLib libX11 libXext libXxf86vm libXdmcp SDL pulseaudio ];
libXxf86vm libXinerama libXv
];
preConfigure = '' patchPhase = ''
configureFlags="--global-config-dir=$out/etc" export GLOBAL_CONFIG_DIR=$out/etc
sed -e 's#/bin/true#${coreutils}/bin/true#' -i qb/qb.libs.sh
''; '';
meta = { enableParallelBuilding = true;
description = "Modular multi-system game/emulator system";
homepage = "http://www.libretro.com/"; meta = with stdenv.lib; {
license = stdenv.lib.licenses.gpl3Plus; homepage = http://libretro.org/;
platforms = stdenv.lib.platforms.linux; description = "Multi-platform emulator frontend for libretro cores";
maintainers = with stdenv.lib.maintainers; [ iyzsong ]; license = licenses.gpl3;
maintainers = with maintainers; [ MP2E ];
}; };
} }

View File

@ -1,31 +0,0 @@
{ stdenv, fetchgit, pkgconfig, ffmpeg, mesa, nvidia_cg_toolkit
, freetype, libxml2, libv4l, coreutils, python34, which, udev, alsaLib
, libX11, libXext, libXxf86vm, libXdmcp, SDL, pulseaudio ? null }:
stdenv.mkDerivation rec {
name = "retroarch-bare-${version}";
version = "20140902";
src = fetchgit {
url = git://github.com/libretro/RetroArch.git;
rev = "0856091296c2e47409f36e13007805d71db69483";
sha256 = "152dfp6jd7yzvasqrqw4ydjbdcwq4khisia2dax3gydvxkq87nl4";
};
buildInputs = [ pkgconfig ffmpeg mesa nvidia_cg_toolkit freetype libxml2 libv4l coreutils
python34 which udev alsaLib libX11 libXext libXxf86vm libXdmcp SDL pulseaudio ];
patchPhase = ''
export GLOBAL_CONFIG_DIR=$out/etc
sed -e 's#/bin/true#${coreutils}/bin/true#' -i qb/qb.libs.sh
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = http://libretro.org/;
description = "Multi-platform emulator frontend for libretro cores";
license = licenses.gpl3;
maintainers = with maintainers; [ MP2E ];
};
}

View File

@ -10670,13 +10670,17 @@ let
++ optional (cfg.enableGambatte or false) gambatte ++ optional (cfg.enableGambatte or false) gambatte
++ optional (cfg.enableGenesisPlusGX or false) genesis-plus-gx ++ optional (cfg.enableGenesisPlusGX or false) genesis-plus-gx
++ optional (cfg.enableMupen64Plus or false) mupen64plus ++ optional (cfg.enableMupen64Plus or false) mupen64plus
++ optional (cfg.enableNestopia or false) nestopia
++ optional (cfg.enablePicodrive or false) picodrive ++ optional (cfg.enablePicodrive or false) picodrive
++ optional (cfg.enablePrboom or false) prboom ++ optional (cfg.enablePrboom or false) prboom
++ optional (cfg.enablePPSSPP or false) ppsspp ++ optional (cfg.enablePPSSPP or false) ppsspp
++ optional (cfg.enableQuickNES or false) quicknes
++ optional (cfg.enableScummVM or false) scummvm ++ optional (cfg.enableScummVM or false) scummvm
++ optional (cfg.enableSnes9x or false) snes9x
++ optional (cfg.enableSnes9xNext or false) snes9x-next ++ optional (cfg.enableSnes9xNext or false) snes9x-next
++ optional (cfg.enableStella or false) stella ++ optional (cfg.enableStella or false) stella
++ optional (cfg.enableVbaNext or false) vba-next ++ optional (cfg.enableVbaNext or false) vba-next
++ optional (cfg.enableVbaM or false) vba-m
); );
wrapRetroArch = { retroarch }: import ../misc/emulators/retroarch/wrapper.nix { wrapRetroArch = { retroarch }: import ../misc/emulators/retroarch/wrapper.nix {
@ -12053,12 +12057,10 @@ let
retroarchBare = callPackage ../misc/emulators/retroarch { }; retroarchBare = callPackage ../misc/emulators/retroarch { };
retroarchBareMaster = callPackage ../misc/emulators/retroarch/master.nix { }; retroarch = wrapRetroArch { retroarch = retroarchBare; };
retroarch = wrapRetroArch { retroarch = retroarchBareMaster; };
libretro = recurseIntoAttrs (callPackage ../misc/emulators/retroarch/cores.nix { libretro = recurseIntoAttrs (callPackage ../misc/emulators/retroarch/cores.nix {
retroarch = retroarchBareMaster; retroarch = retroarchBare;
}); });
rssglx = callPackage ../misc/screensavers/rss-glx { }; rssglx = callPackage ../misc/screensavers/rss-glx { };