;;; Copyright © 2015, 2018 David Thompson <dthompson2@worcester.edu>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 David Wilson <david@daviwil.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages xorg)
#:use-module (gnu packages web)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu))
(define-public desmume
(home-page "http://www.emulationstation.org")
(license license:expat))))
+;; Note: higan v107 has been released, but as explained by the dialog that
+;; appears after starting the new version, it's an experimental release. The
+;; author recommends v106 for general use.
+;;
+;; When updating to v107 (or probably beyond), sdl will have to be replaced
+;; with sdl2, and libxrandr will need to be added to inputs. The patch
+;; `higan-remove-march-native-flag.patch' will not be necessary, since the flag
+;; is now being added only for `platform=local', which is not the default.
(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"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/byuu/higan/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw"))
+ (base32 "1mxivf8124vz4hl0b0xa1yqv0z9m3i12v9psmbpqkprrbq0wbgn1"))
(patches (search-patches "higan-remove-march-native-flag.patch"))))
(build-system gnu-build-system)
(native-inputs
(delete 'configure)
(add-before 'build 'chdir-to-higan
(lambda _
- (chdir "higan")))
+ (chdir "higan")
+ #t))
(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")))))
+ (mkdir-p (string-append out "/share/applications"))
+ #t)))
(add-after 'install 'chdir-to-icarus
(lambda _
- (chdir "../icarus")))
+ (chdir "../icarus")
+ #t))
(add-after 'chdir-to-icarus 'build-icarus build-phase)
(add-after 'build-icarus 'install-icarus install-phase)
(add-after 'install-icarus 'wrap-higan-executable
(chmod higan #o555)
;; Second, make sure higan will find icarus in PATH.
(wrap-program higan
- `("PATH" ":" prefix (,bin))))))))
+ `("PATH" ":" prefix (,bin)))
+ #t)))))
#:make-flags
(list "compiler=g++"
(string-append "prefix=" (assoc-ref %outputs "out")))
(define-public mgba
(package
(name "mgba")
- (version "0.7.3")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mgba-emu/mgba.git")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1wrmwh50rv8bd328r8cisrihq6h90kx2bfb0vmjfbsd3l1jvgrgm"))
- (modules '((guix build utils)))
- (snippet
- ;; Make sure we don't use the bundled software.
- '(begin
- (for-each
- (lambda (subdir)
- (let ((lib-subdir (string-append "src/third-party/" subdir)))
- (delete-file-recursively lib-subdir)))
- '("libpng" "lzma" "sqlite3" "zlib"))
- #t))))
+ (version "0.8.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mgba-emu/mgba.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0m3rgcdv32ms98j7rrmk2hphvn462bwsd6xfz2ssy05398pj4ljh"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make sure we don't use the bundled software.
+ '(begin
+ (for-each
+ (lambda (subdir)
+ (let ((lib-subdir (string-append "src/third-party/" subdir)))
+ (delete-file-recursively lib-subdir)))
+ '("libpng" "lzma" "sqlite3" "zlib"))
+ #t))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no "test" target
;; BSD-3.
(license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
+(define-public sameboy
+ (package
+ (name "sameboy")
+ (version "0.12.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LIJI32/SameBoy.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0m5rv2x8qck1kr43xq186pp4kaiay7gd1x775n9qrljcd7z4x6fs"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("rgbds" ,rgbds)
+ ("gcc" ,gcc-9)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("sdl2" ,sdl2)))
+ (arguments
+ `(#:tests? #f ; There are no tests
+ #:make-flags `("CC=gcc" "CONF=release"
+ ,(string-append "DATA_DIR="
+ (assoc-ref %outputs "out")
+ "/share/sameboy/"))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (data (string-append out "/share/sameboy/")))
+ (with-directory-excursion "build/bin/SDL"
+ (install-file "sameboy" bin)
+ (delete-file "sameboy")
+ (copy-recursively "." data))))))))
+ (home-page "https://sameboy.github.io/")
+ (synopsis "Accurate Game Boy, Game Boy Color and Super Game Boy emulator")
+ (description "SameBoy is a user friendly Game Boy, Game Boy Color
+and Super Game Boy emulator. SameBoy is accurate and includes a wide
+range of debugging features. It has all the features one would expect
+from an emulator---from save states to scaling filters.")
+ (license license:expat)))
+
(define-public mupen64plus-core
(package
(name "mupen64plus-core")
(define-public retroarch
(package
(name "retroarch")
- (version "1.7.8.4")
+ (version "1.8.1")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1i3i23xwvmck8k2fpalr49np7xjzfg507243mybqrljawlnbxvph"))))
+ (base32 "0y7rcpz7psf8k3agsrq277jdm651vbnn9xpqvmj2in1a786idya7"))
+ (patches
+ (search-patches "retroarch-disable-online-updater.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Don't suggest using the Online Updater if available: it never
+ ;; is. This disables translation of this particular message.
+ (substitute* (find-files "menu/drivers" "\\.c$")
+ (("msg_hash_to_str\\(MSG_MISSING_ASSETS\\)")
+ "\"Warning: Missing assets, go get some\""))
+ #t))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests
(etc (string-append out "/etc"))
(vulkan (assoc-ref inputs "vulkan-loader"))
(wayland-protocols (assoc-ref inputs "wayland-protocols")))
- ;; Hard-code the path to libvulkan.so.
+ ;; Hard-code some store file names.
(substitute* "gfx/common/vulkan_common.c"
(("libvulkan.so") (string-append vulkan "/lib/libvulkan.so")))
(substitute* "gfx/common/wayland/generate_wayland_protos.sh"
(string-append wayland-protocols "/share/wayland-protocols")))
(substitute* "qb/qb.libs.sh"
(("/bin/true") (which "true")))
+
;; Use shared zlib.
(substitute* '("libretro-common/file/archive_file_zlib.c"
"libretro-common/streams/trans_stream_zlib.c")
(("<compat/zlib.h>") "<zlib.h>"))
+
;; The configure script does not yet accept the extra arguments
;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
(invoke
'("--enable-neon" "--enable-floathard")
'())
(string-append "--prefix=" out)
- (string-append "--global-config-dir=" etc))))))))
+ (string-append "--global-config-dir=" etc)
+ "--disable-builtinminiupnpc")))))))
(inputs
`(("alsa-lib" ,alsa-lib)
("ffmpeg" ,ffmpeg)
("libxrandr" ,libxrandr)
("libxv" ,libxv)
("mesa" ,mesa)
+ ("miniupnpc" ,miniupnpc)
("openal" ,openal)
("pulseaudio" ,pulseaudio)
("python" ,python)
(define-public scummvm
(package
(name "scummvm")
- (version "2.0.0")
+ (version "2.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.scummvm.org/frs/scummvm/" version
"/scummvm-" version ".tar.xz"))
(sha256
- (base32
- "0q6aiw97wsrf8cjw9vjilzhqqsr2rw2lll99s8i5i9svan6l314p"))))
+ (base32 "1a6waf1ybp91nwva8g650cljlfb1di4l0jv13vg6yfgkas9pclsp"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ;require "git"
+ `(#:tests? #f ;require "git"
#:configure-flags (list "--enable-release") ;for optimizations
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'fix-build
+ ;; XXX: The following works around a build failure introduced when
+ ;; Fluidsynth was updated to version 2.1. It has been applied
+ ;; upstream as 68758a879e0c8ecc0d40962516d4e808aa4e15e5 and can be
+ ;; removed once this commit makes it into a release.
+ (lambda _
+ (substitute* "audio/softsynth/fluidsynth.cpp"
+ (("#include <fluidsynth.h>") "")
+ (("#include \"common/scummsys.h\"") "#include \"config.h\"")
+ (("#include \"common/config-manager.h\"" line)
+ (string-append "#include <fluidsynth.h>\n"
+ "#include \"common/scummsys.h\"\n"
+ line)))
+ #t))
(replace 'configure
;; configure does not work followed by both "SHELL=..." and
;; "CONFIG_SHELL=..."; set environment variables instead
(setenv "CONFIG_SHELL" bash)
(apply invoke "./configure" flags)))))))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ `(("nasm" ,nasm)
+ ("pkg-config" ,pkg-config)))
(inputs
`(("alsa-lib" ,alsa-lib)
("faad2" ,faad2)
("fluidsynth" ,fluidsynth)
("freetype" ,freetype)
+ ("liba52" ,liba52)
("libflac" ,flac)
("libjpeg-turbo" ,libjpeg-turbo)
("libmad" ,libmad)
("libpng" ,libpng)
("libtheora" ,libtheora)
("libvorbis" ,libvorbis)
- ("nasm" ,nasm)
- ("sdl2" ,sdl2)
+ ("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
("zlib" ,zlib)))
(home-page "https://www.scummvm.org/")
(synopsis "Engine for several graphical adventure games")
(define-public mame
(package
(name "mame")
- (version "0.214")
+ (version "0.218")
(source
(origin
(method git-fetch)
(commit (apply string-append "mame" (string-split version #\.)))))
(file-name (git-file-name name version))
(sha256
- (base32
- "129yk3ybcviscy2xk1mkkzxm4h4nh5p6ndfgqbmcx547p1s6hbja"))
+ (base32 "1c43hqfabc7spkyk5ma4bjdb0yqm93sdg5g13ka8mvi462snrfd7"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries.
(arguments
`(#:make-flags
(cons*
+ ;; A 'strict-overflow' error pops up on i686 so disable '-Werror'.
+ "NOWERROR=1"
(string-append "QT_HOME=" (assoc-ref %build-inputs "qtbase"))
(string-append "SDL_INI_PATH="
(assoc-ref %outputs "out")
("flac" ,flac)
("fontconfig" ,fontconfig)
("glm" ,glm)
- ("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ ("libjpeg" ,libjpeg-turbo)
("libxi" ,libxi)
("libxinerama" ,libxinerama)
("lua" ,lua)
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'cd-subdir
- (lambda _ (chdir "pcsxr")))
+ (lambda _ (chdir "pcsxr") #t))
(add-before 'configure 'fix-cdio-lookup
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "cmake/FindCdio.cmake"
(("/usr/include/cdio")
- (string-append (assoc-ref inputs "libcdio") "/include/cdio"))))))))
+ (string-append (assoc-ref inputs "libcdio") "/include/cdio")))
+ #t))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/pcsxr")
+ ;; For GtkFileChooserDialog.
+ `("GSETTINGS_SCHEMA_DIR" =
+ (,(string-append (assoc-ref inputs "gtk+")
+ "/share/glib-2.0/schemas"))))
+ #t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)
"A PlayStation emulator based on PCSX-df Project with bugfixes and
improvements.")
(license license:gpl2+))))
+
+(define-public gens-gs
+ (package
+ (name "gens-gs")
+ (version "7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://retrocdn.net/images/6/6d/Gens-gs-r"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1ha5s6d3y7s9aq9f4zmn9p88109c3mrj36z2w68jhiw5xrxws833"))))
+ (build-system glib-or-gtk-build-system)
+ (arguments
+ `(#:system "i686-linux"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-CFLAGS
+ (lambda* _
+ ;; Remove GTK API deprecation flags that cause build errors.
+ (substitute* "configure"
+ (("GTK_CFLAGS=\"\\$GTK_CFLAGS .*\"") ""))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("nasm" ,nasm)))
+ (inputs
+ `(("sdl" ,sdl)
+ ("gtk" ,gtk+-2)))
+ (home-page "https://segaretro.org/Gens/GS")
+ (synopsis "Emulator for Sega Genesis/Mega Drive systems")
+ (description
+ "Gens/GS is an emulator for the Mega Drive (also known as Sega Genesis),
+derived from Gens. Project goals include clean source code, combined features
+from various forks of Gens, and improved platform portability.")
+ (supported-systems '("i686-linux" "x86_64-linux"))
+ (license license:gpl2+)))