From 999f90ec6caf0e95078bd6d446ef5978dd8e5702 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 19 Sep 2024 20:49:28 +0900 Subject: gnu: Add jg-bsnes. * gnu/packages/emulators.scm (jg-bsnes): New variable. Change-Id: If88a7bea0c87c8af8fce051f8bec891ff249449f --- gnu/packages/emulators.scm | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 8f18e6bb5f..a7a22f5ef4 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -2352,6 +2352,80 @@ as a \"white-label\" frontend for statically linked standalone emulators.") license:public-domain ;md5.h, md5.c, parg.h, parg.c license:cc0)))) +(define-public jg-bsnes + (package + (name "jg-bsnes") + (version "2.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jgemu/bsnes") + (commit version))) + (file-name (git-file-name name version)) + ;; XXX: Some source dependencies are bundled and are not easy to + ;; unbundle due to the build system building an object combining + ;; their sources directly (see: + ;; https://gitlab.com/jgemu/bsnes/-/issues/6). + ;; - byuuML (no build system) + ;; - gb (the 'Core' sources of SameBoy) + ;; - libco (no build system) + ;; - snes_spc (also modified by this project) + (snippet '(begin + (use-modules (guix build utils)) + (delete-file-recursively "deps/libsamplerate"))) + (sha256 + (base32 + "0z1ka4si8vcb0j6ih087cni18vpgfd3qnaw24awycxz23xc0jkdv")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ;no test suite + #:make-flags + #~(list (string-append "AR=" #$(ar-for-target)) + (string-append "CC=" #$(cc-for-target)) + (string-append "CXX=" #$(cxx-for-target)) + (string-append "PREFIX=" #$output)) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) ;no configure script + (native-inputs (list jg-api pkg-config)) + (inputs (list libsamplerate)) + (home-page "https://gitlab.com/jgemu/bsnes") + (synopsis "Jolly Good Fork of bsnes") + (description "@code{bsnes-jg} is a cycle accurate emulator for the Super +Famicom/Super Nintendo Entertainment System, including support for the Super +Game Boy, BS-X Satellaview, and Sufami Turbo. @code{bsnes-jg} is a fork of +@code{bsnes} v115, Many changes have been made post-fork: +@itemize +@item Higher quality resampler with settings +@item Improved performance without loss of accuracy +@item Portability improvements +@item Removal of accuracy-reducing hacks and unnecessary code +@item Significant increase in standards compliance +@item Translation to the C++ Standard Library (ISO C++11) +@end itemize + +In particular, it uses much less @acronym{CPU, Central Processing Unit} +compared to the original @code{bsnes} (though not as little as @code{zsnes}). + +The supported file formats are: +@itemize @file +@item .sfc +@item .smc +@item .bs +@item .st +@item .fig +@item .swc +@end itemize + +This is intended to be used with the Jolly Good Reference Frontend +@command{jollygood} command from the @code{jgrf} package.") + ;; The project license is GPL3+. The bundled source licenses are also + ;; listed below. + (license (list license:gpl3+ + license:bsd-3 ;byuuML + license:expat ;gb + license:isc ;libco + license:lgpl2.1+)))) + (define-public zsnes (package (name "zsnes") -- cgit 1.4.1