summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/emulators/nestopia
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2022-02-15 23:28:16 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2022-02-16 01:38:20 -0300
commit8d65e832f0a18f60e2040940c80d96373ac8b88c (patch)
tree3d6ade66b2a81403e3852b80b9e7c660699b6ed6 /pkgs/applications/emulators/nestopia
parent19574af0af3ffaf7c9e359744ed32556f34536bd (diff)
Move misc/emulators to applications/emulators - part 1
Emulators form a class by themselves. So, they should be moved to applications/.
Diffstat (limited to 'pkgs/applications/emulators/nestopia')
-rw-r--r--pkgs/applications/emulators/nestopia/build-fix.patch18
-rw-r--r--pkgs/applications/emulators/nestopia/default.nix72
-rw-r--r--pkgs/applications/emulators/nestopia/gcc6.patch92
3 files changed, 182 insertions, 0 deletions
diff --git a/pkgs/applications/emulators/nestopia/build-fix.patch b/pkgs/applications/emulators/nestopia/build-fix.patch
new file mode 100644
index 000000000000..a7d82ead15ca
--- /dev/null
+++ b/pkgs/applications/emulators/nestopia/build-fix.patch
@@ -0,0 +1,18 @@
+diff -wbBur rdanbrook-nestopia-f1dde9b/Makefile rdanbrook-nestopia-f1dde9b.my/Makefile
+--- rdanbrook-nestopia-f1dde9b/Makefile 2013-01-20 20:10:25.000000000 +0400
++++ rdanbrook-nestopia-f1dde9b.my/Makefile 2013-01-21 15:18:54.727577673 +0400
+@@ -197,11 +197,11 @@
+ install -m 0644 NstDatabase.xml $(DATADIR)
+ install -m 0644 source/unix/icons/*.png $(DATADIR)/icons
+ install -m 0644 source/unix/icons/*.svg $(DATADIR)/icons
+- install -m 0644 source/unix/icons/nestopia.svg $(PREFIX)/share/pixmaps
+- xdg-desktop-menu install --novendor $(DATADIR)/nestopia.desktop
++ install -m 0644 source/unix/icons/nestopia.svg $(PREFIX)/share/pixmaps/nestopia.svg
++ install -Dm0644 $(DATADIR)/nestopia.desktop $(PREFIX)/share/applications/nestopia.desktop
+
+ uninstall:
+- xdg-desktop-menu uninstall $(DATADIR)/nestopia.desktop
++ rm $(PREFIX)/share/applications/nestopia.desktop
+ rm $(PREFIX)/share/pixmaps/nestopia.svg
+ rm $(BINDIR)/$(BIN)
+ rm -rf $(DATADIR)
diff --git a/pkgs/applications/emulators/nestopia/default.nix b/pkgs/applications/emulators/nestopia/default.nix
new file mode 100644
index 000000000000..fa55c2e9635d
--- /dev/null
+++ b/pkgs/applications/emulators/nestopia/default.nix
@@ -0,0 +1,72 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, SDL2, alsa-lib, gtk3
+, makeWrapper, libGLU, libGL, libarchive, libao, unzip, xdg-utils
+, libepoxy, gdk-pixbuf, gnome, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+ version = "1.47";
+ pname = "nestopia";
+
+ src = fetchFromGitHub {
+ owner = "rdanbrook";
+ repo = "nestopia";
+ rev = version;
+ sha256 = "0frr0gvjh5mxzdhj0ii3sh671slgnzlm8naqlc4h87rx4p4sz2y2";
+ };
+
+ # nondeterministic failures when creating directories
+ enableParallelBuilding = false;
+
+ hardeningDisable = [ "format" ];
+
+ buildInputs = [
+ SDL2
+ alsa-lib
+ libepoxy
+ gtk3
+ gdk-pixbuf
+ libGLU libGL
+ libarchive
+ libao
+ xdg-utils
+ gnome.adwaita-icon-theme
+ ];
+
+ nativeBuildInputs = [
+ pkg-config
+ makeWrapper
+ wrapGAppsHook
+ unzip
+ ];
+
+ installPhase = ''
+ mkdir -p $out/{bin,share/nestopia}
+ make install PREFIX=$out
+ '';
+
+ preFixup = ''
+ for f in $out/bin/*; do
+ wrapProgram $f \
+ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share"
+ done
+ '';
+
+ patches = [
+ #(fetchpatch {
+ # url = "https://github.com/rdanbrook/nestopia/commit/f4bc74ac4954328b25e961e7afb7337377084079.patch";
+ # name = "gcc6.patch";
+ # sha256 = "1jy0c85xsfk9hrv5a6v0kk48d94864qb62yyni9fp93kyl33y2p4";
+ #})
+ ./gcc6.patch
+ ./build-fix.patch
+ ];
+
+ meta = {
+ homepage = "http://0ldsk00l.ca/nestopia/";
+ description = "NES emulator with a focus on accuracy";
+ license = lib.licenses.gpl2;
+ platforms = lib.platforms.linux;
+ maintainers = with lib.maintainers; [ MP2E ];
+ };
+}
+
diff --git a/pkgs/applications/emulators/nestopia/gcc6.patch b/pkgs/applications/emulators/nestopia/gcc6.patch
new file mode 100644
index 000000000000..65dcc72c0c25
--- /dev/null
+++ b/pkgs/applications/emulators/nestopia/gcc6.patch
@@ -0,0 +1,92 @@
+From f4bc74ac4954328b25e961e7afb7337377084079 Mon Sep 17 00:00:00 2001
+From: David Seifert <soap@gentoo.org>
+Date: Sat, 31 Dec 2016 18:21:18 +0200
+Subject: [PATCH] Fix compiling in C++14 mode
+
+* Left shifting a negative signed is undefined behaviour
+* Fix incorrect printf() specifiers found with -Wformat
+---
+ source/core/NstCore.hpp | 4 ++--
+ source/unix/gtkui/gtkui.cpp | 2 +-
+ source/unix/gtkui/gtkui.h | 1 -
+ source/unix/gtkui/gtkui_cheats.cpp | 8 ++++----
+ source/unix/video.cpp | 2 +-
+ 5 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/source/core/NstCore.hpp b/source/core/NstCore.hpp
+index 50e20f6..420cc4a 100644
+--- a/source/core/NstCore.hpp
++++ b/source/core/NstCore.hpp
+@@ -279,14 +279,14 @@ namespace Nes
+ template<typename T>
+ inline long signed_shl(T v,uint c)
+ {
+- enum {NATIVE = T(-7) << 1 == -14};
++ enum {NATIVE = -(T(7) << 1) == -14};
+ return Helper::ShiftSigned<T,NATIVE>::Left( v, c );
+ }
+
+ template<typename T>
+ inline long signed_shr(T v,uint c)
+ {
+- enum {NATIVE = T(-7) >> 1 == -4 || T(-7) >> 1 == -3};
++ enum {NATIVE = -(T(7) >> 1) == -4 || -(T(7) >> 1) == -3};
+ return Helper::ShiftSigned<T,NATIVE>::Right( v, c );
+ }
+
+diff --git a/source/unix/gtkui/gtkui.cpp b/source/unix/gtkui/gtkui.cpp
+index 3cfeeab..d4a5e2d 100644
+--- a/source/unix/gtkui/gtkui.cpp
++++ b/source/unix/gtkui/gtkui.cpp
+@@ -438,7 +438,7 @@ void gtkui_message(const char* message) {
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+- message);
++ "%s", message);
+ gtk_dialog_run(GTK_DIALOG(messagewindow));
+ gtk_widget_destroy(messagewindow);
+ }
+diff --git a/source/unix/gtkui/gtkui_cheats.cpp b/source/unix/gtkui/gtkui_cheats.cpp
+index afc01b0..e7b691a 100644
+--- a/source/unix/gtkui/gtkui_cheats.cpp
++++ b/source/unix/gtkui/gtkui_cheats.cpp
+@@ -373,7 +373,7 @@ void gtkui_cheats_fill_tree(char *filename) {
+ else if (node.GetChild(L"address")) { // Raw
+ char rawbuf[11];
+ snprintf(rawbuf, sizeof(rawbuf),
+- "%04x %02x %02x",
++ "%04lu %02lu %02lu",
+ node.GetChild(L"address").GetUnsignedValue(),
+ node.GetChild(L"value").GetUnsignedValue(),
+ node.GetChild(L"compare").GetUnsignedValue());
+@@ -545,13 +545,13 @@ gboolean gtkui_cheats_scan_list(GtkTreeModel *model, GtkTreePath *path, GtkTreeI
+ int addr, value, compare;
+ char buf[5];
+
+- snprintf(buf, sizeof(buf), "%c%c%c%c\0", rawcode[0], rawcode[1], rawcode[2], rawcode[3]);
++ snprintf(buf, sizeof(buf), "%c%c%c%c", rawcode[0], rawcode[1], rawcode[2], rawcode[3]);
+ sscanf(buf, "%x", &addr);
+
+- snprintf(buf, sizeof(buf), "%c%c\0", rawcode[5], rawcode[6]);
++ snprintf(buf, sizeof(buf), "%c%c", rawcode[5], rawcode[6]);
+ sscanf(buf, "%x", &value);
+
+- snprintf(buf, sizeof(buf), "%c%c\0", rawcode[8], rawcode[9]);
++ snprintf(buf, sizeof(buf), "%c%c", rawcode[8], rawcode[9]);
+ sscanf(buf, "%x", &compare);
+
+ code.address = addr;
+diff --git a/source/unix/video.cpp b/source/unix/video.cpp
+index 3eff19d..c34bb22 100644
+--- a/source/unix/video.cpp
++++ b/source/unix/video.cpp
+@@ -757,7 +757,7 @@ void video_screenshot(const char* filename) {
+ if (filename == NULL) {
+ // Set the filename
+ char sshotpath[512];
+- snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%d-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100);
++ snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%ld-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100);
+
+ // Save the file
+ lodepng_encode32_file(sshotpath, (const unsigned char*)pixels, rendersize.w, rendersize.h);