diff options
-rw-r--r-- | games/gens-gs/README | 16 | ||||
-rw-r--r-- | games/gens-gs/doinst.sh | 3 | ||||
-rw-r--r-- | games/gens-gs/gens-gs.SlackBuild | 89 | ||||
-rw-r--r-- | games/gens-gs/gens-gs.info | 10 | ||||
-rw-r--r-- | games/gens-gs/gens-gtk.patch | 187 | ||||
-rw-r--r-- | games/gens-gs/slack-desc | 19 |
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: |