Subject: [PATCH] Add SameBoy

From: Jakub Kądziołka <[email-masked]>
Date: Fri, 3 Jan 2020 01:32:02 +0100

Hello Guix,

please find attached a patchset that adds SameBoy and RGBDS to the
available packages. The latter is a dependency of the former, but is
also quite useful on its own.

Regards,
Jakub Kądziołka
>From 9ec4034fb340d18498f080294af428f9edbbe3af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <[email-masked]>
Date: Fri, 3 Jan 2020 00:13:56 +0100
Subject: [PATCH 1/2] gnu: Add rgbds.

* gnu/packages/assembly.scm (rgbds): New variable.
---
 gnu/packages/assembly.scm | 49 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index fac3d478a5..f0755cfdcb 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -36,6 +36,8 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages man)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -249,3 +251,50 @@ assembler, a C compiler and a linker.  The assembler uses Intel syntax
 functionality independent of any particular bytecode, language, or
 runtime")
       (license license:lgpl2.1+))))
+
+(define-public rgbds
+  (package
+    (name "rgbds")
+    (version "v0.3.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rednex/rgbds.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0pzd9ig3ahpgq7jbj82grllxx1v01d620insr2m8h0c6jj25n5hv"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "test/asm"
+               (invoke "./test.sh"))
+             (with-directory-excursion "test/link"
+               (invoke "./test.sh")))))
+       #:make-flags `("CC=gcc"
+                      ,(string-append "PREFIX="
+                                      (assoc-ref %outputs "out")))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)
+       ("util-linux" ,util-linux)))
+    (inputs
+     `(("libpng" ,libpng)))
+    (home-page "https://github.com/rednex/rgbds")
+    (synopsis "Rednex Game Boy Development System")
+    (description
+     "RGBDS (Rednex Game Boy Development System) is a free assembler/linker
+package for the Game Boy and Game Boy Color.  It consists of:
+@itemize @bullet
+@item rgbasm (assembler)
+@item rgblink (linker)
+@item rgbfix (checksum/header fixer)
+@item rgbgfx (PNG-to-Game Boy graphics converter)
+@end itemize")
+    (license license:expat)))
-- 
2.24.1

>From d2900a92b271c5e81093bd9704aa82dbb6b0f523 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <[email-masked]>
Date: Fri, 3 Jan 2020 01:29:04 +0100
Subject: [PATCH 2/2] gnu: Add sameboy.

* gnu/packages/emulators.scm (sameboy): New variable.
---
 gnu/packages/emulators.scm | 48 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 63c1332c2f..fbfb1cf712 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -457,6 +457,54 @@ and Game Boy Color games.")
     ;; BSD-3.
     (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
 
+(define-public sameboy
+  (package
+    (name "sameboy")
+    (version "v0.12.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/LIJI32/SameBoy.git")
+             (commit 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 "Extremely 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 extremely accurate and includes a wide
+range of powerful debugging features, making it ideal for both casual players
+and developers.  In addition to accuracy and developer capabilities, SameBoy
+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")
-- 
2.24.1