diff options
Diffstat (limited to 'gnu/packages/emulators.scm')
-rw-r--r-- | gnu/packages/emulators.scm | 228 |
1 files changed, 166 insertions, 62 deletions
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index a39d0838de..9ad58c6147 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020 Christopher Howard <christopher@librehacker.com> ;;; Copyright © 2021 Felipe Balbi <balbi@kernel.org> ;;; Copyright © 2021, 2024 Felix Gruber <felgru@posteo.net> -;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2023 c4droid <c4droid@foxmail.com> ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> @@ -838,7 +838,7 @@ from an emulator---from save states to scaling filters.") (define-public mupen64plus-core (package (name "mupen64plus-core") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -847,10 +847,10 @@ from an emulator---from save states to scaling filters.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "116fndl6652zrp1r6ag4xv3dzp1x52mlvadj8xwflq07fd5rhri1")))) + (base32 "1iav8r3f0r44sq9pz4zjqrdzyspk412c117ywxz02qpjkhkf91a3")))) (build-system gnu-build-system) (native-inputs - (list pkg-config which)) + (list pkg-config nasm which)) (inputs (list freetype glu @@ -887,7 +887,7 @@ core library.") (define-public mupen64plus-audio-sdl (package (name "mupen64plus-audio-sdl") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -896,7 +896,7 @@ core library.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0z19amfg9vr2pqjjri1ipc7hs681fzjcnb0f9y7bjhp5n8d7p6bb")))) + (base32 "0j78xk78fj7lhi6jk6npr7wm9ix7qyr5cbaaqsmk6pqw6gfx81kz")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -921,7 +921,7 @@ core library.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") + (synopsis "Mupen64Plus SDL audio plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -931,7 +931,7 @@ SDL audio plugin.") (define-public mupen64plus-input-sdl (package (name "mupen64plus-input-sdl") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -940,7 +940,7 @@ SDL audio plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1dyazfbdjycdfslq8jixqiqhziw0rlkvach2r9dz91229jmkyc9c")))) + (base32 "1nnniyiy0wpg4m9918va31xxnz8r5qvj0z08vyq2is0b47ld3kq0")))) (build-system gnu-build-system) (native-inputs (list which)) @@ -975,7 +975,7 @@ SDL input plugin.") (define-public mupen64plus-rsp-hle (package (name "mupen64plus-rsp-hle") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -984,7 +984,7 @@ SDL input plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0pi31qzjjp7aypdvvnz6ms18g09c4gqzxi6328zj8sji94b75gf0")))) + (base32 "0sblabl3dp1jy9izbwyhx90690xdj96yfmwi47kpka8axzj93naq")))) (build-system gnu-build-system) (inputs (list mupen64plus-core)) @@ -1007,7 +1007,7 @@ SDL input plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") + (synopsis "Mupen64Plus RSP high-level emulation (HLE) plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1017,7 +1017,7 @@ high-level emulation (HLE) RSP processor plugin.") (define-public mupen64plus-rsp-z64 (package (name "mupen64plus-rsp-z64") - (version "2.0.0") + (version "2.5.9") (source (origin (method git-fetch) @@ -1026,7 +1026,7 @@ high-level emulation (HLE) RSP processor plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0nfyjns9k8xbg3aqs7593nfaxvlj72h3l8h467442xlk8ajfcylx")))) + (base32 "02w7c6b7fc6q5rrvawxv48xp64crfs5jbs06f2fqqj4smysyjfcc")))) (build-system gnu-build-system) (inputs (list mupen64plus-core)) @@ -1049,7 +1049,7 @@ high-level emulation (HLE) RSP processor plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") + (synopsis "Mupen64Plus RSP Z64 plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1059,7 +1059,7 @@ Z64 RSP processor plugin.") (define-public mupen64plus-video-arachnoid (package (name "mupen64plus-video-arachnoid") - (version "2.0.0") + (version "2.5.9") (source (origin (method git-fetch) @@ -1068,7 +1068,7 @@ Z64 RSP processor plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1v9fqwpb6pawr8z5cm2ki7bqkks4iyr5c4jy4v5khj6h8zcv55gc")))) + (base32 "1bkzbmg53qiwvza9h45d76rbyn0isbb31cfp5qqza0fzmgjxhv1d")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -1093,7 +1093,7 @@ Z64 RSP processor plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") + (synopsis "Mupen64Plus Arachnoid video plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1103,7 +1103,7 @@ Arachnoid video plugin.") (define-public mupen64plus-video-glide64 (package (name "mupen64plus-video-glide64") - (version "2.0.0") + (version "2.5.9") (source (origin (method git-fetch) @@ -1112,7 +1112,7 @@ Arachnoid video plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0qn5za7g7796kh2ag3xpmhbqg0yf71g9liz6ks0rha8pz73lgs01")))) + (base32 "0jscvr2imm9wj9jsgsp5815pv27f97w8g19ix0n39y9yy851qvrg")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -1124,17 +1124,9 @@ Arachnoid video plugin.") ;; The mupen64plus build system has no configure phase. (delete 'configure) ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir + (add-before 'build 'cd-to-project-dir (lambda _ - (chdir "projects/unix"))) - ;; XXX Should be unnecessary with the next release. - (add-before - 'build 'use-sdl2 - (lambda _ - (substitute* "Makefile" - (("SDL_CONFIG = (.*)sdl-config" all prefix) - (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) + (chdir "projects/unix")))) #:make-flags (let ((out (assoc-ref %outputs "out")) (m64p (assoc-ref %build-inputs "mupen64plus-core"))) @@ -1144,7 +1136,7 @@ Arachnoid video plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") + (synopsis "Mupen64Plus Glide64 video plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1154,7 +1146,7 @@ Glide64 video plugin.") (define-public mupen64plus-video-glide64mk2 (package (name "mupen64plus-video-glide64mk2") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -1163,7 +1155,7 @@ Glide64 video plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "08pm28a36dpr0cvr8pzw0n5ksdazp7jqvlmqfy2lwb4dm0cwhkqd")))) + (base32 "1hr0mv6y7v72101iff3zf6rd0wpqah936234m3hcb4cgna6zj9xy")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -1193,7 +1185,7 @@ Glide64 video plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") + (synopsis "Mupen64Plus Glide64MK2 video plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1203,7 +1195,7 @@ Glide64MK2 video plugin.") (define-public mupen64plus-video-rice (package (name "mupen64plus-video-rice") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -1212,7 +1204,7 @@ Glide64MK2 video plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0rpmbcq67gsj5h5jjis146378qc1mskskvx20y1ikx59yhbamh13")))) + (base32 "1vn24g7ahyv70jd06f5sq0j4bjs4axl2c0kfz4qdkpqsamsgxng8")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -1237,7 +1229,7 @@ Glide64MK2 video plugin.") ;; There are no tests. #:tests? #f)) (home-page "https://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") + (synopsis "Mupen64Plus Rice video plugin") (description "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator which is capable of accurately playing many games. This package contains the @@ -1247,7 +1239,7 @@ Rice Video plugin.") (define-public mupen64plus-video-z64 (package (name "mupen64plus-video-z64") - (version "2.0.0") + (version "2.5.9") (source (origin (method git-fetch) @@ -1256,8 +1248,7 @@ Rice Video plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "04qa2fdd6dakpk2v0d4l80xh9b4h8gm71g80c0wyyxdhmhwk1r9c")) - (patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch")))) + (base32 "1i8dxa0lhcsm5ss1bf74dqnzaa2bw5naj6f56ixw2qjvybrnsmk2")))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) @@ -1299,7 +1290,7 @@ Z64 video plugin.") (define-public mupen64plus-ui-console (package (name "mupen64plus-ui-console") - (version "2.5") + (version "2.5.9") (source (origin (method git-fetch) @@ -1308,7 +1299,7 @@ Z64 video plugin.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0vrf98qa6a0y3647kslsv644fag233dxh5dcr1yncjiiwickcr5a")) + (base32 "1dyrqdfs2jkalfd86bqidgd9y1hy03qgrgwk46d3xf3kyfmaa1cq")) (patches (search-patches "mupen64plus-ui-console-notice.patch")))) (build-system gnu-build-system) (native-inputs @@ -1328,29 +1319,27 @@ Z64 video plugin.") mupen64plus-audio-sdl mupen64plus-input-sdl mupen64plus-rsp-hle - mupen64plus-video-glide64 mupen64plus-video-glide64mk2 mupen64plus-video-rice)) (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus") - ;; Trailing slash matters here. - (string-append "COREDIR=" m64p "/lib/"))) - ;; There are no tests. - #:tests? #f)) + (list + #:phases + #~(modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + #~(let ((m64p #$(this-package-input "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" #$output) + (string-append "APIDIR=" m64p "/include/mupen64plus") + ;; Trailing slash matters here. + (string-append "COREDIR=" m64p "/lib/"))) + ;; There are no tests. + #:tests? #f)) (home-page "https://www.mupen64plus.org/") (synopsis "Mupen64Plus command line user interface") (description @@ -1360,6 +1349,75 @@ command line user interface. Installing this package is the easiest way towards a working Mupen64Plus for casual users.") (license license:gpl2+))) +(define-public mupen64plus-video-gliden64 + ;; The latest release is 5 years old, doesn't build with GCC 11. + (let ((commit "b021d8ee437266cfdd7251daf8c23203578b02b6") + (revision "0")) + (package + (name "mupen64plus-video-gliden64") + (version (git-version "4.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gonetz/GLideN64") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kcx5m8fjgrdi2dby8qbmkl78picip3jx7hg0ah1cazk192v2x98")) + (modules '((guix build utils))) + (snippet '(begin + ;; Delete 20 MiB of Windows-related files. + (delete-file-recursively "projects/msvc") + ;; Delete bundled library headers. + (delete-file-recursively "src/GLideNHQ/inc") ;zlib, libpng + (delete-file-recursively "src/inc/freetype") + ;; Unbundle xxhash. + (delete-file-recursively "src/xxHash") + (with-fluids ((%default-port-encoding "ISO-8859-1")) + (substitute* (find-files "." "\\.cpp$") + (("#include \"xxHash/xxhash.h\"") + "#include <xxhash.h>"))))))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:configure-flags + #~(list "-DMUPENPLUSAPI=ON" + "-DUSE_SYSTEM_LIBS=ON" + ;; Enable some optimizations. + "-DVEC4_OPT=ON" + #$(if (target-x86?) + ;; FIXME: Disabled for now as it causes a segmentation + ;; fault (see: + ;; https://github.com/gonetz/GLideN64/issues/2836). + "-DX86_OPT=OFF" ;extra X86 ASM optimizations + "-DX86_OPT=OFF") + #$(if (target-arm?) + "-DNEON_OPT=ON" + "-DNEON_OPT=OFF") + #$(if (target-aarch64?) + "-DCRC_ARMV8=ON" ;use ARMv8 hardware to compute CRCs + "-DCRC_OPT=ON")) ;use xxHash to compute CRCs) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + ;; The src/ subdirectory contains the root CMakeLists.txt file. + (lambda _ + (chdir "src"))) + (add-after 'chdir 'generate-Revision.h + (lambda _ + (invoke "sh" "getRevision.sh" "--nogit")))))) + (inputs (list freetype libpng mesa xxhash zlib)) + (home-page "https://github.com/gonetz/GLideN64") + (synopsis "Mupen64Plus GlideN64 video plugin") + (description "GLideN64 is a new generation graphics plugin for Nintendo +64 emulators, which offers better performance and compatibility compared to +the original Glide64 plugin. This version is built for use with the +Mupen64Plus emulator.") + (license license:gpl2+)))) + (define-public nestopia-ue (package (name "nestopia-ue") @@ -1463,6 +1521,10 @@ as RetroArch.") (("/usr/local/share/wayland-protocols") (string-append wayland-protocols "/share/wayland-protocols"))) + ;; Without HLSL, we can still enable GLSLANG and Vulkan support. + (substitute* "qb/config.libs.sh" + (("[$]HAVE_GLSLANG_HLSL") "notcare")) + ;; The configure script does not yet accept the extra arguments ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase. (invoke @@ -2193,6 +2255,48 @@ from various forks of Gens, and improved platform portability.") performance, features, and ease of use.") (license license:gpl3))) +(define-public zsnes + (package + (name "zsnes") + (version "2.0.12") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xyproto/zsnes") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0g9l1ij3p1adkp97wkp0dz44i2xpmsvfpkxvlfkpr7190dibsgsz")))) + (build-system gnu-build-system) + (arguments + (list #:system "i686-linux" ;requires 32 bit libraries to build + #:tests? #f ;no test suite + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "CXX=" #$(cxx-for-target)) + (string-append "PREFIX=" #$output)) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) ;no configure script + (native-inputs (list nasm pkg-config)) + (inputs (list glib libpng mesa ncurses sdl zlib)) + (home-page "https://www.zsnes.com") + (synopsis "Super Nintendo Entertainment System emulator") + (description "ZSNES is a @acronym{Super Nintendo Entertainment System, +SNES} emulator that can play most games at full speed with sound and special +graphic filters. Some of its features include: +@itemize +@item Support for smooth and dynamic image scaling +@item Support for rewinding and fast-forwarding in-game +@item JMA compression format +@item Change the appearance of the GUI +@item Take screenshots of currently running games +@item Saving the game at any point by recording the console’s state +@item Record movies of gameplay which can be played back. +@end itemize") + (license license:gpl2+) + (supported-systems (list "x86_64-linux")))) + ;; python-pwntools requires a -rc release of unicorn (define-public unicorn (let ((unless-x86 |