git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #146958 from thiagokokada/add-missing-libretro-cores

Add missing libretro cores

commit3ecace59a4414cef3be1344e4f5a900901fb037a authorThiago Kenji Okada <thiagokokada@gmail.com> dateThu 25 Nov 2021, 15:14 (5 years ago) parent7c529000e8e7c8
4 files changed+271−117
pkgs/misc/emulators/retroarch/cores.nix+125−33 pkgs/misc/emulators/retroarch/default.nix+7−5 pkgs/misc/emulators/retroarch/hashes.json+111−69 pkgs/misc/emulators/retroarch/update.py+28−10
pkgs/misc/emulators/retroarch/cores.nix+125−33
@@ -50,10 +50,11 @@ let
5050 mkLibRetroCore =
5151 { core
5252 , description
53+ # Check https://github.com/libretro/libretro-core-info for license information
5354 , license
5455 , src ? null
5556 , broken ? false
56− , version ? "unstable-2021-11-16"
57+ , version ? "unstable-2021-11-22"
5758 , ...
5859 }@args:
5960 lib.makeOverridable stdenv.mkDerivation (
@@ -82,13 +83,18 @@ let
8283 }.${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name}"
8384 ] ++ (args.makeFlags or [ ]);
8485
86+ coreDir = "${placeholder "out"}/lib/retroarch/cores";
87+
8588 installPhase = ''
86− COREDIR="$out/lib/retroarch/cores"
89+ runHook preInstall
90+
8791 mkdir -p $out/bin
88− mkdir -p $COREDIR
89− mv ${d2u args.core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $COREDIR
92+ mkdir -p $coreDir
93+ mv ${d2u args.core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $coreDir
9094 makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch-${core} \
91− --add-flags "-L $COREDIR/${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $@"
95+ --add-flags "-L $coreDir/${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $@"
96+
97+ runHook postInstall
9298 '';
9399
94100 enableParallelBuilding = true;
@@ -108,6 +114,8 @@ let
108114 );
109115in
110116{
117+ inherit mkLibRetroCore;
118+
111119 atari800 = mkLibRetroCore {
112120 core = "atari800";
113121 description = "Port of Atari800 to libretro";
@@ -116,14 +124,6 @@ in
116124 makeFlags = [ "GIT_VERSION=" ];
117125 };
118126
119− beetle-snes = mkLibRetroCore {
120− core = "mednafen-snes";
121− src = getCoreSrc "beetle-snes";
122− description = "Port of Mednafen's SNES core to libretro";
123− license = lib.licenses.gpl2Only;
124− makefile = "Makefile";
125− };
126−
127127 beetle-gba = mkLibRetroCore {
128128 core = "mednafen-gba";
129129 src = getCoreSrc "beetle-gba";
@@ -189,19 +189,15 @@ in
189189 description = "Port of Mednafen's Saturn core to libretro";
190190 license = lib.licenses.gpl2Only;
191191 makefile = "Makefile";
192− makeFlags = [ "HAVE_HW=0" ];
193192 meta.platforms = [ "x86_64-linux" "aarch64-linux" ];
194193 };
195194
196− beetle-saturn-hw = mkLibRetroCore {
197− core = "mednafen-saturn-hw";
198− src = getCoreSrc "beetle-saturn";
199− description = "Port of Mednafen's Saturn core to libretro";
195+ beetle-snes = mkLibRetroCore {
196+ core = "mednafen-snes";
197+ src = getCoreSrc "beetle-snes";
198+ description = "Port of Mednafen's SNES core to libretro";
200199 license = lib.licenses.gpl2Only;
201− extraBuildInputs = [ libGL libGLU ];
202200 makefile = "Makefile";
203− makeFlags = [ "HAVE_OPENGL=1" "HAVE_HW=1" ];
204− meta.platforms = [ "x86_64-linux" "aarch64-linux" ];
205201 };
206202
207203 beetle-supergrafx = mkLibRetroCore {
@@ -212,6 +208,14 @@ in
212208 makefile = "Makefile";
213209 };
214210
211+ beetle-vb = mkLibRetroCore {
212+ core = "mednafen-vb";
213+ src = getCoreSrc "beetle-vb";
214+ description = "Port of Mednafen's VirtualBoy core to libretro";
215+ license = lib.licenses.gpl2Only;
216+ makefile = "Makefile";
217+ };
218+
215219 beetle-wswan = mkLibRetroCore {
216220 core = "mednafen-wswan";
217221 src = getCoreSrc "beetle-wswan";
@@ -220,12 +224,10 @@ in
220224 makefile = "Makefile";
221225 };
222226
223− beetle-vb = mkLibRetroCore {
224− core = "mednafen-vb";
225− src = getCoreSrc "beetle-vb";
226− description = "Port of Mednafen's VirtualBoy core to libretro";
227− license = lib.licenses.gpl2Only;
228− makefile = "Makefile";
227+ blastem = mkLibRetroCore {
228+ core = "blastem";
229+ description = "Port of BlastEm to libretro";
230+ license = lib.licenses.gpl3Only;
229231 };
230232
231233 bluemsx = mkLibRetroCore {
@@ -234,6 +236,43 @@ in
234236 license = lib.licenses.gpl2Only;
235237 };
236238
239+ bsnes = mkLibRetroCore {
240+ core = "bsnes";
241+ description = "Port of bsnes to libretro";
242+ license = lib.licenses.gpl3Only;
243+ makefile = "Makefile";
244+ # https://github.com/libretro/bsnes-libretro/issues/10
245+ patches = [
246+ (fetchpatch {
247+ name = "added-missing-GB_VERSION-define.patch";
248+ url = "https://github.com/nE0sIghT/bsnes-libretro/commit/97fd8b486f9a9046277a580b238b6673a98f7f72.patch";
249+ sha256 = "sha256-gCiy6sqc9sixT6Appr5ZCfHyBE2jYhPb0KvI63nfmEc=";
250+ })
251+ ];
252+ };
253+
254+ bsnes-hd =
255+ let
256+ # linux = bsd
257+ # https://github.com/DerKoun/bsnes-hd/blob/f0b6cf34e9780d53516977ed2de64137a8bcc3c5/bsnes/GNUmakefile#L37
258+ platform = if stdenv.isDarwin then "macos" else "linux";
259+ in
260+ mkLibRetroCore {
261+ core = "bsnes-hd-beta";
262+ src = getCoreSrc "bsnes-hd";
263+ description = "Port of bsnes-hd to libretro";
264+ license = lib.licenses.gpl3Only;
265+ makefile = "GNUmakefile";
266+ makeFlags = [
267+ "-C"
268+ "bsnes"
269+ "target=libretro"
270+ "platform=${platform}"
271+ ];
272+ extraBuildInputs = [ xorg.libX11 xorg.libXext ];
273+ postBuild = "cd bsnes/out";
274+ };
275+
237276 bsnes-mercury = mkLibRetroCore {
238277 core = "bsnes-mercury-accuracy";
239278 src = getCoreSrc "bsnes-mercury";
@@ -243,6 +282,24 @@ in
243282 makeFlags = [ "PROFILE=accuracy" ];
244283 };
245284
285+ bsnes-mercury-balanced = mkLibRetroCore {
286+ core = "bsnes-mercury-balanced";
287+ src = getCoreSrc "bsnes-mercury";
288+ description = "Fork of bsnes with HLE DSP emulation restored";
289+ license = lib.licenses.gpl3Only;
290+ makefile = "Makefile";
291+ makeFlags = [ "PROFILE=balanced" ];
292+ };
293+
294+ bsnes-mercury-performance = mkLibRetroCore {
295+ core = "bsnes-mercury-performance";
296+ src = getCoreSrc "bsnes-mercury";
297+ description = "Fork of bsnes with HLE DSP emulation restored";
298+ license = lib.licenses.gpl3Only;
299+ makefile = "Makefile";
300+ makeFlags = [ "PROFILE=performance" ];
301+ };
302+
246303 citra = mkLibRetroCore {
247304 core = "citra";
248305 # `nix-prefetch-github` doesn't support `deepClone`, necessary for citra
@@ -503,6 +560,14 @@ in
503560 enableParallelBuilding = false;
504561 };
505562
563+ melonds = mkLibRetroCore {
564+ core = "melonds";
565+ description = "Port of MelonDS to libretro";
566+ license = lib.licenses.gpl3Only;
567+ extraBuildInputs = [ libGL libGLU ];
568+ makefile = "Makefile";
569+ };
570+
506571 mesen = mkLibRetroCore {
507572 core = "mesen";
508573 description = "Port of Mesen to libretro";
@@ -511,6 +576,20 @@ in
511576 preBuild = "cd Libretro";
512577 };
513578
579+ mesen-s = mkLibRetroCore {
580+ core = "mesens";
581+ src = getCoreSrc "mesen-s";
582+ description = "Port of Mesen-S to libretro";
583+ license = lib.licenses.gpl3Only;
584+ makefile = "Makefile";
585+ preBuild = "cd Libretro";
586+ postInstall = ''
587+ # fix library name to match libretro-core-info
588+ mv $coreDir/mesens_libretro${stdenv.hostPlatform.extensions.sharedLibrary} \
589+ $coreDir/mesen-s_libretro${stdenv.hostPlatform.extensions.sharedLibrary}
590+ '';
591+ };
592+
514593 meteor = mkLibRetroCore {
515594 core = "meteor";
516595 description = "Port of Meteor to libretro";
@@ -724,6 +803,19 @@ in
724803 makefile = "Makefile";
725804 };
726805
806+ swanstation = mkLibRetroCore {
807+ core = "swanstation";
808+ description = "Port of SwanStation (a fork of DuckStation) to libretro";
809+ license = lib.licenses.gpl3Only;
810+ extraNativeBuildInputs = [ cmake ];
811+ makefile = "Makefile";
812+ cmakeFlags = [
813+ "-DCMAKE_BUILD_TYPE=Release"
814+ "-DBUILD_LIBRETRO_CORE=ON"
815+ ];
816+ postPatch = "mkdir -p src/duckstation-libretro";
817+ };
818+
727819 tgbdual = mkLibRetroCore {
728820 core = "tgbdual";
729821 description = "Port of TGBDual to libretro";
@@ -757,12 +849,6 @@ in
757849 postBuild = "cd lib";
758850 };
759851
760− vba-next = mkLibRetroCore {
761− core = "vba-next";
762− description = "VBA-M libretro port with modifications for speed";
763− license = lib.licenses.gpl2Only;
764− };
765−
766852 vba-m = mkLibRetroCore {
767853 core = "vbam";
768854 src = getCoreSrc "vba-m";
@@ -772,6 +858,12 @@ in
772858 preBuild = "cd src/libretro";
773859 };
774860
861+ vba-next = mkLibRetroCore {
862+ core = "vba-next";
863+ description = "VBA-M libretro port with modifications for speed";
864+ license = lib.licenses.gpl2Only;
865+ };
866+
775867 vecx = mkLibRetroCore {
776868 core = "vecx";
777869 description = "Port of Vecx to libretro";
pkgs/misc/emulators/retroarch/default.nix+7−5
@@ -36,16 +36,18 @@
3636with lib;
3737
3838let
39+ mainVersion = "1.9.13";
40+ revision = "2";
3941 libretroSuperSrc = fetchFromGitHub {
4042 owner = "libretro";
41− repo = "libretro-super";
42− sha256 = "sha256-4WB6/1DDec+smhMJKLCxWb4+LQlZN8v2ik69saKixkE=";
43− rev = "fa70d9843838df719623094965bd447e4db0d1b4";
43+ repo = "libretro-core-info";
44+ sha256 = "sha256-jM+iXNSCpJy4wOk1S72G1UjNGBzejyhs5LFFWCFjs2c=";
45+ rev = "v${mainVersion}";
4446 };
4547in
4648stdenv.mkDerivation rec {
4749 pname = "retroarch-bare";
48− version = "1.9.13.2";
50+ version = "${lib.concatStringsSep "." [ mainVersion revision ]}";
4951
5052 src = fetchFromGitHub {
5153 owner = "libretro";
@@ -98,7 +100,7 @@ stdenv.mkDerivation rec {
98100 postInstall = optionalString withVulkan ''
99101 mkdir -p $out/share/libretro/info
100102 # TODO: ideally each core should have its own core information
101− cp -r ${libretroSuperSrc}/dist/info/* $out/share/libretro/info
103+ cp -r ${libretroSuperSrc}/* $out/share/libretro/info
102104 wrapProgram $out/bin/retroarch --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
103105 '';
104106
pkgs/misc/emulators/retroarch/hashes.json+111−69
@@ -6,13 +6,6 @@
66 "sha256": "LJpRegJVR2+sS1UmTTpVest0rMrNDBMXmj/jRFVglWI=",
77 "fetchSubmodules": false
88 },
9− "beetle-snes": {
10− "owner": "libretro",
11− "repo": "beetle-bsnes-libretro",
12− "rev": "bc867656d7438aaffc6818b3b92350587bc78a47",
13− "sha256": "TyUCRGK+uyXowDjXW9/4m+zL8Vh/3GGsX1eznrTCbAg=",
14− "fetchSubmodules": false
15− },
169 "beetle-gba": {
1710 "owner": "libretro",
1811 "repo": "beetle-gba-libretro",
@@ -30,57 +23,71 @@
3023 "beetle-ngp": {
3124 "owner": "libretro",
3225 "repo": "beetle-ngp-libretro",
33− "rev": "f969af2b52f20642aea7e800e3cfcce728f3aee9",
34− "sha256": "GIzLZ3iOJeHKdAowhM4S56iouaxX8v2XZgc/ZiCzCPk=",
26+ "rev": "f7c393184e5228c3d3807ee74c951c4c549107d8",
27+ "sha256": "7vki8VkwOzxwMZcUxekg1DFSskV7VNQ1SRaU3M1xHZ0=",
3528 "fetchSubmodules": false
3629 },
3730 "beetle-pce-fast": {
3831 "owner": "libretro",
3932 "repo": "beetle-pce-fast-libretro",
40− "rev": "81d4c9d07a76c89c32ad0e7450b69bde6403836f",
41− "sha256": "LhQbAEUMhoIF3VfwLbhtD7xxSddzdgwIHHnSabQPAvs=",
33+ "rev": "a7608100d1cdd8eb65aea82fede7da61dcc3c5f1",
34+ "sha256": "3v/TGz4y52IodXRmt/peZlabNS+quQVN9t5xucC2plg=",
4235 "fetchSubmodules": false
4336 },
4437 "beetle-pcfx": {
4538 "owner": "libretro",
4639 "repo": "beetle-pcfx-libretro",
47− "rev": "a1f1734509dd6acb11269f118d61f480ae8dbacf",
48− "sha256": "rvRDuYJLxb1TSwNXhp3ATJW0sQgWi8Cj4NR3hep/AJk=",
40+ "rev": "19f2b7ce529e70655db04d3dd4faf32b4de14df2",
41+ "sha256": "K3ZjOd8IGtwlwxExNAmHsOC0N0fz06w/3uua7sAm8Jc=",
4942 "fetchSubmodules": false
5043 },
5144 "beetle-psx": {
5245 "owner": "libretro",
5346 "repo": "beetle-psx-libretro",
54− "rev": "ccca81930a078c0efd77b00327d2ee212698f3b4",
55− "sha256": "Hy8Zrp0kTR+Mfbq0nVYerSarRCxZI+ykgDOscakDMiU=",
47+ "rev": "bc1b6af8d7b8dd0b4133040fef82725520bbd560",
48+ "sha256": "QgBB05o7941LsNKl2EIKy185xgcAf1vrAZgQiray/x0=",
5649 "fetchSubmodules": false
5750 },
5851 "beetle-saturn": {
5952 "owner": "libretro",
6053 "repo": "beetle-saturn-libretro",
61− "rev": "e1119e91a4e3f4b30971455aeb3c1a6f4cd05e59",
62− "sha256": "lKlNNAHK1ynFXY++Ya0m1Ax5YTZkd44eQjzuOLXfWa8=",
54+ "rev": "f97fda5447d883220ce2f53a15f2cbe4790a8392",
55+ "sha256": "r4kvrTIw1sOf5nEuPq2xF/QXw+0COQYWyERJ7HX1sFU=",
56+ "fetchSubmodules": false
57+ },
58+ "beetle-snes": {
59+ "owner": "libretro",
60+ "repo": "beetle-bsnes-libretro",
61+ "rev": "bc867656d7438aaffc6818b3b92350587bc78a47",
62+ "sha256": "TyUCRGK+uyXowDjXW9/4m+zL8Vh/3GGsX1eznrTCbAg=",
6363 "fetchSubmodules": false
6464 },
6565 "beetle-supergrafx": {
6666 "owner": "libretro",
6767 "repo": "beetle-supergrafx-libretro",
68− "rev": "59062662d6e925ad512fcbb9c1a0db97d1592bc1",
69− "sha256": "kGyl5XJMFUALPAEZf4IynY6bmXWfqy0o65eO8zS0RTE=",
68+ "rev": "083d102389a1ffaeddfa525a186adde0f35e42fc",
69+ "sha256": "4hTOYPnOWdhb7CfWKZFO53NBFGa3lg0745ncBU6ejiQ=",
70+ "fetchSubmodules": false
71+ },
72+ "beetle-vb": {
73+ "owner": "libretro",
74+ "repo": "beetle-vb-libretro",
75+ "rev": "aa77198c6c60b935503b5ea2149b8ff7598344da",
76+ "sha256": "ShsMYc2vjDoiN1yCCoSl91P5ecYJDj/V+VWUYuYVxas=",
7077 "fetchSubmodules": false
7178 },
7279 "beetle-wswan": {
7380 "owner": "libretro",
7481 "repo": "beetle-wswan-libretro",
75− "rev": "0c7faaf7f70b72ebb68e310530cd46a69e680d40",
76− "sha256": "UQyICcZe1DVotSFt0QVnGop+JG5NJwTBcGSZaFW0P0U=",
82+ "rev": "3fcb582755a509ae33fc52cd0ca4b3edffc734ef",
83+ "sha256": "XHTzXlTt8op0bDLNn833Unt57zclXowlLhG3qvWwjXQ=",
7784 "fetchSubmodules": false
7885 },
79− "beetle-vb": {
86+ "blastem": {
8087 "owner": "libretro",
81− "repo": "beetle-vb-libretro",
82− "rev": "1bd0da71c8f6add253ad76e2b6e1357cd09fc304",
83− "sha256": "KguKbRK0uXE+brpF8HdRwi8Gt76AMa4wkh1MFvNCbN4=",
88+ "repo": "blastem",
89+ "rev": "0786858437ed71996f43b7af0fbe627eb88152fc",
90+ "sha256": "uEP5hSgLAle1cLv/EM7D11TJMAggu7pqWxfrUt3rhEg=",
8491 "fetchSubmodules": false
8592 },
8693 "bluemsx": {
@@ -90,6 +97,20 @@
9097 "sha256": "ix/AyYNer1R73ZJW1reXyj7geBr3ThrqXf5Ki5yrz9A=",
9198 "fetchSubmodules": false
9299 },
100+ "bsnes": {
101+ "owner": "libretro",
102+ "repo": "bsnes-libretro",
103+ "rev": "44d97b17d06a10ae17d97a91a48e5acd10ec6db4",
104+ "sha256": "VNSeTRryrX2/V38GGXTRLuDEQqDUmX2DUOHAKLxJezU=",
105+ "fetchSubmodules": false
106+ },
107+ "bsnes-hd": {
108+ "owner": "DerKoun",
109+ "repo": "bsnes-hd",
110+ "rev": "65f24e56c37f46bb752190024bd4058e64ad77d1",
111+ "sha256": "1dk2i71NOLeTTOZjVll8wrkr5dIH5bGSGUeeHqWjZHE=",
112+ "fetchSubmodules": false
113+ },
93114 "bsnes-mercury": {
94115 "owner": "libretro",
95116 "repo": "bsnes-mercury",
@@ -121,8 +142,8 @@
121142 "dolphin": {
122143 "owner": "libretro",
123144 "repo": "dolphin",
124− "rev": "82e617439b622af5d1189e9fec67e7f1376be099",
125− "sha256": "Q3a+0SYocX1hBGLs1K9r932NkiCDFINPhtHeyzUknJE=",
145+ "rev": "d5193c4391addbd257b2aafe943a138ba89e20fb",
146+ "sha256": "uRhYMO+fmAfwEr/KTKAhx//dKq44YdvhXxp7v+Gol0w=",
126147 "fetchSubmodules": false
127148 },
128149 "dosbox": {
@@ -149,29 +170,29 @@
149170 "fbneo": {
150171 "owner": "libretro",
151172 "repo": "fbneo",
152− "rev": "4d6387b7f3e3f1a9c25015789d751c6db1a9ae8c",
153− "sha256": "bIOmvhu9mOfOXoOTbwbjMHIZ3JkGz96yyFZALmqkOmk=",
173+ "rev": "2447dd5385cb193801dc46be7b50a807d13162aa",
174+ "sha256": "x70kPEC9LVm9ZyH5sviI8iW9dCkIi+lx2ns03OId2Oc=",
154175 "fetchSubmodules": false
155176 },
156177 "fceumm": {
157178 "owner": "libretro",
158179 "repo": "libretro-fceumm",
159− "rev": "a918869c18c9f30b84e04260b78b675b8a3c7be1",
160− "sha256": "nDYPrwIsvhWveDQDE0WEK7GO60iRE967p1XxXn+lNj4=",
180+ "rev": "8864f6e246e4ba511b95a48713456b0dd3b3045b",
181+ "sha256": "GrkD54ElseEYczPSb9WGTvI8SaNy/fWV4zve7sG9TTY=",
161182 "fetchSubmodules": false
162183 },
163184 "flycast": {
164185 "owner": "libretro",
165186 "repo": "flycast",
166− "rev": "ae670ea28fdbb9f08149cb598312a71a0970ca67",
167− "sha256": "jmSOfyak5mX04HgZOtCF9cz8HqAApxDXHJ6IqhqGILE=",
187+ "rev": "254b66a017a087f0833777760b879abfe7f9d5cd",
188+ "sha256": "pkgVjZCGlgq95Cv+xWLl3sjq+jIpgnfuVaXGDYtuGAY=",
168189 "fetchSubmodules": false
169190 },
170191 "fmsx": {
171192 "owner": "libretro",
172193 "repo": "fmsx-libretro",
173− "rev": "20c805409b8f6e1f9d61cb3dff0d5b28d82d1ee3",
174− "sha256": "uqqVF2+YpfWOKbe8aIreoImFb3/kL8ohslJkl+JivQI=",
194+ "rev": "7b0c70c25fcc7f4bb876e729eacfcc01f494df60",
195+ "sha256": "H3ttVMw3cUxXJ64olbTSO6K7YBpmdgKnaLEpTS9QQEg=",
175196 "fetchSubmodules": false
176197 },
177198 "freeintv": {
@@ -184,22 +205,22 @@
184205 "gambatte": {
185206 "owner": "libretro",
186207 "repo": "gambatte-libretro",
187− "rev": "4b822bcf561856689e101dd5505d365de5ffcffe",
188− "sha256": "FsIQLd/UO5xs/aTpggSn8WLPgi83gsxRlwKR+UzH+TY=",
208+ "rev": "c842d49b1daab6e45f3a1802ee7516b100827599",
209+ "sha256": "DUj4vEh3x7MaE8bHDwOoDY7K2yEkTGz8Cf3fx4sgCvY=",
189210 "fetchSubmodules": false
190211 },
191212 "genesis-plus-gx": {
192213 "owner": "libretro",
193214 "repo": "Genesis-Plus-GX",
194− "rev": "309a4aacfd582c312dcad61b7abfdffba4a0c66e",
195− "sha256": "jnbey1USldDZGXGXLLR5TgSJZgD+6ZFpwfIf6c8xvyM=",
215+ "rev": "c1c605e862c4a277e880b510c68ebde630487948",
216+ "sha256": "wDEwG+VMs0hXjL1pBn+wmvtaaN4nax+Dm6Ocy7HCLbQ=",
196217 "fetchSubmodules": false
197218 },
198219 "gpsp": {
199220 "owner": "libretro",
200221 "repo": "gpsp",
201− "rev": "a2aa78733d8daf1d550c9dc76c6ff94e8670b31c",
202− "sha256": "nKim7YkksUyZO97SvrW1TEYQlA+7Yi7xbLtyDPV4LWc=",
222+ "rev": "bc0a3cf2c182b7f60c80464309a791377bef5af3",
223+ "sha256": "27eOnAp6pzZAK5o1of5+2Fx/hHtUsjbBQlefdsCv0rk=",
203224 "fetchSubmodules": false
204225 },
205226 "gw": {
@@ -240,15 +261,15 @@
240261 "mame2003": {
241262 "owner": "libretro",
242263 "repo": "mame2003-libretro",
243− "rev": "d0ed1a565803cfada9f4088326eae616f6e5f8a3",
244− "sha256": "JGEy6Mp5qcZwaehzbj+qpdBfxHzqi6qIR7akxIj/WK8=",
264+ "rev": "e6595b3fa677158a7d834391517ae68e3c5f8f41",
265+ "sha256": "qxynDUQWtUKxJ7H7q9nGFhIjr1Pkrgtp8aJdTtG5/xU=",
245266 "fetchSubmodules": false
246267 },
247268 "mame2003-plus": {
248269 "owner": "libretro",
249270 "repo": "mame2003-plus-libretro",
250− "rev": "841e44dff953a346127f15be53cb34778e20ce1c",
251− "sha256": "aCXyeDcz0uSObe4S2bQWCxIAF5aA3kne5v0HT+oXHuw=",
271+ "rev": "680f4679c7a15fcec007eff8ba9578567b821daa",
272+ "sha256": "nxpmPE79C3hgeFLlwS4fHYteSmC4xuis1UySlqhqvzk=",
252273 "fetchSubmodules": false
253274 },
254275 "mame2010": {
@@ -272,11 +293,25 @@
272293 "sha256": "GQ4Sdg/1nZRT4Z1Aqq1zPo96duqIGyt6sjghf9ap2Jg=",
273294 "fetchSubmodules": false
274295 },
296+ "melonds": {
297+ "owner": "libretro",
298+ "repo": "melonds",
299+ "rev": "1ad65728476d7b9594c4ff91a1ba60460a0a30e7",
300+ "sha256": "EBV8F2MCmWuxWKMOXipTZKRGHqp8sb/ojK3JpGZe818=",
301+ "fetchSubmodules": false
302+ },
275303 "mesen": {
276− "owner": "SourMesen",
304+ "owner": "libretro",
277305 "repo": "mesen",
278− "rev": "86326e832974d984846ae078e568c023a5f76f1f",
279− "sha256": "At5rhlJ6rAnXaQrmRA1NtCCi+Ff/ytlt5dwsaXZhxXg=",
306+ "rev": "094d82bf724448426acbaad45e83bc38994e32f6",
307+ "sha256": "9+AqZRv8lugNNa+ZZzIPJNO87J1aBUEiOggL8aYno1M=",
308+ "fetchSubmodules": false
309+ },
310+ "mesen-s": {
311+ "owner": "libretro",
312+ "repo": "mesen-s",
313+ "rev": "42eb0e8ad346608dae86feb8a04833d16ad21541",
314+ "sha256": "q6zeoNiZtFy8ZYls9/E+O7o9BYTcVcmYjbJA48qiraU=",
280315 "fetchSubmodules": false
281316 },
282317 "meteor": {
@@ -331,8 +366,8 @@
331366 "opera": {
332367 "owner": "libretro",
333368 "repo": "opera-libretro",
334− "rev": "d8aa7cecf96298bd7ee51718086f7b1bc8c57e2a",
335− "sha256": "1t+zwCVmqiPFFNCNq9XzVfRGbEA1q8v4jzhOb+wV/nA=",
369+ "rev": "aa868e656b518567a95b11b2f14c5db8001b11a0",
370+ "sha256": "YUzfHtgKCzgxZwslFxwmAN0hg+MIGLAYBAI7RUCIW40=",
336371 "fetchSubmodules": false
337372 },
338373 "parallel-n64": {
@@ -352,22 +387,22 @@
352387 "picodrive": {
353388 "owner": "libretro",
354389 "repo": "picodrive",
355− "rev": "9cb99ce36f93871b05c5adc2790b2e33e63b50b6",
356− "sha256": "hhdEuri1hSNLAkno8Rwd0Yls11Yh6Q7/+t4T2LH+BaE=",
390+ "rev": "3edf1a00f64e0f22331233bb1638170115b2ac2e",
391+ "sha256": "4IWYOJ2wTDkdO4FxsAWCV724VNViHIb42nYc+j4pekU=",
357392 "fetchSubmodules": true
358393 },
359394 "play": {
360395 "owner": "jpd002",
361396 "repo": "Play-",
362− "rev": "b8e16159734c2068db0f2f12b11bc16ef55058ce",
363− "sha256": "qjp1rEjmDAAB2wXITA3lAS+ERJuZinoneJToYiYRi/w=",
397+ "rev": "6b9cc418004c01a195c78387752cc99245ba54d5",
398+ "sha256": "sha256-7nU5fQ8pQLmKy9Swmshkv2oj+HV0oTcqQ93LfNSq1us=",
364399 "fetchSubmodules": true
365400 },
366401 "ppsspp": {
367402 "owner": "hrydgard",
368403 "repo": "ppsspp",
369− "rev": "b6e7fe1aaf2bbb8f4faa1378bf14f434aea33cc1",
370− "sha256": "Kif6oF8Bjhgc02xKDivCG9RBxj5wxNFEwxl9nX3AZug=",
404+ "rev": "712b87ae57d4e69ad5ba98d331912dead31b9c01",
405+ "sha256": "sygZYAOkFrrfpaF6nfKMBecJTNeXk48oqlCRncPb340=",
371406 "fetchSubmodules": true
372407 },
373408 "prboom": {
@@ -394,8 +429,8 @@
394429 "sameboy": {
395430 "owner": "libretro",
396431 "repo": "sameboy",
397− "rev": "68f67b3db7747ba7aac84c5c253bc71d5a906525",
398− "sha256": "/4JQ1Tem3UgOUIcsLV0aLU+1R55hMTaT+wWElwj00Q4=",
432+ "rev": "fb3c7dd7d89df1f696e4cde33a868e141c927790",
433+ "sha256": "KFVNl43AJ11thHFFSJ6BO7wxfxhVdDVF+BAm1+GIzIs=",
399434 "fetchSubmodules": false
400435 },
401436 "scummvm": {
@@ -415,8 +450,8 @@
415450 "snes9x": {
416451 "owner": "snes9xgit",
417452 "repo": "snes9x",
418− "rev": "edc32fc0bd6aea6d5645a03f0f94b72f3cbfa43e",
419− "sha256": "Zeojdoykmk+lpG1z5EdZToGWYDQvSSQqaEr7F68iyk0=",
453+ "rev": "cf1a5901fccafdaead225b0a5e55ff74fdcf9678",
454+ "sha256": "p6qTCZnZSV5vgpZglI/HMi/wOfu0hG2TuvOQhQHeo2s=",
420455 "fetchSubmodules": false
421456 },
422457 "snes9x2002": {
@@ -443,8 +478,8 @@
443478 "stella": {
444479 "owner": "stella-emu",
445480 "repo": "stella",
446− "rev": "e1035b74fce26932078d00e8625688927efce34c",
447− "sha256": "+ZvSCnnoKGyToSFqUQOArolFdgUcBBFNjFw8aoVDkYI=",
481+ "rev": "f619b4e5cb01eefe0c01dedc01b452b3f74aab26",
482+ "sha256": "Oe++mDo1InvlvbRLlxcSjNQpioj4+ytt6ihTcvrD8g4=",
448483 "fetchSubmodules": false
449484 },
450485 "stella2014": {
@@ -454,6 +489,13 @@
454489 "sha256": "s7LQ47sAPTyk4COONk4qnebxCq78zGLIjh3Y2+1fIak=",
455490 "fetchSubmodules": false
456491 },
492+ "swanstation": {
493+ "owner": "libretro",
494+ "repo": "swanstation",
495+ "rev": "cc3946b2b3bd10282bc46078c245db09f6e68836",
496+ "sha256": "UzdmjUS6+6z4K6VJtMPxOwGXsCtxoh08RWTNHlvy/h8=",
497+ "fetchSubmodules": false
498+ },
457499 "tgbdual": {
458500 "owner": "libretro",
459501 "repo": "tgbdual-libretro",
@@ -475,13 +517,6 @@
475517 "sha256": "SXJvWX6Q3BrdajNnT4HIf6H2z7dXXvnXTJXf/TYRw4I=",
476518 "fetchSubmodules": true
477519 },
478− "vba-next": {
479− "owner": "libretro",
480− "repo": "vba-next",
481− "rev": "b218f48bb27b5d3885fa4076ff325922b5acd817",
482− "sha256": "idqGMbMA9mZlIh0QAba3BxpPDi/bFJJkUbnxV3xMOCo=",
483− "fetchSubmodules": false
484− },
485520 "vba-m": {
486521 "owner": "libretro",
487522 "repo": "vbam-libretro",
@@ -489,6 +524,13 @@
489524 "sha256": "vJWjdqJ913NLGL4G15sRPqO/wp9xPsuhUMLUuAbDRKk=",
490525 "fetchSubmodules": false
491526 },
527+ "vba-next": {
528+ "owner": "libretro",
529+ "repo": "vba-next",
530+ "rev": "b218f48bb27b5d3885fa4076ff325922b5acd817",
531+ "sha256": "idqGMbMA9mZlIh0QAba3BxpPDi/bFJJkUbnxV3xMOCo=",
532+ "fetchSubmodules": false
533+ },
492534 "vecx": {
493535 "owner": "libretro",
494536 "repo": "libretro-vecx",
pkgs/misc/emulators/retroarch/update.py+28−10
@@ -11,7 +11,6 @@ SCRIPT_PATH = Path(__file__).absolute().parent
1111HASHES_PATH = SCRIPT_PATH / "hashes.json"
1212CORES = {
1313 "atari800": {"repo": "libretro-atari800"},
14− "beetle-snes": {"repo": "beetle-bsnes-libretro"},
1514 "beetle-gba": {"repo": "beetle-gba-libretro"},
1615 "beetle-lynx": {"repo": "beetle-lynx-libretro"},
1716 "beetle-ngp": {"repo": "beetle-ngp-libretro"},
@@ -19,10 +18,14 @@ CORES = {
1918 "beetle-pcfx": {"repo": "beetle-pcfx-libretro"},
2019 "beetle-psx": {"repo": "beetle-psx-libretro"},
2120 "beetle-saturn": {"repo": "beetle-saturn-libretro"},
21+ "beetle-snes": {"repo": "beetle-bsnes-libretro"},
2222 "beetle-supergrafx": {"repo": "beetle-supergrafx-libretro"},
23− "beetle-wswan": {"repo": "beetle-wswan-libretro"},
2423 "beetle-vb": {"repo": "beetle-vb-libretro"},
24+ "beetle-wswan": {"repo": "beetle-wswan-libretro"},
25+ "blastem": {"repo": "blastem"},
2526 "bluemsx": {"repo": "bluemsx-libretro"},
27+ "bsnes": {"repo": "bsnes-libretro"},
28+ "bsnes-hd": {"repo": "bsnes-hd", "owner": "DerKoun"},
2629 "bsnes-mercury": {"repo": "bsnes-mercury"},
2730 "citra": {"repo": "citra", "fetch_submodules": True},
2831 "desmume": {"repo": "desmume"},
@@ -49,7 +52,9 @@ CORES = {
4952 "mame2010": {"repo": "mame2010-libretro"},
5053 "mame2015": {"repo": "mame2015-libretro"},
5154 "mame2016": {"repo": "mame2016-libretro"},
52− "mesen": {"repo": "mesen", "owner": "SourMesen"},
55+ "melonds": {"repo": "melonds"},
56+ "mesen": {"repo": "mesen"},
57+ "mesen-s": {"repo": "mesen-s"},
5358 "meteor": {"repo": "meteor-libretro"},
5459 "mgba": {"repo": "mgba"},
5560 "mupen64plus": {"repo": "mupen64plus-libretro-nx"},
@@ -75,11 +80,12 @@ CORES = {
7580 "snes9x2010": {"repo": "snes9x2010"},
7681 "stella": {"repo": "stella", "owner": "stella-emu"},
7782 "stella2014": {"repo": "stella2014-libretro"},
83+ "swanstation": {"repo": "swanstation"},
7884 "tgbdual": {"repo": "tgbdual-libretro"},
7985 "thepowdertoy": {"repo": "ThePowderToy"},
8086 "tic80": {"repo": "tic-80", "fetch_submodules": True},
81− "vba-next": {"repo": "vba-next"},
8287 "vba-m": {"repo": "vbam-libretro"},
88+ "vba-next": {"repo": "vba-next"},
8389 "vecx": {"repo": "libretro-vecx"},
8490 "virtualjaguar": {"repo": "virtualjaguar-libretro"},
8591 "yabause": {"repo": "yabause"},
@@ -112,21 +118,33 @@ def get_repo_hash(fetcher="fetchFromGitHub", **kwargs):
112118 raise ValueError(f"Unsupported fetcher: {fetcher}")
113119
114120
115−def get_repo_hashes():
116− repo_hashes = {}
121+def get_repo_hashes(cores_to_update=[]):
122+ with open(HASHES_PATH) as f:
123+ repo_hashes = json.loads(f.read())
117124
118125 for core, repo in CORES.items():
119− info(f"Getting repo hash for '{core}'...")
120− repo_hashes[core] = get_repo_hash(**repo)
126+ if core in cores_to_update:
127+ info(f"Getting repo hash for '{core}'...")
128+ repo_hashes[core] = get_repo_hash(**repo)
129+ else:
130+ info(f"Skipping '{core}'...")
121131
122132 return repo_hashes
123133
124134
125135def main():
126− repo_hashes = get_repo_hashes()
136+ # If you don't want to update all cores, pass the name of the cores you
137+ # want to update on the command line. E.g.:
138+ # $ ./update.py citra snes9x
139+ if len(sys.argv) > 1:
140+ cores_to_update = sys.argv[1:]
141+ else:
142+ cores_to_update = CORES.keys()
143+
144+ repo_hashes = get_repo_hashes(cores_to_update)
127145 info(f"Generating '{HASHES_PATH}'...")
128146 with open(HASHES_PATH, "w") as f:
129− f.write(json.dumps(repo_hashes, indent=4))
147+ f.write(json.dumps(dict(sorted(repo_hashes.items())), indent=4))
130148 f.write("\n")
131149 info("Finished!")
132150