summaryrefslogtreecommitdiff
path: root/gnu/packages/emulators.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/emulators.scm')
-rw-r--r--gnu/packages/emulators.scm230
1 files changed, 228 insertions, 2 deletions
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 84c6b0624f..68ec6f3254 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -39,6 +39,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix svn-download)
+ #:use-module (guix hg-download)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
@@ -141,6 +142,72 @@ C610/C510). An extra emulator is provided for C64 expanded with the CMD
SuperCPU.")
(license license:gpl2+)))
+(define-public blastem
+ (package
+ (name "blastem")
+ (version "0.6.2")
+ (source (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://www.retrodev.com/repos/blastem")
+ (changeset (string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "08ycfisivh9rb9vmijlrpdryaw8spd81ck48960p15cnf8h2535q"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; TODO: Separately package and unbundle nuklear
+ (delete-file-recursively "zlib")))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
+ "HOST_ZLIB=1"
+ "HAS_PROC=-DHAS_PROC"
+ (string-append "CONFIG_PATH="
+ %output "/share/blastem")
+ (string-append "DATA_PATH="
+ %output "/share/blastem"))
+ #:tests? #f ; No check target and custom tests don't seem to build
+ #:imported-modules
+ ((guix build copy-build-system)
+ ,@%gnu-build-system-modules)
+ #:modules
+ (((guix build copy-build-system)
+ #:prefix copy:)
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-source
+ (lambda _
+ (substitute* (find-files "." ".*\\.[ch]")
+ (("\"zlib/zlib.h\"") "<zlib.h>"))))
+ (delete 'configure)
+ (replace 'install
+ (lambda* args
+ (apply (assoc-ref copy:%standard-phases 'install)
+ #:install-plan
+ '(("." "bin" #:include ("blastem" "vgmplay"))
+ ("." "share/blastem"
+ #:include ("default.cfg" "rom.db")
+ #:exclude ("android"))
+ ("shaders" "share/blastem/shaders"))
+ args))))))
+ (inputs
+ `(("glew" ,glew)
+ ("mesa" ,mesa)
+ ("sdl2" ,sdl2)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://www.retrodev.com/blastem/")
+ (synopsis "Genesis/Mega Drive emulator")
+ (description "Blastem is an emulator for the Sega Genesis/Mega Drive
+console.")
+ (license license:gpl3+)))
+
(define-public desmume
(package
(name "desmume")
@@ -326,6 +393,78 @@ SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
older games.")
(license license:gpl2+)))
+(define-public dosbox-staging
+ ;; This is not a patch staging area for DOSBox, but an unaffiliated fork.
+ (package
+ (name "dosbox-staging")
+ (version "0.76.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dosbox-staging/dosbox-staging")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "14zlkm9qmaq2x4zdiadczsxvdnrf35w13ccvkxzd8cwrzxv84fvd"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (let* ((flags (list "-O3"
+ ;; From scripts/automator/build/gcc-defaults.
+ "-fstrict-aliasing"
+ "-fno-signed-zeros"
+ "-fno-trapping-math"
+ "-fassociative-math"
+ "-frename-registers"
+ "-ffunction-sections"
+ "-fdata-sections"))
+ (CFLAGS (string-join flags " ")))
+ ;; Several files #include <SDL_net.h> instead of <SDL2/SDL_net.h>,
+ ;; including configure.ac itself.
+ (list (string-append "CPPFLAGS=-I" (assoc-ref %build-inputs "sdl2")
+ "/include/SDL2")
+ (string-append "CFLAGS=" CFLAGS)
+ (string-append "CXXFLAGS=-DNDEBUG " CFLAGS)))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("fluidsynth" ,fluidsynth)
+ ("libpng" ,libpng)
+ ("opusfile" ,opusfile)
+ ("sdl2" ,(sdl-union (list sdl2 sdl2-net)))
+ ("zlib" ,zlib)))
+ (home-page "https://dosbox-staging.github.io")
+ (synopsis "DOS/x86 PC emulator focusing on ease of use")
+ (description
+ "The DOSBox Staging project attempts to modernize DOSBox.
+
+DOSBox emulates an Intel x86 personal computer running an IBM PC compatible disk
+operating system (@dfn{DOS}) in both real and protected modes. It was primarily
+designed to run old DOS games, but aims to be fully compatible with all DOS
+programs and replicate the experience as accurately as possible.
+
+This fork fixes some perceived issues with DOSBox and adds new features such as
+Wayland support, PowerPC/POWER dynamic recompilation, and FluidSynth MIDI.
+Other features may be removed: for example, physical CDs can no longer be
+played, only emulated media.
+
+Graphical emulation includes contemporary text mode, Hercules, CGA, EGA, VGA,
+VESA, S3@tie{}Trio@tie{}64, and Tandy hardware.
+
+Emulated legacy sound devices range from a rudimentary `PC speaker' buzzer to
+the once state-of-the-art Gravis Utrasound sampling sound card. The default is
+a SoundBlaster 16 providing 16-bit stereo sound. MIDI is forwarded to the host
+through an emulated MPU-401.
+
+An emulated hardware modem is also included, letting one host or dial a
+@acronym{BBS, Bulletin Board System} across the Internet, network over IPX, and
+emulate a serial nullmodem over TCP/IP.")
+ (license license:gpl3+)))
+
(define-public qtmips
(package
(name "qtmips")
@@ -1632,7 +1771,7 @@ This is a part of the TiLP project.")
(define-public mame
(package
(name "mame")
- (version "0.232")
+ (version "0.233")
(source
(origin
(method git-fetch)
@@ -1641,7 +1780,7 @@ This is a part of the TiLP project.")
(commit (apply string-append "mame" (string-split version #\.)))))
(file-name (git-file-name name version))
(sha256
- (base32 "1v6qka8k4smah08rp62kgjmc84hwsg1iqhms0369rhdh722bgpn7"))
+ (base32 "1zq7hvss004mwczk3jvyalkj9c5v6npswhkc2wj7dxyxz770clb3"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries.
@@ -2335,3 +2474,90 @@ elseif(FALSE)"))
"PPSSPP is a ``high-level'' emulator simulating the PSP operating
system.")
(license license:gpl2+))))
+
+(define-public exomizer
+ (package
+ (name "exomizer")
+ (version "3.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://bitbucket.org/magli143/exomizer.git")
+ (commit "6a152b5605648f7a41eadd4b011a93ec92f74dd8")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1ynhkb5p2dypkikipc3krzif264l9rmx1wnjzzgw8n88i4zkymzg"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No target exists
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (delete-file-recursively "exodecrs")
+ (delete-file-recursively "rawdecrs")
+ (chdir "src")
+ ;; Those will be regenerated.
+ (delete-file "asm.tab.h")
+ (delete-file "asm.tab.c")
+ (delete-file "lex.yy.c")
+ #t))
+ (replace 'configure
+ (lambda _
+ (setenv "CC" ,(cc-for-target))
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out-bin (string-append (assoc-ref outputs "out") "/bin")))
+ (install-file "exomizer" out-bin)
+ (install-file "exobasic" out-bin))
+ #t)))))
+ (native-inputs
+ `(("flex" ,flex)
+ ("bison" ,bison)))
+ (synopsis "Compressor for use on Commodore home computers")
+ (description "This program compresses files in a way that tries to be as
+efficient as possible but still allows them to be decompressed in environments
+where CPU speed and RAM are limited. It also generate a self-extractor for use
+on a Commodore C64, C128 etc.")
+ (home-page "https://bitbucket.org/magli143/exomizer/wiki/Home")
+ ;; Some files are LGPL 2.1--but we aren't building from or installing those.
+ ;; zlib license with an (non-)advertising clause.
+ (license license:zlib)))
+
+(define-public cc65
+ (package
+ (name "cc65")
+ (version "2.19")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cc65/cc65.git")
+ (commit (string-append "V" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "01a15yvs455qp20hri2pbg2wqvcip0d50kb7dibi9427hqk9cnj4"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; No target exists.
+ #:make-flags
+ (list "BUILD_ID=V2.18 - Git 55528249"
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key source #:allow-other-keys)
+ ;; We include $SOURCE/include in C_INCLUDE_PATH. Remove it.
+ (setenv "C_INCLUDE_PATH"
+ (string-join
+ (filter (lambda (name)
+ (not (string=? name (string-append source "/include"))))
+ (string-split (getenv "C_INCLUDE_PATH") #\:))
+ ":"))
+ #t)))))
+ (synopsis "Development environment for 6502 systems")
+ (description "This package provides a development environment for 6502 systems, including macro assembler, C compiler, linker, librarian and several other tools.")
+ (home-page "https://cc65.github.io/")
+ (license license:zlib)))