summaryrefslogtreecommitdiff
path: root/nongnu/packages/emulators.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim@guixotic.coop>2025-08-10 21:32:11 +0900
committerHilton Chain <hako@ultrarare.space>2025-08-24 10:24:53 +0800
commit96ccecfa0236cf6e696596e3703e5d3afa89de24 (patch)
treecd5143d694f046f0001e3109832daf94f3b18d82 /nongnu/packages/emulators.scm
parent099ab02079f82b9d61c0d722c26895e514489899 (diff)
nongnu: Add libretro-genesis-plus-gx.
* nongnu/packages/emulators.scm (libretro-genesis-plus-gx): New variable. Signed-off-by: Hilton Chain <hako@ultrarare.space>
Diffstat (limited to 'nongnu/packages/emulators.scm')
-rw-r--r--nongnu/packages/emulators.scm77
1 files changed, 77 insertions, 0 deletions
diff --git a/nongnu/packages/emulators.scm b/nongnu/packages/emulators.scm
index 5dade3b..b66f50a 100644
--- a/nongnu/packages/emulators.scm
+++ b/nongnu/packages/emulators.scm
@@ -1,5 +1,6 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop>
(define-module (nongnu packages emulators)
#:use-module (gnu packages backup)
@@ -7,8 +8,11 @@
#:use-module (gnu packages sdl)
#:use-module (guix build-system gnu)
#:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (nonguix licenses))
(define-public dgen
@@ -38,3 +42,76 @@ compatible. It's also perfect for command line freaks.")
(license (list license:bsd-3
;; Many non-free licenses.
(nonfree "https://sourceforge.net/p/dgen/dgen/ci/master/tree/COPYING")))))
+
+(define-public libretro-genesis-plus-gx
+ ;; There is no release nor tags: use the latest commit.
+ (let ((commit "a80e3b3b957d38961e274aa4da450245ddc63fe8")
+ (revision "0"))
+ (package
+ (name "libretro-genesis-plus-gx")
+ (version (git-version "0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ekeeke/Genesis-Plus-GX")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0iqsbxw00mqc2hf0jw1v6qzccf5b40d6q1a7vv5bdi3i260py6i0"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no test suite
+ #:make-flags
+ #~(list "-f" "Makefile.libretro"
+ (string-append "GIT_VERSION=" #$version)
+ (string-append "CC=" #$(cc-for-target)))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (replace 'install
+ (lambda _
+ (install-file "genesis_plus_gx_libretro.so"
+ (string-append #$output "/lib/libretro"))
+ (invoke "find" "-executable" "-name" "*.so"))))))
+ (home-page "https://github.com/ekeeke/Genesis-Plus-GX")
+ (synopsis "Accurate Sega 8/16 bit emulator")
+ (description "This is the Libretro port of Genesis Plus GX, a SG-1000,
+Mark-III, Master System (I & II), Game Gear, Genesis/Mega Drive and Sega/Mega
+CD emulator. It was originally based on Genesis Plus, from which it improves
+emulation accuracy and adds support for new peripherals, cartridges and
+features such as:
+@itemize
+@item
+NTSC (60Hz) and PAL (50Hz) video hardware emulation
+@item
+accurate 68000, Z80 CPU emulation and synchronization
+@item
+accurate VDP emulation and timings
+@item
+sample-accurate YM2612,YM2413, SN76489 and RF5C164 PCM sound chips emulation
+@item
+cycle-accurate sound chips synchronization with 68000/Z80 CPU
+@item
+cycle-accurate 68000 and Z80 CPU synchronization
+@item
+optimized Main-CPU / Sub-CPU synchronization (Sega/Mega CD)
+@item
+accurate CDD, CDC and GFX chip emulation (Sega/Mega CD)
+@item
+accurate CD-DA fader emulation (Sega/Mega CD)
+@item
+Mode 1 cartridge support (Sega/Mega CD)
+@item
+Audio CD and CD+G support (Sega/Mega CD)
+@item
+high-quality audio resampling using Blip Buffer
+@item
+basic hardware latency emulation (VDP/68k, Z80/68k)
+@item
+full overscan area emulation (horizontal and vertical color borders)
+@end itemize")
+ ;; Redistributable but has a non-commercial clause, so does not meet the
+ ;; GNU FSDG requirements.
+ (license (nonfree "file://LICENSE.txt")))))