diff options
author | Rutger Helling <rhelling@mykolab.com> | 2018-02-22 12:04:14 +0100 |
---|---|---|
committer | Rutger Helling <rhelling@mykolab.com> | 2018-02-22 12:15:23 +0100 |
commit | 9af704c59cfbffd021f0e7420a57f7f2ed6c8c07 (patch) | |
tree | 7b665d73e813d2cbb0efe98609655f106628ef0b | |
parent | 65c9d25739ae5ebad955c517aacc67cf3ad11f9a (diff) |
gnu: Move emulation packages from games to emulators.
* gnu/packages/games.scm (desmume) (dosbox) (emulation-station) (higan) (mgba)
(mupen64plus-audio-sdl) (mupen64plus-core) (mupen64plus-input-sdl)
(mupen64plus-rsp-hle) (mupen64plus-rsp-z64) (mupen64plus-ui-console)
(mupen64plus-video-arachnoid) (mupen64plus-video-glide64)
(mupen64plus-video-glide64mk2) (mupen64plus-video-rice)
(mupen64plus-video-z64) (nestopia-ue) (retroarch): Move to... *
gnu/packages/emulators.scm: ... here.
-rw-r--r-- | gnu/packages/emulators.scm | 951 | ||||
-rw-r--r-- | gnu/packages/games.scm | 919 |
2 files changed, 948 insertions, 922 deletions
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index d0d0108115..79c570faf8 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -1,6 +1,14 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 David Thompson <dthompson2@worcester.edu> -;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com> +;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> +;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com> +;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> +;;; Copyright © 2015, 2018 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,31 +28,82 @@ (define-module (gnu packages emulators) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix svn-download) + #:use-module (gnu packages) + #:use-module (gnu packages algebra) #:use-module (gnu packages audio) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages databases) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages game-development) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libedit) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) + #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages sdl) #:use-module (gnu packages tls) #:use-module (gnu packages upnp) #:use-module (gnu packages video) + #:use-module (gnu packages vulkan) #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) #:use-module (gnu packages xorg) - #:use-module (guix build-system cmake)) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu)) + +(define-public desmume + (package + (name "desmume") + (version "0.9.11") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/desmume/desmume/" + version "/desmume-" version ".tar.gz")) + (sha256 + (base32 + "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs")))) + (build-system gnu-build-system) + (arguments + ;; Enable support for WiFi and microphone. + `(#:configure-flags '("--enable-wifi" + "--enable-openal"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("zlib" ,zlib) + ("sdl" ,sdl) + ("glib" ,glib) + ("gtk+" ,gtk+-2) + ("glu" ,glu))) + (home-page "http://desmume.org/") + (synopsis "Nintendo DS emulator") + (description + "DeSmuME is an emulator for the Nintendo DS handheld gaming console.") + (license license:gpl2))) ;; Building from recent Git because the official 5.0 release no longer builds. (define-public dolphin-emu @@ -173,3 +232,889 @@ turbo speed, networked multiplayer, and graphical enhancements.") (supported-systems '("x86_64-linux")) ; TODO: should also work on ARM64. ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0. (license (list license:gpl2+ license:asl2.0 license:fdl1.2+))))) + +(define-public dosbox + (package + (name "dosbox") + (version "0.74.svn3947") + (source (origin + (method svn-fetch) + (uri (svn-reference + (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/") + (revision 3947))) + (file-name (string-append name "-" version "-checkout")) + ;; Use SVN head, since the last release (2010) is incompatible + ;; with GCC 4.8+ (see + ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>). + (sha256 + (base32 + "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after + 'unpack 'autogen.sh + (lambda _ + (zero? (system* "sh" "autogen.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("sdl" ,sdl) + ("libpng" ,libpng) + ("zlib" ,zlib) + ("alsa-lib" ,alsa-lib) + ("glu" ,glu) + ("mesa" ,mesa))) + (home-page "http://www.dosbox.com") + (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound") + (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox +also emulates CPU:286/386 realmode/protected mode, Directory +FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a +SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with +older games.") + (license license:gpl2+))) + +(define-public emulation-station + (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5")) + (package + (name "emulation-station") + (version "2.0.1") + (source (origin + (method git-fetch) ; no tarball available + (uri (git-reference + (url "https://github.com/Aloshi/EmulationStation.git") + (commit commit))) ; no version tag + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no tests + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("curl" ,curl) + ("eigin" ,eigen) + ("freeimage" ,freeimage) + ("freetype" ,freetype) + ("mesa" ,mesa) + ("sdl2" ,sdl2))) + (synopsis "Video game console emulator front-end") + (description "EmulationStation provides a graphical front-end to a large +number of video game console emulators. It features an interface that is +usable with any game controller that has at least 4 buttons, theming support, +and a game metadata scraper.") + (home-page "http://www.emulationstation.org") + (license license:expat)))) + +(define-public higan + (package + (name "higan") + (version "106") + (source + (origin + (method url-fetch) + (uri (string-append + "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v" + version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw")) + (patches (search-patches "higan-remove-march-native-flag.patch")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ao" ,ao) + ("eudev" ,eudev) + ("gtk+" ,gtk+-2) + ("gtksourceview-2" ,gtksourceview-2) + ("libxv" ,libxv) + ("mesa" ,mesa) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("sdl" ,sdl))) + (arguments + '(#:phases + (let ((build-phase (assoc-ref %standard-phases 'build)) + (install-phase (assoc-ref %standard-phases 'install))) + (modify-phases %standard-phases + ;; The higan build system has no configure phase. + (delete 'configure) + (add-before 'build 'chdir-to-higan + (lambda _ + (chdir "higan"))) + (add-before 'install 'create-/share/applications + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; It seems the author forgot to do this in the Makefile. + (mkdir-p (string-append out "/share/applications"))))) + (add-after 'install 'chdir-to-icarus + (lambda _ + (chdir "../icarus"))) + (add-after 'chdir-to-icarus 'build-icarus build-phase) + (add-after 'build-icarus 'install-icarus install-phase) + (add-after 'install-icarus 'wrap-higan-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (higan (string-append bin "/higan")) + (higan-original (string-append higan "-original")) + (bash (string-append (assoc-ref inputs "bash") + "/bin/bash")) + (coreutils (assoc-ref inputs "coreutils")) + (mkdir (string-append coreutils "/bin/mkdir")) + (cp (string-append coreutils "/bin/cp")) + (cp-r (string-append cp " -r --no-preserve=mode"))) + ;; First, have the executable make sure ~/.local/share/higan + ;; contains up to date files. Higan insists on looking there + ;; for these data files. + (rename-file higan higan-original) + (with-output-to-file higan + (lambda () + (display + (string-append + "#!" bash "\n" + ;; higan doesn't respect $XDG_DATA_HOME + mkdir " -p ~/.local/share\n" + cp-r " " out "/share/higan ~/.local/share\n" + "exec " higan-original)))) + (chmod higan #o555) + ;; Second, make sure higan will find icarus in PATH. + (wrap-program higan + `("PATH" ":" prefix (,bin)))))))) + #:make-flags + (list "compiler=g++" + (string-append "prefix=" (assoc-ref %outputs "out"))) + ;; There is no test suite. + #:tests? #f)) + (home-page "http://byuu.org/emulation/higan/") + (synopsis "Nintendo multi-system emulator") + (description + "higan (formerly bsnes) is an emulator for multiple Nintendo video game +consoles, including the Nintendo Entertainment System (NES/Famicom), Super +Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy +Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems +Super Game Boy, BS-X Satellaview, and Sufami Turbo.") + ;; As noted in these files among more: + ;; - icarus/icarus.cpp + ;; - higan/emulator/emulator.hpp + (license license:gpl3))) + +(define-public mgba + (package + (name "mgba") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mgba-emu/mgba/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w")) + (modules '((guix build utils))) + (snippet + ;; Make sure we don't use the bundled software. + '(for-each + (lambda (subdir) + (let ((lib-subdir (string-append "src/third-party/" subdir))) + (delete-file-recursively lib-subdir))) + '("libpng" "lzma" "sqlite3" "zlib"))))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no "test" target + #:configure-flags + (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA + "-DUSE_LIBZIP=OFF" ;use "zlib" instead + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") "/lib")))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("ffmpeg" ,ffmpeg) + ("imagemagick" ,imagemagick) + ("libedit" ,libedit) + ("libepoxy" ,libepoxy) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("minizip" ,minizip) + ("ncurses" ,ncurses) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qttools" ,qttools) + ("sdl2" ,sdl2) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (home-page "https://mgba.io") + (synopsis "Game Boy Advance emulator") + (description + "mGBA is an emulator for running Game Boy Advance games. It aims to be +faster and more accurate than many existing Game Boy Advance emulators, as +well as adding features that other emulators lack. It also supports Game Boy +and Game Boy Color games.") + ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is + ;; BSD-3. + (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3)))) + +(define-public mupen64plus-core + (package + (name "mupen64plus-core") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-core/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("freetype" ,freetype) + ("glu" ,glu) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (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"))) + (list "all" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + ;; As per the Makefile (in projects/unix/Makefile): + (supported-systems '("i686-linux" "x86_64-linux")) + (home-page "http://www.mupen64plus.org/") + (synopsis "Nintendo 64 emulator core library") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +core library.") + (license license:gpl2+))) + +(define-public mupen64plus-audio-sdl + (package + (name "mupen64plus-audio-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input 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 +SDL audio plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-input-sdl + (package + (name "mupen64plus-input-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri")))) + (build-system gnu-build-system) + (native-inputs + `(("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input 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 +SDL input plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-hle + (package + (name "mupen64plus-rsp-hle") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input 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 +high-level emulation (HLE) RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-z64 + (package + (name "mupen64plus-rsp-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input 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 +Z64 RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-arachnoid + (package + (name "mupen64plus-video-arachnoid") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (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 +Arachnoid video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64 + (package + (name "mupen64plus-video-glide64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (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"))) + ;; 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")))))) + #: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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (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 +Glide64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64mk2 + (package + (name "mupen64plus-video-glide64mk2") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("boost" ,boost) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (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 +Glide64MK2 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-rice + (package + (name "mupen64plus-video-rice") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-rice/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (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 +Rice Video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-z64 + (package + (name "mupen64plus-video-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("glew" ,glew) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (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"))) + ;; 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")))))) + #: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"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Z64 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 +Z64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-ui-console + (package + (name "mupen64plus-ui-console") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-ui-console/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2")) + (patches (search-patches "mupen64plus-ui-console-notice.patch")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("sdl2" ,sdl2))) + ;; Mupen64Plus supports a single data directory and a single plugin + ;; directory in its configuration, yet we need data and plugin files from + ;; a variety of packages. The best way to deal with this is to install + ;; all packages from which data and plugin files are needed into one's + ;; profile, and point the configuration there. Hence, propagate the most + ;; important packages here to save the user from the bother. The patch + ;; mupen64plus-ui-console-notice also gives users instructions on what + ;; they need to do in order to point the configuration to their profile. + (propagated-inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl) + ("mupen64plus-input-sdl" ,mupen64plus-input-sdl) + ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle) + ("mupen64plus-video-glide64" ,mupen64plus-video-glide64) + ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2) + ("mupen64plus-video-rice" ,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)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input 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 +command line user interface. Installing this package is the easiest way +towards a working Mupen64Plus for casual users.") + (license license:gpl2+))) + +(define-public nestopia-ue + (package + (name "nestopia-ue") + (version "1.47") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/rdanbrook/nestopia/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci")) + (modules '((guix build utils))) + (snippet + '(begin + ;; We don't need libretro for the GNU/Linux build. + (delete-file-recursively "libretro") + ;; Use system zlib. + (delete-file-recursively "source/zlib") + (substitute* "source/core/NstZlib.cpp" + (("#include \"../zlib/zlib.h\"") "#include <zlib.h>")))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ao" ,ao) + ("glu" ,glu) + ("gtk+" ,gtk+) + ("libarchive" ,libarchive) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The Nestopia build system consists solely of a Makefile. + (delete 'configure) + (add-before 'build 'remove-xdg-desktop-menu-call + (lambda _ + (substitute* "Makefile" + (("xdg-desktop-menu install .*") "")))) + (add-before 'build 'remove-gdkwayland-include + (lambda _ + (substitute* "source/unix/gtkui/gtkui.h" + (("#include <gdk/gdkwayland\\.h>") ""))))) + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://0ldsk00l.ca/nestopia/") + (synopsis "Nintendo Entertainment System (NES/Famicom) emulator") + (description + "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment +System (NES/Famicom) emulator Nestopia, with enhancements from members of the +emulation community. It provides highly accurate emulation.") + (license license:gpl2+))) + +(define-public retroarch + (package + (name "retroarch") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/libretro/RetroArch/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (etc (string-append out "/etc")) + (vulkan (assoc-ref inputs "vulkan-icd-loader"))) + ;; Hard-code the path to libvulkan.so. + (substitute* "gfx/common/vulkan_common.c" + (("libvulkan.so") (string-append vulkan "/lib/libvulkan.so"))) + (substitute* "qb/qb.libs.sh" + (("/bin/true") (which "true"))) + ;; The configure script does not yet accept the extra arguments + ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase. + (zero? (system* + "./configure" + (string-append "--prefix=" out) + (string-append "--global-config-dir=" etc))))))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("libxinerama" ,libxinerama) + ("libxkbcommon" ,libxkbcommon) + ("libxml2" ,libxml2) + ("libxv" ,libxv) + ("mesa" ,mesa) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("python" ,python) + ("sdl" ,sdl2) + ("udev" ,eudev) + ("vulkan-icd-loader" ,vulkan-icd-loader) + ("wayland", wayland) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (home-page "https://www.libretro.com/") + (synopsis "Reference frontend for the libretro API") + (description + "Libretro is a simple but powerful development interface that allows for +the easy creation of emulators, games and multimedia applications that can plug +straight into any libretro-compatible frontend. RetroArch is the official +reference frontend for the libretro API, currently used by most as a modular +multi-system game/emulator system.") + (license license:gpl3+))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 0ac7d992c9..a7c77a44a6 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1619,69 +1619,6 @@ interactive fiction, also known as text adventures, which were implemented either by Infocom or created using the Inform compiler.") (license license:bsd-3))) -(define-public retroarch - (package - (name "retroarch") - (version "1.7.1") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/libretro/RetroArch/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (etc (string-append out "/etc")) - (vulkan (assoc-ref inputs "vulkan-icd-loader"))) - ;; Hard-code the path to libvulkan.so. - (substitute* "gfx/common/vulkan_common.c" - (("libvulkan.so") (string-append vulkan "/lib/libvulkan.so"))) - (substitute* "qb/qb.libs.sh" - (("/bin/true") (which "true"))) - ;; The configure script does not yet accept the extra arguments - ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase. - (zero? (system* - "./configure" - (string-append "--prefix=" out) - (string-append "--global-config-dir=" etc))))))))) - (inputs - `(("alsa-lib" ,alsa-lib) - ("ffmpeg" ,ffmpeg) - ("freetype" ,freetype) - ("libxinerama" ,libxinerama) - ("libxkbcommon" ,libxkbcommon) - ("libxml2" ,libxml2) - ("libxv" ,libxv) - ("mesa" ,mesa) - ("openal" ,openal) - ("pulseaudio" ,pulseaudio) - ("python" ,python) - ("sdl" ,sdl2) - ("udev" ,eudev) - ("vulkan-icd-loader" ,vulkan-icd-loader) - ("wayland", wayland) - ("zlib" ,zlib))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (home-page "https://www.libretro.com/") - (synopsis "Reference frontend for the libretro API") - (description - "Libretro is a simple but powerful development interface that allows for -the easy creation of emulators, games and multimedia applications that can plug -straight into any libretro-compatible frontend. RetroArch is the official -reference frontend for the libretro API, currently used by most as a modular -multi-system game/emulator system.") - (license license:gpl3+))) - (define-public gnugo (package (name "gnugo") @@ -1922,48 +1859,6 @@ next campaign.") (description "This package contains a dedicated server for @emph{The Battle for Wesnoth}."))) -(define-public dosbox - (package - (name "dosbox") - (version "0.74.svn3947") - (source (origin - (method svn-fetch) - (uri (svn-reference - (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/") - (revision 3947))) - (file-name (string-append name "-" version "-checkout")) - ;; Use SVN head, since the last release (2010) is incompatible - ;; with GCC 4.8+ (see - ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>). - (sha256 - (base32 - "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj")))) - (build-system gnu-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after - 'unpack 'autogen.sh - (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake))) - (inputs - `(("sdl" ,sdl) - ("libpng" ,libpng) - ("zlib" ,zlib) - ("alsa-lib" ,alsa-lib) - ("glu" ,glu) - ("mesa" ,mesa))) - (home-page "http://www.dosbox.com") - (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound") - (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox -also emulates CPU:286/386 realmode/protected mode, Directory -FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a -SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with -older games.") - (license license:gpl2+))) - (define-public gamine (package (name "gamine") @@ -2082,638 +1977,6 @@ world}, @uref{http://evolonline.org, Evol Online} and ;; The rest is under GPL2+. (license (list license:gpl2+ license:zlib license:cc-by-sa4.0)))) -(define-public mupen64plus-core - (package - (name "mupen64plus-core") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-core/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("freetype" ,freetype) - ("glu" ,glu) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (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"))) - (list "all" (string-append "PREFIX=" out))) - ;; There are no tests. - #:tests? #f)) - ;; As per the Makefile (in projects/unix/Makefile): - (supported-systems '("i686-linux" "x86_64-linux")) - (home-page "http://www.mupen64plus.org/") - (synopsis "Nintendo 64 emulator core library") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -core library.") - (license license:gpl2+))) - -(define-public mupen64plus-audio-sdl - (package - (name "mupen64plus-audio-sdl") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input 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 -SDL audio plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-input-sdl - (package - (name "mupen64plus-input-sdl") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri")))) - (build-system gnu-build-system) - (native-inputs - `(("which" ,which))) - (inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input 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 -SDL input plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-rsp-hle - (package - (name "mupen64plus-rsp-hle") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv")))) - (build-system gnu-build-system) - (inputs - `(("mupen64plus-core" ,mupen64plus-core))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input 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 -high-level emulation (HLE) RSP processor plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-rsp-z64 - (package - (name "mupen64plus-rsp-z64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi")))) - (build-system gnu-build-system) - (inputs - `(("mupen64plus-core" ,mupen64plus-core))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input 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 -Z64 RSP processor plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-arachnoid - (package - (name "mupen64plus-video-arachnoid") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (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 -Arachnoid video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-glide64 - (package - (name "mupen64plus-video-glide64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (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"))) - ;; 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")))))) - #: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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (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 -Glide64 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-glide64mk2 - (package - (name "mupen64plus-video-glide64mk2") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("boost" ,boost) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (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 -Glide64MK2 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-rice - (package - (name "mupen64plus-video-rice") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-rice/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("libpng" ,libpng) - ("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (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 -Rice Video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-z64 - (package - (name "mupen64plus-video-z64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-z64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("glew" ,glew) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (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"))) - ;; 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")))))) - #: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"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Z64 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 -Z64 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-ui-console - (package - (name "mupen64plus-ui-console") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-ui-console/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2")) - (patches (search-patches "mupen64plus-ui-console-notice.patch")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("sdl2" ,sdl2))) - ;; Mupen64Plus supports a single data directory and a single plugin - ;; directory in its configuration, yet we need data and plugin files from - ;; a variety of packages. The best way to deal with this is to install - ;; all packages from which data and plugin files are needed into one's - ;; profile, and point the configuration there. Hence, propagate the most - ;; important packages here to save the user from the bother. The patch - ;; mupen64plus-ui-console-notice also gives users instructions on what - ;; they need to do in order to point the configuration to their profile. - (propagated-inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl) - ("mupen64plus-input-sdl" ,mupen64plus-input-sdl) - ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle) - ("mupen64plus-video-glide64" ,mupen64plus-video-glide64) - ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2) - ("mupen64plus-video-rice" ,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)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input 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 -command line user interface. Installing this package is the easiest way -towards a working Mupen64Plus for casual users.") - (license license:gpl2+))) - -(define-public nestopia-ue - (package - (name "nestopia-ue") - (version "1.47") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/rdanbrook/nestopia/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci")) - (modules '((guix build utils))) - (snippet - '(begin - ;; We don't need libretro for the GNU/Linux build. - (delete-file-recursively "libretro") - ;; Use system zlib. - (delete-file-recursively "source/zlib") - (substitute* "source/core/NstZlib.cpp" - (("#include \"../zlib/zlib.h\"") "#include <zlib.h>")))))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("ao" ,ao) - ("glu" ,glu) - ("gtk+" ,gtk+) - ("libarchive" ,libarchive) - ("mesa" ,mesa) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The Nestopia build system consists solely of a Makefile. - (delete 'configure) - (add-before 'build 'remove-xdg-desktop-menu-call - (lambda _ - (substitute* "Makefile" - (("xdg-desktop-menu install .*") "")))) - (add-before 'build 'remove-gdkwayland-include - (lambda _ - (substitute* "source/unix/gtkui/gtkui.h" - (("#include <gdk/gdkwayland\\.h>") ""))))) - #:make-flags (let ((out (assoc-ref %outputs "out"))) - (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://0ldsk00l.ca/nestopia/") - (synopsis "Nintendo Entertainment System (NES/Famicom) emulator") - (description - "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment -System (NES/Famicom) emulator Nestopia, with enhancements from members of the -emulation community. It provides highly accurate emulation.") - (license license:gpl2+))) - -(define-public emulation-station - (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5")) - (package - (name "emulation-station") - (version "2.0.1") - (source (origin - (method git-fetch) ; no tarball available - (uri (git-reference - (url "https://github.com/Aloshi/EmulationStation.git") - (commit commit))) ; no version tag - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f)) ; no tests - (inputs - `(("alsa-lib" ,alsa-lib) - ("boost" ,boost) - ("curl" ,curl) - ("eigin" ,eigen) - ("freeimage" ,freeimage) - ("freetype" ,freetype) - ("mesa" ,mesa) - ("sdl2" ,sdl2))) - (synopsis "Video game console emulator front-end") - (description "EmulationStation provides a graphical front-end to a large -number of video game console emulators. It features an interface that is -usable with any game controller that has at least 4 buttons, theming support, -and a game metadata scraper.") - (home-page "http://www.emulationstation.org") - (license license:expat)))) - (define openttd-engine (package (name "openttd-engine") @@ -3055,39 +2318,6 @@ players.") (home-page "http://pio.sourceforge.net/") (license license:gpl2+))) -(define-public desmume - (package - (name "desmume") - (version "0.9.11") - (source - (origin - (method url-fetch) - (uri (string-append - "mirror://sourceforge/desmume/desmume/" - version "/desmume-" version ".tar.gz")) - (sha256 - (base32 - "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs")))) - (build-system gnu-build-system) - (arguments - ;; Enable support for WiFi and microphone. - `(#:configure-flags '("--enable-wifi" - "--enable-openal"))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("intltool" ,intltool))) - (inputs - `(("zlib" ,zlib) - ("sdl" ,sdl) - ("glib" ,glib) - ("gtk+" ,gtk+-2) - ("glu" ,glu))) - (home-page "http://desmume.org/") - (synopsis "Nintendo DS emulator") - (description - "DeSmuME is an emulator for the Nintendo DS handheld gaming console.") - (license license:gpl2))) - (define-public einstein (package (name "einstein") @@ -3343,155 +2573,6 @@ Red Eclipse provides fast paced and accessible gameplay.") license:cc-by3.0 license:cc0))))) -(define-public higan - (package - (name "higan") - (version "106") - (source - (origin - (method url-fetch) - (uri (string-append - "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v" - version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw")) - (patches (search-patches "higan-remove-march-native-flag.patch")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("alsa-lib" ,alsa-lib) - ("ao" ,ao) - ("eudev" ,eudev) - ("gtk+" ,gtk+-2) - ("gtksourceview-2" ,gtksourceview-2) - ("libxv" ,libxv) - ("mesa" ,mesa) - ("openal" ,openal) - ("pulseaudio" ,pulseaudio) - ("sdl" ,sdl))) - (arguments - '(#:phases - (let ((build-phase (assoc-ref %standard-phases 'build)) - (install-phase (assoc-ref %standard-phases 'install))) - (modify-phases %standard-phases - ;; The higan build system has no configure phase. - (delete 'configure) - (add-before 'build 'chdir-to-higan - (lambda _ - (chdir "higan"))) - (add-before 'install 'create-/share/applications - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; It seems the author forgot to do this in the Makefile. - (mkdir-p (string-append out "/share/applications"))))) - (add-after 'install 'chdir-to-icarus - (lambda _ - (chdir "../icarus"))) - (add-after 'chdir-to-icarus 'build-icarus build-phase) - (add-after 'build-icarus 'install-icarus install-phase) - (add-after 'install-icarus 'wrap-higan-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (higan (string-append bin "/higan")) - (higan-original (string-append higan "-original")) - (bash (string-append (assoc-ref inputs "bash") - "/bin/bash")) - (coreutils (assoc-ref inputs "coreutils")) - (mkdir (string-append coreutils "/bin/mkdir")) - (cp (string-append coreutils "/bin/cp")) - (cp-r (string-append cp " -r --no-preserve=mode"))) - ;; First, have the executable make sure ~/.local/share/higan - ;; contains up to date files. Higan insists on looking there - ;; for these data files. - (rename-file higan higan-original) - (with-output-to-file higan - (lambda () - (display - (string-append - "#!" bash "\n" - ;; higan doesn't respect $XDG_DATA_HOME - mkdir " -p ~/.local/share\n" - cp-r " " out "/share/higan ~/.local/share\n" - "exec " higan-original)))) - (chmod higan #o555) - ;; Second, make sure higan will find icarus in PATH. - (wrap-program higan - `("PATH" ":" prefix (,bin)))))))) - #:make-flags - (list "compiler=g++" - (string-append "prefix=" (assoc-ref %outputs "out"))) - ;; There is no test suite. - #:tests? #f)) - (home-page "http://byuu.org/emulation/higan/") - (synopsis "Nintendo multi-system emulator") - (description - "higan (formerly bsnes) is an emulator for multiple Nintendo video game -consoles, including the Nintendo Entertainment System (NES/Famicom), Super -Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy -Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems -Super Game Boy, BS-X Satellaview, and Sufami Turbo.") - ;; As noted in these files among more: - ;; - icarus/icarus.cpp - ;; - higan/emulator/emulator.hpp - (license license:gpl3))) - -(define-public mgba - (package - (name "mgba") - (version "0.6.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mgba-emu/mgba/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w")) - (modules '((guix build utils))) - (snippet - ;; Make sure we don't use the bundled software. - '(for-each - (lambda (subdir) - (let ((lib-subdir (string-append "src/third-party/" subdir))) - (delete-file-recursively lib-subdir))) - '("libpng" "lzma" "sqlite3" "zlib"))))) - (build-system cmake-build-system) - (arguments - `(#:tests? #f ;no "test" target - #:configure-flags - (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA - "-DUSE_LIBZIP=OFF" ;use "zlib" instead - (string-append "-DCMAKE_INSTALL_LIBDIR=" - (assoc-ref %outputs "out") "/lib")))) - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("ffmpeg" ,ffmpeg) - ("imagemagick" ,imagemagick) - ("libedit" ,libedit) - ("libepoxy" ,libepoxy) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("minizip" ,minizip) - ("ncurses" ,ncurses) - ("qtbase" ,qtbase) - ("qtmultimedia" ,qtmultimedia) - ("qttools" ,qttools) - ("sdl2" ,sdl2) - ("sqlite" ,sqlite) - ("zlib" ,zlib))) - (home-page "https://mgba.io") - (synopsis "Game Boy Advance emulator") - (description - "mGBA is an emulator for running Game Boy Advance games. It aims to be -faster and more accurate than many existing Game Boy Advance emulators, as -well as adding features that other emulators lack. It also supports Game Boy -and Game Boy Color games.") - ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is - ;; BSD-3. - (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3)))) - (define-public grue-hunter (package (name "grue-hunter") |