;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2017 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>
;;;
;;; This file is part of GNU Guix.
;;;
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages emulators)
+ #:use-module (ice-9 match)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages backup)
+ #:use-module (gnu packages cdrom)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages elf)
#: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
;; Building from recent Git because the official 5.0 release no longer builds.
(define-public dolphin-emu
- (let ((commit "24718c1a389e4f51db974575cd15c372485b92e2")
- (revision "6"))
+ (let ((commit "a9745400ec5cea7e55d94955afbdc44d1a4982d1")
+ (revision "7"))
(package
(name "dolphin-emu")
(version (git-version "5.0" revision commit))
(string-append "Externals/" dir)))
'("LZO" "OpenAL" "Qt" "SFML" "curl" "ffmpeg"
"gettext" "hidapi" "libpng" "libusb" "mbedtls"
- "miniupnpc" "zlib"))
+ "miniupnpc" "MoltenVK" "zlib"))
;; Clean up source.
(for-each delete-file (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
#t))
(sha256
(base32
- "1d92rhnw307j3m6swk6bycb8fyc7vw2hfgakd5hpsc4qw65vxfq8"))))
+ "0ic08ii4vlqlmk2wkfc99jiy6nji2wfq56r7slj23wgvhznnaabk"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'fixgcc7
- (lambda _
- (unsetenv "C_INCLUDE_PATH")
- (unsetenv "CPLUS_INCLUDE_PATH")
- #t))
(add-before 'configure 'generate-fonts&hardcore-libvulkan-path
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((fontfile
(string-append (assoc-ref inputs "vulkan-loader")
"/lib/libvulkan.so")))
(chdir "docs")
- (invoke "bash" "-c" "g++ -O2 -std=c++11 $(freetype-config \
+ (invoke "bash" "-c" "g++ -O2 $(freetype-config \
--cflags --libs) gc-font-tool.cpp -o gc-font-tool")
(invoke "./gc-font-tool" "a" fontfile "font_western.bin")
(invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
(copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
(chdir "..")
(substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
- (("libvulkan.so") libvulkan))
+ (("\"vulkan\", 1") (string-append "\"vulkan\"")))
+ (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
+ (("\"vulkan\"") (string-append "\"" libvulkan "\"")))
+ (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
+ (("Common::DynamicLibrary::GetVersionedFilename") ""))
#t))))
;; The FindGTK2 cmake script only checks hardcoded directories for
"-DX11_FOUND=1")))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore.
("gettext" ,gnu-gettext)))
(inputs
`(("alsa-lib" ,alsa-lib)
(define-public mgba
(package
(name "mgba")
- (version "0.7.2")
+ (version "0.7.3")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "0g0xa1mzvan0sl1p5c784j2g5mcw9kd2b7wiahy06gy0c1nmbcnp"))
+ "1wrmwh50rv8bd328r8cisrihq6h90kx2bfb0vmjfbsd3l1jvgrgm"))
(modules '((guix build utils)))
(snippet
;; Make sure we don't use the bundled software.
(delete 'configure)
;; Makefile is in a subdirectory.
(add-before
- 'build 'cd-to-project-dir
+ 'build 'chdir-to-project-directory
(lambda _
- (chdir "projects/unix"))))
+ (chdir "projects/unix")
+ #t)))
#: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/")
+ (home-page "https://www.mupen64plus.org/")
(synopsis "Nintendo 64 emulator core library")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
(string-append "APIDIR=" m64p "/include/mupen64plus")))
;; There are no tests.
#:tests? #f))
- (home-page "http://www.mupen64plus.org/")
+ (home-page "https://www.mupen64plus.org/")
(synopsis "Mupen64Plus SDL input plugin")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
(string-append "APIDIR=" m64p "/include/mupen64plus")))
;; There are no tests.
#:tests? #f))
- (home-page "http://www.mupen64plus.org/")
+ (home-page "https://www.mupen64plus.org/")
(synopsis "Mupen64Plus SDL input plugin")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
(string-append "APIDIR=" m64p "/include/mupen64plus")))
;; There are no tests.
#:tests? #f))
- (home-page "http://www.mupen64plus.org/")
+ (home-page "https://www.mupen64plus.org/")
(synopsis "Mupen64Plus SDL input plugin")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
(string-append "APIDIR=" m64p "/include/mupen64plus")))
;; There are no tests.
#:tests? #f))
- (home-page "http://www.mupen64plus.org/")
+ (home-page "https://www.mupen64plus.org/")
(synopsis "Mupen64Plus SDL input plugin")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
(define-public retroarch
(package
(name "retroarch")
- (version "1.7.7")
+ (version "1.8.1")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "026720z0vpiwr4da7l2x2yinns09fmg6yxsib203xwnixj399azi"))))
+ (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"
- "network/httpserver/httpserver.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.0")
(source
(origin
(method url-fetch)
"/scummvm-" version ".tar.xz"))
(sha256
(base32
- "0q6aiw97wsrf8cjw9vjilzhqqsr2rw2lll99s8i5i9svan6l314p"))))
+ "09zp2mxmida6sz5vrr5bzyv8c3yjvq2xqmpmcllbadhmd9cwcl3b"))))
(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
("faad2" ,faad2)
("fluidsynth" ,fluidsynth)
("freetype" ,freetype)
+ ("liba52" ,liba52)
("libflac" ,flac)
("libjpeg-turbo" ,libjpeg-turbo)
("libmad" ,libmad)
("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.212")
+ (version "0.216")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "0p3zcb9l624dsy2gyv23ppp1k1iwd1vrg8cbn5v4fx1s44mx7f5c"))
- (patches
- ;; FIXME: Remove once 0.213 is out. Applied upstream as
- ;; 0b5b13cf1e28550b49c387dec93f9801f029e313.
- (search-patches "mame-rapidjson-fix.patch"))
+ "1q3mrlinkg3hxry7ssl5713lclz3k243q30933flxh99fnzgajwc"))
(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")
;; However, over 90% of the files are under Expat license. Also, artwork,
;; keymaps, languages and samples are under CC0.
(license (list license:gpl2+ license:expat license:cc0))))
+
+(define-public pcsxr
+ ;; No release since 2017.
+ (let ((commit "6484236cb0281e8040ff6c8078c87899a3407534"))
+ (package
+ (name "pcsxr")
+ ;; Version is tagged here: https://github.com/frealgagu/PCSX-Reloaded
+ (version "1.9.95")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pcsxr/PCSX-Reloaded")
+ (commit commit)))
+ (sha256
+ (base32
+ "138mayp7zi9v4l3lm5f6xxkds619w1fgg769zm8s45c84jbz7dza"))
+ (file-name (git-file-name name commit))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ;no "test" target
+ #:configure-flags
+ (list "-DSND_BACKEND=pulse"
+ "-DENABLE_CCDDA='ON'"
+ "-DUSE_LIBARCHIVE='ON'"
+ "-DUSE_LIBCDIO='ON'")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'cd-subdir
+ (lambda _ (chdir "pcsxr")))
+ (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"))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("intltool" ,intltool)
+ ("glib" ,glib "bin")))
+ (inputs
+ `(("libcdio" ,libcdio)
+ ("sdl2" ,sdl2)
+ ("gtk+" ,gtk+)
+ ("ffmpeg" ,ffmpeg)
+ ("libxv" ,libxv)
+ ("libarchive" ,libarchive)
+ ("pulseaudio" ,pulseaudio)))
+ (home-page "https://archive.codeplex.com/?p=pcsxr")
+ (synopsis "PlayStation emulator")
+ (description
+ "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+)))