diff options
author | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-02-15 23:28:16 -0300 |
---|---|---|
committer | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-02-16 01:38:20 -0300 |
commit | 8d65e832f0a18f60e2040940c80d96373ac8b88c (patch) | |
tree | 3d6ade66b2a81403e3852b80b9e7c660699b6ed6 /pkgs/applications/emulators/nestopia | |
parent | 19574af0af3ffaf7c9e359744ed32556f34536bd (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.patch | 18 | ||||
-rw-r--r-- | pkgs/applications/emulators/nestopia/default.nix | 72 | ||||
-rw-r--r-- | pkgs/applications/emulators/nestopia/gcc6.patch | 92 |
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); |