aboutsummaryrefslogtreecommitdiff
path: root/games/gens-gs
diff options
context:
space:
mode:
Diffstat (limited to 'games/gens-gs')
-rw-r--r--games/gens-gs/README16
-rw-r--r--games/gens-gs/doinst.sh3
-rw-r--r--games/gens-gs/gens-gs.SlackBuild89
-rw-r--r--games/gens-gs/gens-gs.info10
-rw-r--r--games/gens-gs/gens-gtk.patch187
-rw-r--r--games/gens-gs/slack-desc19
6 files changed, 324 insertions, 0 deletions
diff --git a/games/gens-gs/README b/games/gens-gs/README
new file mode 100644
index 0000000000000..cdf3ce679d309
--- /dev/null
+++ b/games/gens-gs/README
@@ -0,0 +1,16 @@
+Gens/GS is a Sega Genesis/CD/32x emulator forked from Gens.
+
+The project's main goal is to clean up the source code and combine
+features of the various Gens forks, as well as improve portability to
+other platforms.
+
+To build without OpenGL, run the script like:
+
+ OPENGL=no ./gens-gs.SlackBuild
+
+To build with the yasm assembler instead of nasm, run the script like:
+
+ ASM=yasm ./gens-gs.SlackBuild
+
+rar is an optional run-time dependency for playing ROMs compressed with
+WinRAR.
diff --git a/games/gens-gs/doinst.sh b/games/gens-gs/doinst.sh
new file mode 100644
index 0000000000000..5fb28930db0b9
--- /dev/null
+++ b/games/gens-gs/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/games/gens-gs/gens-gs.SlackBuild b/games/gens-gs/gens-gs.SlackBuild
new file mode 100644
index 0000000000000..07cec00d39b2a
--- /dev/null
+++ b/games/gens-gs/gens-gs.SlackBuild
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Slackware build script for gens-gs
+# Written by Steven Pledger <spledger91@yahoo.com>
+
+PRGNAM=gens-gs
+VERSION=${VERSION:-r7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ echo "$ARCH architecture not supported."
+ exit 1
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+# enable opengl
+OPENGL=${OPENGL:-yes} # or no
+
+# which assembler to use?
+ASM="${ASM:-nasm}" # or yasm
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/Gens-gs-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Borrowed from the AUR PKGBUILD:
+# https://aur.archlinux.org/packages.php?ID=21612
+patch -p1 < $CWD/gens-gtk.patch # replaces deprecated gtk functions
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --with-opengl=$OPENGL \
+ --with-nasm=$ASM \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Documentation was installed by "make install"
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/games/gens-gs/gens-gs.info b/games/gens-gs/gens-gs.info
new file mode 100644
index 0000000000000..4c7f7b7d1bc90
--- /dev/null
+++ b/games/gens-gs/gens-gs.info
@@ -0,0 +1,10 @@
+PRGNAM="gens-gs"
+VERSION="r7"
+HOMEPAGE="http://segaretro.org/Gens/GS"
+DOWNLOAD="http://segaretro.org/images/6/6d/Gens-gs-r7.tar.gz"
+MD5SUM="bcb17b49774aa318a224c741028aabc3"
+DOWNLOAD_x86_64="UNSUPPORTED"
+MD5SUM_x86_64=""
+MAINTAINER="Steven Pledger"
+EMAIL="spledger91@yahoo.com"
+APPROVED="Niels Horn"
diff --git a/games/gens-gs/gens-gtk.patch b/games/gens-gs/gens-gtk.patch
new file mode 100644
index 0000000000000..0bc6fd0ee26fa
--- /dev/null
+++ b/games/gens-gs/gens-gtk.patch
@@ -0,0 +1,187 @@
+diff -ru gens/src/gens/ui/gtk/about/about_window.cpp gens-build/src/gens/ui/gtk/about/about_window.cpp
+--- gens/src/gens/ui/gtk/about/about_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/about/about_window.cpp 2010-10-11 15:46:25.000000000 +0000
+@@ -84,7 +84,7 @@
+ gtk_window_set_position(GTK_WINDOW(about_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(about_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(about_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(about_window), FALSE);
++ g_object_set(GTK_DIALOG(about_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)about_window, "delete_event",
+diff -ru gens/src/gens/ui/gtk/bios_misc_files/bmf_window.cpp gens-build/src/gens/ui/gtk/bios_misc_files/bmf_window.cpp
+--- gens/src/gens/ui/gtk/bios_misc_files/bmf_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/bios_misc_files/bmf_window.cpp 2010-10-11 15:33:03.000000000 +0000
+@@ -84,7 +84,7 @@
+ gtk_window_set_position(GTK_WINDOW(bmf_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(bmf_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(bmf_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(bmf_window), FALSE);
++ g_object_set(GTK_DIALOG(bmf_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)bmf_window, "delete_event",
+diff -ru gens/src/gens/ui/gtk/directory_config/dir_window.cpp gens-build/src/gens/ui/gtk/directory_config/dir_window.cpp
+--- gens/src/gens/ui/gtk/directory_config/dir_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/directory_config/dir_window.cpp 2010-10-11 15:34:21.000000000 +0000
+@@ -109,7 +109,7 @@
+ gtk_window_set_position(GTK_WINDOW(dir_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(dir_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(dir_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(dir_window), FALSE);
++ g_object_set(GTK_DIALOG(dir_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)(dir_window), "delete_event",
+diff -ru gens/src/gens/ui/gtk/general_options/genopt_window.cpp gens-build/src/gens/ui/gtk/general_options/genopt_window.cpp
+--- gens/src/gens/ui/gtk/general_options/genopt_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/general_options/genopt_window.cpp 2010-10-11 15:36:00.000000000 +0000
+@@ -140,7 +140,7 @@
+ gtk_window_set_position(GTK_WINDOW(genopt_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(genopt_window), false);
+ gtk_window_set_type_hint(GTK_WINDOW(genopt_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(genopt_window), false);
++ g_object_set(GTK_DIALOG(genopt_window), "has-separator", false, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)genopt_window, "delete_event",
+@@ -458,11 +458,11 @@
+ gtk_box_pack_start(GTK_BOX(vboxIntroEffect), lblIntroEffect, false, false, 0);
+
+ // Dropdown for intro effect.
+- cboIntroEffect = gtk_combo_box_new_text();
+- gtk_combo_box_append_text(GTK_COMBO_BOX(cboIntroEffect), "None");
+- gtk_combo_box_append_text(GTK_COMBO_BOX(cboIntroEffect), "Gens Logo Effect");
+- gtk_combo_box_append_text(GTK_COMBO_BOX(cboIntroEffect), "\"Crazy\" Effect");
+- //gtk_combo_box_append_text(GTK_COMBO_BOX(cboIntroEffect), "Genesis TMSS"); // TODO: Broken.
++ cboIntroEffect = gtk_combo_box_text_new();
++ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboIntroEffect), "None");
++ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboIntroEffect), "Gens Logo Effect");
++ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboIntroEffect), "\"Crazy\" Effect");
++ //gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboIntroEffect), "Genesis TMSS"); // TODO: Broken.
+ gtk_widget_show(cboIntroEffect);
+ gtk_box_pack_start(GTK_BOX(vboxIntroEffect), cboIntroEffect, false, false, 0);
+ g_signal_connect((gpointer)(cboIntroEffect), "changed",
+diff -ru gens/src/gens/ui/gtk/gens/gens_window_callbacks.cpp gens-build/src/gens/ui/gtk/gens/gens_window_callbacks.cpp
+--- gens/src/gens/ui/gtk/gens/gens_window_callbacks.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/gens/gens_window_callbacks.cpp 2010-10-11 15:21:28.000000000 +0000
+@@ -154,9 +154,9 @@
+ GSFT_UNUSED_PARAMETER(y);
+ GSFT_UNUSED_PARAMETER(user_data);
+
+- if (context->targets)
++ if (gdk_drag_context_list_targets(context))
+ {
+- GdkAtom target_type = GDK_POINTER_TO_ATOM(g_list_nth_data(context->targets, 0));
++ GdkAtom target_type = GDK_POINTER_TO_ATOM(g_list_nth_data(gdk_drag_context_list_targets(context), 0));
+ gtk_drag_get_data(widget, context, target_type, time);
+ return true;
+ }
+diff -ru gens/src/gens/ui/gtk/opengl_resolution/glres_window.cpp gens-build/src/gens/ui/gtk/opengl_resolution/glres_window.cpp
+--- gens/src/gens/ui/gtk/opengl_resolution/glres_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/opengl_resolution/glres_window.cpp 2010-10-11 15:46:21.000000000 +0000
+@@ -75,7 +75,7 @@
+ gtk_window_set_position(GTK_WINDOW(glres_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(glres_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(glres_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(glres_window), FALSE);
++ g_object_set(GTK_DIALOG(glres_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)(glres_window), "delete_event",
+diff -ru gens/src/gens/ui/gtk/plugin_manager/pmgr_window.cpp gens-build/src/gens/ui/gtk/plugin_manager/pmgr_window.cpp
+--- gens/src/gens/ui/gtk/plugin_manager/pmgr_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/plugin_manager/pmgr_window.cpp 2010-10-11 15:46:29.000000000 +0000
+@@ -80,8 +80,7 @@
+ // Callbacks.
+ static gboolean pmgr_window_callback_close(GtkWidget *widget, GdkEvent *event, gpointer user_data);
+ static void pmgr_window_callback_response(GtkDialog *dialog, gint response_id, gpointer user_data);
+-static void pmgr_window_callback_tabPluginList_switch_page(GtkNotebook *notebook, GtkNotebookPage *page,
+- guint page_num, gpointer user_data);
++static void pmgr_window_callback_tabPluginList_switch_page(GtkNotebook *notebook, guint page_num, gpointer user_data);
+ static void pmgr_window_callback_lstPluginList_cursor_changed(GtkTreeView *tree_view, gpointer user_data);
+ static void pmgr_window_callback_fraPluginDesc_size_allocate(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data);
+
+@@ -119,7 +118,7 @@
+ gtk_window_set_position(GTK_WINDOW(pmgr_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(pmgr_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(pmgr_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(pmgr_window), FALSE);
++ g_object_set(GTK_DIALOG(pmgr_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)pmgr_window, "delete_event",
+@@ -559,11 +558,9 @@
+ * @param page_num New notebook page index.
+ * @param user_data User data.
+ */
+-static void pmgr_window_callback_tabPluginList_switch_page(GtkNotebook *notebook, GtkNotebookPage *page,
+- guint page_num, gpointer user_data)
++static void pmgr_window_callback_tabPluginList_switch_page(GtkNotebook *notebook, guint page_num, gpointer user_data)
+ {
+ GSFT_UNUSED_PARAMETER(notebook);
+- GSFT_UNUSED_PARAMETER(page);
+ GSFT_UNUSED_PARAMETER(user_data);
+
+ // Activate the "cursor-changed" callback for the page.
+diff -ru gens/src/gens/ui/gtk/select_cdrom/selcd_window.cpp gens-build/src/gens/ui/gtk/select_cdrom/selcd_window.cpp
+--- gens/src/gens/ui/gtk/select_cdrom/selcd_window.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/gens/ui/gtk/select_cdrom/selcd_window.cpp 2010-10-11 15:46:16.000000000 +0000
+@@ -94,7 +94,7 @@
+ gtk_window_set_position(GTK_WINDOW(selcd_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(selcd_window), FALSE);
+ gtk_window_set_type_hint(GTK_WINDOW(selcd_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(selcd_window), FALSE);
++ g_object_set(GTK_DIALOG(selcd_window), "has-separator", FALSE, NULL);
+
+ // Callbacks for if the window is closed.
+ g_signal_connect((gpointer)(selcd_window), "delete_event",
+@@ -128,7 +128,7 @@
+ gtk_box_pack_start(GTK_BOX(hboxDeviceName), lblDeviceName, false, false, 0);
+
+ // Create the dropdown for the CD-ROM device name.
+- cboDeviceName = gtk_combo_box_entry_new_text();
++ cboDeviceName = gtk_combo_box_text_new_with_entry();
+ gtk_entry_set_max_length(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(cboDeviceName))), 63);
+ gtk_label_set_mnemonic_widget(GTK_LABEL(lblDeviceName), cboDeviceName);
+ gtk_widget_show(cboDeviceName);
+@@ -156,7 +156,7 @@
+ gtk_box_pack_start(GTK_BOX(hboxDriveSpeed), vboxDriveSpeedDropdown, true, true, 0);
+
+ // Create the dropdown for the CD-ROM drive speed selection.
+- cboDriveSpeed = gtk_combo_box_new_text();
++ cboDriveSpeed = gtk_combo_box_text_new();
+ char tmpSpeed[16];
+ for (unsigned int i = 0; i < ((sizeof(CD_DriveSpeed) / sizeof(CD_DriveSpeed[0])) - 1); i++)
+ {
+@@ -167,7 +167,7 @@
+ else
+ szprintf(tmpSpeed, sizeof(tmpSpeed), "%dx", CD_DriveSpeed[i]);
+
+- gtk_combo_box_append_text(GTK_COMBO_BOX(cboDriveSpeed), tmpSpeed);
++ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboDriveSpeed), tmpSpeed);
+ }
+ gtk_widget_show(cboDriveSpeed);
+ gtk_box_pack_start(GTK_BOX(vboxDriveSpeedDropdown), cboDriveSpeed, true, false, 0);
+@@ -252,7 +252,7 @@
+ continue;
+
+ // Add the device file.
+- gtk_combo_box_append_text(GTK_COMBO_BOX(cboDeviceName), tmpDeviceName);
++ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cboDeviceName), tmpDeviceName);
+ }
+ }
+
+diff -ru gens/src/mdp/misc/game_genie/gg_window_gtk2.cpp gens-build/src/mdp/misc/game_genie/gg_window_gtk2.cpp
+--- gens/src/mdp/misc/game_genie/gg_window_gtk2.cpp 2010-10-11 16:32:29.000000000 +0000
++++ gens-build/src/mdp/misc/game_genie/gg_window_gtk2.cpp 2010-10-11 15:52:05.000000000 +0000
+@@ -111,7 +111,7 @@
+ gtk_window_set_position(GTK_WINDOW(gg_window), GTK_WIN_POS_CENTER);
+ gtk_window_set_resizable(GTK_WINDOW(gg_window), TRUE);
+ gtk_window_set_type_hint(GTK_WINDOW(gg_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+- gtk_dialog_set_has_separator(GTK_DIALOG(gg_window), FALSE);
++ g_object_set(GTK_DIALOG(gg_window), "has-separator", FALSE, NULL);
+
+ // Add the window icon.
+ GList *icon_list = NULL;
diff --git a/games/gens-gs/slack-desc b/games/gens-gs/slack-desc
new file mode 100644
index 0000000000000..c1f767522e9cd
--- /dev/null
+++ b/games/gens-gs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gens-gs: gens-gs (sega genesis/cd/32x emulator)
+gens-gs:
+gens-gs: Gens/GS is a fork of Gens maintained by GerbilSoft.
+gens-gs:
+gens-gs: The main goal of the project is to clean up the source code and
+gens-gs: combine features from various forks of Gens as well as improve
+gens-gs: portability to other platforms.
+gens-gs:
+gens-gs: Homepage: http://segaretro.org/Gens/GS
+gens-gs:
+gens-gs: