summaryrefslogtreecommitdiffstats
path: root/games/snes9x
diff options
context:
space:
mode:
Diffstat (limited to 'games/snes9x')
-rw-r--r--games/snes9x/ChangeLog.old71
-rw-r--r--games/snes9x/README59
-rw-r--r--games/snes9x/README_docs.txt4
-rw-r--r--games/snes9x/fix_config_file_segfaults.diff28
-rw-r--r--games/snes9x/libretro.diff104
-rw-r--r--games/snes9x/libretro_lto_variable.diff112
-rw-r--r--games/snes9x/slack-desc4
-rw-r--r--games/snes9x/snes9x-gtk.6154
-rw-r--r--games/snes9x/snes9x-gtk.rst91
-rw-r--r--games/snes9x/snes9x.689
-rw-r--r--games/snes9x/snes9x.SlackBuild238
-rw-r--r--games/snes9x/snes9x.info16
-rw-r--r--games/snes9x/snes9x.rst78
-rw-r--r--games/snes9x/snes9x_libretro.info.txt (renamed from games/snes9x/snes9x_libretro-info)0
14 files changed, 578 insertions, 470 deletions
diff --git a/games/snes9x/ChangeLog.old b/games/snes9x/ChangeLog.old
new file mode 100644
index 0000000000..48518fd463
--- /dev/null
+++ b/games/snes9x/ChangeLog.old
@@ -0,0 +1,71 @@
+# 20220622 bkw, BUILD=2:
+# - strip binary (whoops).
+# - remove mention of retroarch support from README, it FTBFS.
+# sooner or later I'll fix it or remove it entirely.
+# Note: I tried snes9x 1.61 on Slackware 15.0 with all updates, and
+# it still crashes as described below. Also tried latest post-1.61 git
+# and it has the same problem. So staying with 1.59 for now, sorry.
+
+# 20211014 bkw: *downgrade* to 1.59, for now at least. 1.60 crashes
+# immediately if built with gtk+2 and started with a ROM filename.
+# If you pick a ROM from within the app, it'll work sometimes, but
+# sometimes it'll crash. When build with gtk+3, it crashes any time
+# you try to open the Preferences dialog while a ROM is loaded. I
+# also tried the latest git, it acts the same as 1.60 (except that it
+# can't be built with gtk+2 any more). I can't get 1.59 to crash, so
+# that's what I'm packaging. I don't know if the issues with 1.60 are
+# something to do with -current (something that might be fixed before
+# 15.0 releases) or something broken upstream. If you're reading this
+# after Slackware 15.0 has been released, please remind me to look
+# into it again.
+
+# 20191126 bkw: update for 1.60. Upstream has switched from autotools
+# to meson for the build system, so this script can no longer build
+# old versions.
+
+# 20181201 bkw:
+# - update for 1.57.
+# - disable OSS audio by default, add OSS=yes option.
+# - autodetect RetroArch, add RETROARCH=yes|no option.
+# - document the above in the README.
+# - document PULSE=no in README.
+# - stop including snes9x.conf.default in the docdir, since it's
+# outdated and will cause snes9x to segfault if you try to use it!
+# - since we now have 3 build options, make slack-desc show them.
+# - add patch from upstream to speed up linking the libretro core if
+# -jX is in MAKEFLAGS.
+# - add patch fro upstream to stop segfaulting if the config file is
+# missing the ScanlineIntensity variable. Means I can finaly remove
+# the "you should delete your old config file" from the README.
+
+# 20180730 bkw:
+# - BUILD=2.
+# - add libretro/RetroArch, thanks to orbea.
+# - add --without-portaudio to configure args. snes9x runs about
+# 1 frame/sec if I start it up with the sound driver set to portaudio,
+# and I've gotten a report of it blasting high-volume white noise
+# thru the speakers if you switch to portaudio while a ROM is already
+# running. I can't see any reason to use it in favor of pulse, alsa,
+# oss, or sdl audio.
+# - don't extract windows, mac, old-school unix stuff from tarball.
+# uses 50% less $TMP space.
+
+# 20180623 bkw: update for 1.56.2.
+# 20180611 bkw:
+# - update for 1.56.1.
+# - switch the UI from gtk3 to gtk2, as 14.2's gtk3 is too old.
+# - add undocumented PULSE=no build option (in anticipation of 15.0's
+# pure-alsa-system).
+# - add SDL2 to REQUIRES. technically, it's not truly required: snes9x
+# only uses SDL2 to support joysticks. playing with the keyboard/mouse
+# would still work without it. 15.0 is coming soon, and will have SDL2
+# in the core OS, so don't bother me about this decision.
+# - update README, the snes9x_gtk build went away in 2010, no need to
+# mention it now. also add notes about upgrading from 1.55.
+# 20171221 bkw: use --without-system-zip to build bundled unzip, instead
+# of adding minizip as a dependency.
+# 20171213 bkw: update for 1.55.
+# 20170302 bkw: use long-format github URL
+# 20161015 bkw: update for 1.54.1. script has changed enough that it
+# can't build 1.53 any more.
+
diff --git a/games/snes9x/README b/games/snes9x/README
index 7583521398..7685488ec1 100644
--- a/games/snes9x/README
+++ b/games/snes9x/README
@@ -1,20 +1,27 @@
snes9x (Super Nintendo Entertainment System emulator)
-Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
-emulator. It basically allows you to play most games designed for the SNES
-and Super Famicom Nintendo game systems on your PC or Workstation. The
-games include some real gems that were only ever released in Japan.
+Snes9x is a portable, freeware Super Nintendo Entertainment System
+(SNES) emulator. It basically allows you to play most games designed
+for the SNES and Super Famicom Nintendo game systems on your PC or
+Workstation. The games include some real gems that were only ever
+released in Japan.
-When you first run snes9x:
+This package includes both snes9x (the command-line build) and
+snes9x-gtk (with graphical user interface).
-- The first thing you'll want to do is configure the controls. By default
- there are *no* controls set up; you'll be unable to play any games! The
- config is under Options -> Preferences, in the Joypads tab. You can
- configure either keyboard or joystick/gamepad controls, but not both.
+When you first run snes9x-gtk:
-- If the game audio is choppy or distorted, try setting the sound driver
- to Pulse or ALSA (Options -> Preferences -> Sound tab). Specifically,
- avoid SDL audio (unfortunately it's the default if PULSE=no).
+- The first thing you'll want to do is configure the controls. By
+ default there are *no* controls set up; you'll be unable to play any
+ games! The config is under Options -> Preferences, in the Joypads
+ tab. You can configure either keyboard or joystick/gamepad controls,
+ but not both.
+
+- If the game audio is choppy or distorted, try setting the
+ sound driver to Pulse or ALSA (Options -> Preferences -> Sound
+ tab). Specifically, avoid SDL audio. PortAudio support may be
+ included (it's an optional dependency), but so far as I can tell,
+ offers no advantage.
Notes:
@@ -23,15 +30,19 @@ Notes:
installed. You can set RETROARCH=yes to force the core to be built,
or RETROARCH=no to forcibly disable the core. Note that RetroArch
doesn't have to be installed to build the libretro core, but it's
- useless without RetroArch installed.
-
-- Starting with 1.56.1, you might notice some user interface
- differences. This is because 1.55 used GTK+-3.0, but 1.56 and newer
- require a version of GTK+-3.0 that's newer than Slackware 14.2
- provides. So, starting with 1.56, this build uses the GTK+-2.0 UI.
-
-- Starting with 1.57, OSS audio is disabled by default. Most users
- won't be affected, since pulseaudio is now the default audio system on
- Slackware, and ALSA is the fallback option. If you *need* OSS support,
- set OSS=yes in the script's environment. You may also disable PulseAudio
- by setting PULSE=no in the environment.
+ useless without RetroArch installed. Also note: the libretro core
+ builds, but has not been tested by the SlackBuild author. If it
+ works for you, let me know so I can update this README.
+
+- OSS audio is disabled by default. Most users won't be affected,
+ since PulseAudio is now the default audio system on Slackware, and
+ ALSA is the fallback option. If you *need* OSS support, set OSS=yes
+ in the script's environment.
+
+- PulseAudio is enabled by default. You can disable it with PULSE=no
+ in the environment.
+
+- portaudio is an optional dependency. It's autodetected at build time,
+ but you can disable it with PORTAUDIO=no in the environment. I have
+ no idea why anyone would want to built snes9x with portaudio, but
+ do whatever you decide to do.
diff --git a/games/snes9x/README_docs.txt b/games/snes9x/README_docs.txt
deleted file mode 100644
index 35702296fd..0000000000
--- a/games/snes9x/README_docs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory contains the documentation for the original snes9x (the
-non-GTK+ version). Not all of the information here applies to snes9x_gtk,
-but some of it may still be useful... and the various licenses still
-apply.
diff --git a/games/snes9x/fix_config_file_segfaults.diff b/games/snes9x/fix_config_file_segfaults.diff
deleted file mode 100644
index b67f14befd..0000000000
--- a/games/snes9x/fix_config_file_segfaults.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/gtk/src/gtk_config.cpp b/gtk/src/gtk_config.cpp
-index bf06de7..1ccd4f2 100644
---- a/gtk/src/gtk_config.cpp
-+++ b/gtk/src/gtk_config.cpp
-@@ -463,9 +463,9 @@ int Snes9xConfig::load_config_file ()
- return -1;
-
- std::string none;
--#define inbool(key, var) var = cf.GetBool (key)
--#define inint(key, var) var = cf.GetInt (key)
--#define infloat(key, var) var = atof (cf.GetString (key, none).c_str())
-+#define inbool(key, var) { if (cf.Exists (key)) var = cf.GetBool (key); }
-+#define inint(key, var) { if (cf.Exists(key)) var = cf.GetInt (key); }
-+#define infloat(key, var) { if (cf.Exists(key)) var = atof (cf.GetString (key, none).c_str()); }
- #define instr(key, var) strcpy (var, cf.GetString (key, none).c_str())
-
- #undef z
-@@ -683,8 +683,8 @@ int Snes9xConfig::load_config_file ()
- hires_effect = CLAMP (hires_effect, 0, 2);
- Settings.DynamicRateLimit = CLAMP (Settings.DynamicRateLimit, 1, 1000);
- Settings.SuperFXClockMultiplier = CLAMP (Settings.SuperFXClockMultiplier, 50, 400);
-- ntsc_scanline_intensity = MAX (ntsc_scanline_intensity, 4);
-- scanline_filter_intensity = MAX (scanline_filter_intensity, 3);
-+ ntsc_scanline_intensity = CLAMP (ntsc_scanline_intensity, 0, 4);
-+ scanline_filter_intensity = CLAMP (scanline_filter_intensity, 0, 3);
-
- return 0;
- }
diff --git a/games/snes9x/libretro.diff b/games/snes9x/libretro.diff
deleted file mode 100644
index 8808654ed8..0000000000
--- a/games/snes9x/libretro.diff
+++ /dev/null
@@ -1,104 +0,0 @@
-From abb4b4c39f75716c4e29017005996da9b3ad4d12 Mon Sep 17 00:00:00 2001
-From: Brandon Wright <bearoso@gmail.com>
-Date: Sat, 28 Jul 2018 15:59:15 -0500
-Subject: [PATCH] Use Snes9x aliases instead of stdint types here.
-
----
- apu/apu.cpp | 38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/apu/apu.cpp b/apu/apu.cpp
-index 50dec00f..63a35392 100644
---- a/apu/apu.cpp
-+++ b/apu/apu.cpp
-@@ -783,7 +783,7 @@ static void to_var_from_buf (uint8 **buf, void *var, size_t size)
- }
-
- #undef IF_0_THEN_256
--#define IF_0_THEN_256( n ) ((uint8_t) ((n) - 1) + 1)
-+#define IF_0_THEN_256( n ) ((uint8) ((n) - 1) + 1)
- void S9xAPULoadBlarggState(uint8 *oldblock)
- {
- uint8 *ptr = oldblock;
-@@ -792,26 +792,26 @@ void S9xAPULoadBlarggState(uint8 *oldblock)
-
- copier.copy(SNES::smp.apuram,0x10000); // RAM
-
-- uint8_t regs_in [0x10];
-- uint8_t regs [0x10];
-- uint16_t pc, spc_time, dsp_time;
-- uint8_t a,x,y,psw,sp;
-+ uint8 regs_in [0x10];
-+ uint8 regs [0x10];
-+ uint16 pc, spc_time, dsp_time;
-+ uint8 a,x,y,psw,sp;
-
- copier.copy(regs,0x10); // REGS
- copier.copy(regs_in,0x10); // REGS_IN
-
- // CPU Regs
-- pc = copier.copy_int( 0, sizeof(uint16_t) );
-- a = copier.copy_int( 0, sizeof(uint8_t) );
-- x = copier.copy_int( 0, sizeof(uint8_t) );
-- y = copier.copy_int( 0, sizeof(uint8_t) );
-- psw = copier.copy_int( 0, sizeof(uint8_t) );
-- sp = copier.copy_int( 0, sizeof(uint8_t) );
-+ pc = copier.copy_int( 0, sizeof(uint16) );
-+ a = copier.copy_int( 0, sizeof(uint8) );
-+ x = copier.copy_int( 0, sizeof(uint8) );
-+ y = copier.copy_int( 0, sizeof(uint8) );
-+ psw = copier.copy_int( 0, sizeof(uint8) );
-+ sp = copier.copy_int( 0, sizeof(uint8) );
- copier.extra();
-
- // times
-- spc_time = copier.copy_int( 0, sizeof(uint16_t) );
-- dsp_time = copier.copy_int( 0, sizeof(uint16_t) );
-+ spc_time = copier.copy_int( 0, sizeof(uint16) );
-+ dsp_time = copier.copy_int( 0, sizeof(uint16) );
-
- int cur_time = S9xAPUGetClock(CPU.Cycles);
-
-@@ -824,14 +824,14 @@ void S9xAPULoadBlarggState(uint8 *oldblock)
- SNES::dsp.load_state(&ptr);
-
- // Timers
-- uint16_t next_time[3];
-- uint8_t divider[3], counter[3];
-+ uint16 next_time[3];
-+ uint8 divider[3], counter[3];
- for ( int i = 0; i < 3; i++ )
- {
-- next_time[i] = copier.copy_int( 0, sizeof(uint16_t) );
-- divider[i] = copier.copy_int( 0, sizeof(uint8_t) );
-- counter[i] = copier.copy_int( 0, sizeof(uint8_t) );
-- copier.extra();
-+ next_time[i] = copier.copy_int( 0, sizeof(uint16) );
-+ divider[i] = copier.copy_int( 0, sizeof(uint8) );
-+ counter[i] = copier.copy_int( 0, sizeof(uint8) );
-+ copier.extra();
- }
- // construct timers out of available parts from blargg smp
- SNES::smp.timer0.enable = regs[1] >> 0 & 1; // regs[1] = CONTROL
-From a77b3b379b06e5e09723f65b63c9a045c71c3030 Mon Sep 17 00:00:00 2001
-From: orbea <orbea@fredslev.dk>
-Date: Sat, 28 Jul 2018 15:48:08 -0700
-Subject: [PATCH] One moreSnes9x alias instead of stdint type.
-
----
- spc7110dec.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/spc7110dec.cpp b/spc7110dec.cpp
-index 6cc28670..ab7521b3 100644
---- a/spc7110dec.cpp
-+++ b/spc7110dec.cpp
-@@ -498,7 +498,7 @@ void SPC7110Decomp::reset() {
- }
-
- SPC7110Decomp::SPC7110Decomp() {
-- decomp_buffer = new uint8_t[decomp_buffer_size];
-+ decomp_buffer = new uint8[decomp_buffer_size];
- reset();
-
- //initialize reverse morton lookup tables
diff --git a/games/snes9x/libretro_lto_variable.diff b/games/snes9x/libretro_lto_variable.diff
deleted file mode 100644
index d2f0f5a4e8..0000000000
--- a/games/snes9x/libretro_lto_variable.diff
+++ /dev/null
@@ -1,112 +0,0 @@
-diff --git a/libretro/Makefile b/libretro/Makefile
-index c0311b1..dd55ffd 100644
---- a/libretro/Makefile
-+++ b/libretro/Makefile
-@@ -2,6 +2,7 @@ DEBUG = 0
- HAVE_EXCEPTIONS = 0
- HAVE_STRINGS_H = 1
-
-+LTO ?= -flto
- SPACE :=
- SPACE := $(SPACE) $(SPACE)
- BACKSLASH :=
-@@ -45,9 +46,9 @@ endif
-
- # Unix
- ifneq (,$(findstring unix,$(platform)))
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro.so
- fpic := -fPIC
- ifneq ($(findstring SunOS,$(shell uname -a)),)
-@@ -70,9 +71,9 @@ ifneq (,$(findstring unix,$(platform)))
-
- # OS X
- else ifeq ($(platform), osx)
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro.dylib
- fpic := -fPIC
- SHARED := -dynamiclib
-@@ -102,9 +103,9 @@ else ifeq ($(platform), libnx)
-
- # iOS
- else ifneq (,$(findstring ios,$(platform)))
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro_ios.dylib
- fpic := -fPIC
- SHARED := -dynamiclib
-@@ -134,9 +135,9 @@ else ifneq (,$(findstring ios,$(platform)))
-
- # Theos
- else ifeq ($(platform), theos_ios)
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- DEPLOYMENT_IOSVERSION = 5.0
- TARGET = iphone:latest:$(DEPLOYMENT_IOSVERSION)
- ARCHS = armv7 armv7s
-@@ -159,9 +160,9 @@ else ifeq ($(platform), qnx)
-
- # Vita
- else ifeq ($(platform), vita)
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro_$(platform).so
- fpic := -fPIC
- CC = arm-vita-eabi-gcc$(EXE_EXT)
-@@ -199,9 +200,9 @@ else ifneq (,$(filter $(platform), ps3 sncps3 psl1ght))
-
- # Xbox 360
- else ifeq ($(platform), xenon)
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro_xenon360.a
- CC = xenon-gcc$(EXE_EXT)
- CXX = xenon-g++$(EXE_EXT)
-@@ -465,9 +466,9 @@ CFLAGS += -D_CRT_SECURE_NO_DEPRECATE
- CXXFLAGS += -D_CRT_SECURE_NO_DEPRECATE
- # Windows
- else
-- CFLAGS += -flto
-- CXXFLAGS += -flto
-- LDFLAGS += -flto
-+ CFLAGS += $(LTO)
-+ CXXFLAGS += $(LTO)
-+ LDFLAGS += $(LTO)
- TARGET := $(TARGET_NAME)_libretro.dll
- CC = gcc
- CXX = g++
-@@ -569,7 +570,7 @@ $(TARGET): $(OBJECTS)
- ifeq ($(STATIC_LINKING), 1)
- $(AR) rcs $@ $(OBJECTS)
- else
-- $(LD) $(fpic) $(SHARED) $(LINKOUT)$@ $(OBJECTS) $(LDFLAGS) $(LIBS)
-+ +$(LD) $(fpic) $(SHARED) $(LINKOUT)$@ $(OBJECTS) $(LDFLAGS) $(LIBS)
- endif
-
- %.o: %.cpp
diff --git a/games/snes9x/slack-desc b/games/snes9x/slack-desc
index d08f491b0f..2860fe1f36 100644
--- a/games/snes9x/slack-desc
+++ b/games/snes9x/slack-desc
@@ -14,6 +14,6 @@ snes9x: for the SNES and Super Famicom Nintendo game systems on your PC or
snes9x: Workstation. The games include some real gems that were only ever
snes9x: released in Japan.
snes9x:
-snes9x: Build options: PULSE=@WITHPULSE@ OSS=@WITHOSS@ RETROARCH=@build_ra@
-snes9x:
+snes9x: Build options:
+snes9x: PULSE=@PU@ OSS=@OSS@ RETROARCH=@RA@ PORTAUDIO=@PA@
snes9x:
diff --git a/games/snes9x/snes9x-gtk.6 b/games/snes9x/snes9x-gtk.6
index 2dc3f1fa4a..6b9e9413ca 100644
--- a/games/snes9x/snes9x-gtk.6
+++ b/games/snes9x/snes9x-gtk.6
@@ -1,70 +1,104 @@
-.TH SNES9X-GTK 6 "22 OCT 2009" "SlackBuilds.org Project" "Slackware Linux"
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "SNES9X-GTK" 6 "2023-04-10" "1.62.3" "SlackBuilds.org"
.SH NAME
snes9x-gtk \- Super Nintendo Entertainment System emulator
+.\" RST source for snes9x-gtk(1) man page. Convert with:
+.
+.\" rst2man.py snes9x-gtk.rst > snes9x-gtk.6
+.
.SH SYNOPSIS
-.B snes9x\-gtk
-[\-filter \fItype\fR]
-[\-mutesound]
-[\fIrom\-file]
+.sp
+\fBsnes9x\-gtk\fP [\fB\-filter\fP \fItype\fP] [\fB\-mutesound\fP] [\fBrom\-file\fP]
.SH DESCRIPTION
-Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
-emulator. It basically allows you to play most games designed for the SNES
-and Super Famicom Nintendo game systems on your PC or Workstation; they
-include some real gems that were only ever released in Japan.
-.PP
-.B snes9x\-gtk
-is an unofficial port of Snes9x with a GTK+ graphical frontend.
-.PP
-With no ROM file argument, snes9x\-gtk will start its graphical user interface.
-When a ROM file is named on the command line, snes9x\-gtk will start
-emulation immediately.
-.PP
-Unlike the original snes9x, snes9x\-gtk doesn't extensively use command\-line
-options to affect its behaviour. Instead, use the GUI and/or keyboard
-shortcuts from within the emulator.
-.SS OPTIONS
+.sp
+Snes9x is a portable, freeware Super Nintendo Entertainment
+System (SNES) emulator. It basically allows you to play most games
+designed for the SNES and Super Famicom Nintendo game systems
+on your PC or Workstation; they include some real gems that were only
+ever released in Japan.
+.sp
+\fBsnes9x\-gtk\fP is an unofficial port of Snes9x with a GTK+ graphical front‐end.
+.sp
+With no ROM file argument, \fBsnes9x\-gtk\fP will start its graphical user
+interface. When a ROM file is named on the command line, snes9x\-gtk
+will start emulation immediately.
+.sp
+Unlike the original snes9x, \fBsnes9x\-gtk\fP doesn\(aqt extensively use
+command\-line options to affect its behaviour. Instead, use the GUI
+and/or keyboard shortcuts from within the emulator.
+.SH OPTIONS
+.INDENT 0.0
.TP
-\fB\-filter\fR \fItype\fR
+.B \fB\-filter\fP \fItype\fP
Use a filter to scale the video. Filter types are:
-.br
-.nh
-.I none
-.I supereagle
-.I 2xsai
-.I super2xsai
-.I hq2x
-.I hq3x
-.I hq4x
-.I epx
-.I ntsc
-.hy
-.PP
-The \-filter option does the same thing as the GUI's "Apply Scaling Filter"
-selection (under Preferences / Display).
+.INDENT 7.0
+.INDENT 3.5
+\fInone\fP \fIsupereagle\fP \fI2xsai\fP \fIsuper2xsai\fP \fIhq2x\fP \fIhq3x\fP \fIhq4x\fP \fIepx\fP \fIntsc\fP
+.UNINDENT
+.UNINDENT
+.sp
+The \-filter option does the same thing as the GUI\(aqs "Apply Scaling
+Filter" selection (under Preferences / Display).
.TP
-.B \-mutesound
+.B \fB\-mutesound\fP
Disable audio output. The sound CPU is still emulated. Note that this
option will enable the "mute sound?" checkbox in the Preferences user
-interface, whose value will be saved across sessions (you must use the GUI to
-unmute the audio).
+interface, whose value will be saved across sessions (you must use
+the GUI to unmute the audio).
+.UNINDENT
.SH FILES
-.B ~/.snes9x/snes9x.xml
-.br
-Configuration file. Not intended to be edited directly; stores the settings
-made in the GUI. To return all settings to their defaults, remove this file.
-.PP
-.B ~/.snes9x/snapshots/*
-.br
-Saved states, named after ROM filenames.
-.PP
-.B ~/.snes9x/*.png
-.br
-Screenshots, named after ROM filenames.
-.SH AUTHOR
-snes9x\-gtk was ported by Brandon Wright <bearoso@gmail.com>.
-.PP
-Snes9x was written by Gary Henderson and Jerremy Koot. It also includes code
-from Ivar (Ivar@snes9x.com), zsKnight and _Demo_ and many others.
-.PP
-This manual page was written by B. Watson
-for the SlackBuilds.org project (but may be used by others).
+.INDENT 0.0
+.TP
+.B \fB~/.config/snes9x/snes9x.conf\fP
+Configuration file. Not intended to be edited directly; stores the
+settings made in the GUI. To return all settings to their defaults,
+remove this file.
+.UNINDENT
+.sp
+Note that the graphical \fBsnes9x\-gtk\fP does not share config files or
+directories with command\-line \fBsnes9x\fP\&.
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/snes9x\-1.62.3/LICENSE for license information.
+.SH AUTHORS
+.sp
+snes9x\-gtk was ported by Brandon Wright <\fI\%bearoso@gmail.com\fP>.
+.sp
+Snes9x was written by Gary Henderson and Jerremy Koot. It also includes
+code from Ivar (\fI\%Ivar@snes9x.com\fP), zsKnight, _Demo_, and many others.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+\fBsnes9x\fP(6)
+.\" Generated by docutils manpage writer.
+.
diff --git a/games/snes9x/snes9x-gtk.rst b/games/snes9x/snes9x-gtk.rst
new file mode 100644
index 0000000000..0434a67ee1
--- /dev/null
+++ b/games/snes9x/snes9x-gtk.rst
@@ -0,0 +1,91 @@
+.. RST source for snes9x-gtk(1) man page. Convert with:
+.. rst2man.py snes9x-gtk.rst > snes9x-gtk.6
+
+.. |version| replace:: 1.62.3
+.. |date| date::
+
+==========
+snes9x-gtk
+==========
+
+--------------------------------------------
+Super Nintendo Entertainment System emulator
+--------------------------------------------
+
+:Manual section: 6
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+**snes9x-gtk** [**-filter** *type*] [**-mutesound**] [**rom-file**]
+
+DESCRIPTION
+===========
+
+Snes9x is a portable, freeware Super Nintendo Entertainment
+System (SNES) emulator. It basically allows you to play most games
+designed for the SNES and Super Famicom Nintendo game systems
+on your PC or Workstation; they include some real gems that were only
+ever released in Japan.
+
+**snes9x-gtk** is an unofficial port of Snes9x with a GTK+ graphical front‐end.
+
+With no ROM file argument, **snes9x-gtk** will start its graphical user
+interface. When a ROM file is named on the command line, snes9x-gtk
+will start emulation immediately.
+
+Unlike the original snes9x, **snes9x-gtk** doesn't extensively use
+command-line options to affect its behaviour. Instead, use the GUI
+and/or keyboard shortcuts from within the emulator.
+
+OPTIONS
+=======
+
+**-filter** *type*
+ Use a filter to scale the video. Filter types are:
+
+ *none* *supereagle* *2xsai* *super2xsai* *hq2x* *hq3x* *hq4x* *epx* *ntsc*
+
+ The -filter option does the same thing as the GUI's "Apply Scaling
+ Filter" selection (under Preferences / Display).
+
+**-mutesound**
+ Disable audio output. The sound CPU is still emulated. Note that this
+ option will enable the "mute sound?" checkbox in the Preferences user
+ interface, whose value will be saved across sessions (you must use
+ the GUI to unmute the audio).
+
+FILES
+=====
+
+**~/.config/snes9x/snes9x.conf**
+ Configuration file. Not intended to be edited directly; stores the
+ settings made in the GUI. To return all settings to their defaults,
+ remove this file.
+
+Note that the graphical **snes9x-gtk** does not share config files or
+directories with command-line **snes9x**\.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/snes9x-|version|/LICENSE for license information.
+
+AUTHORS
+=======
+
+snes9x-gtk was ported by Brandon Wright <bearoso@gmail.com>.
+
+Snes9x was written by Gary Henderson and Jerremy Koot. It also includes
+code from Ivar (Ivar@snes9x.com), zsKnight, _Demo_, and many others.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+**snes9x**\(6)
diff --git a/games/snes9x/snes9x.6 b/games/snes9x/snes9x.6
new file mode 100644
index 0000000000..d5d21a31f5
--- /dev/null
+++ b/games/snes9x/snes9x.6
@@ -0,0 +1,89 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "SNES9X" 6 "2023-04-10" "1.62.3" "SlackBuilds.org"
+.SH NAME
+snes9x \- Super Nintendo Entertainment System emulator
+.\" RST source for snes9x(6) man page. Convert with:
+.
+.\" rst2man.py snes9x.rst > snes9x.6
+.
+.SH SYNOPSIS
+.sp
+\fBsnes9x\fP [\fIoptions\fP] \fBrom\-file\fP
+.SH DESCRIPTION
+.sp
+Snes9x is a portable, freeware Super Nintendo Entertainment
+System (SNES) emulator. It basically allows you to play most games
+designed for the SNES and Super Famicom Nintendo game systems
+on your PC or Workstation; they include some real gems that were only
+ever released in Japan.
+.sp
+For the full documentation, see:
+.INDENT 0.0
+.INDENT 3.5
+/usr/doc/snes9x\-1.62.3/readme_unix.html
+.UNINDENT
+.UNINDENT
+.sp
+This is the command\-line build of \fBsnes9x\fP\&. For the GUI version,
+see \fBsnes9x\-gtk\fP(6).
+.SH OPTIONS
+.sp
+This man page doesn\(aqt include a list of options. Run \fBsnes9x\fP with
+no arguments (or with \fB\-\-help\fP) to see them.
+.SH FILES
+.INDENT 0.0
+.TP
+.B \fB~/.snes9x/snes9x.conf\fP
+The config file. \fBsnes9x\fP doesn\(aqt create this; the default config
+file is found in /usr/doc/snes9x\-1.62.3/snes9x.conf.default and
+must be copied to ~/.snes9x/snes9x.conf manually.
+.UNINDENT
+.sp
+The directory \fB~/.snes9x/\fP also contains subdirectories for savestates,
+screenshots, sram, etc. These are populated by \fBsnes9x\fP as needed.
+.sp
+Note that the graphical \fBsnes9x\-gtk\fP does not share config files or
+directories with command\-line \fBsnes9x\fP\&.
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/snes9x\-1.62.3/LICENSE for license information.
+.SH AUTHORS
+.sp
+Snes9x was written by Gary Henderson and Jerremy Koot. It also includes
+code from Ivar (\fI\%Ivar@snes9x.com\fP), zsKnight, _Demo_, and many others.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+\fBsnes9x\-gtk\fP(6)
+.\" Generated by docutils manpage writer.
+.
diff --git a/games/snes9x/snes9x.SlackBuild b/games/snes9x/snes9x.SlackBuild
index c00c1ce2b3..ad26551806 100644
--- a/games/snes9x/snes9x.SlackBuild
+++ b/games/snes9x/snes9x.SlackBuild
@@ -1,61 +1,31 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for snes9x
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
-# 20181201 bkw:
-# - update for 1.57.
-# - disable OSS audio by default, add OSS=yes option.
-# - autodetect RetroArch, add RETROARCH=yes|no option.
-# - document the above in the README.
-# - document PULSE=no io README.
-# - stop including snes9x.conf.default in the docdir, since it's
-# outdated and will cause snes9x to segfault if you try to use it!
-# - since we now have 3 build options, make slack-desc show them.
-# - add patch from upstream to speed up linking the libretro core if
-# -jX is in MAKEFLAGS.
-# - add patch fro upstream to stop segfaulting if the config file is
-# missing the ScanlineIntensity variable. Means I can finaly remove
-# the "you should delete your old config file" from the README.
-
-# 20180730 bkw:
-# - BUILD=2.
-# - add libretro/RetroArch, thanks to orbea.
-# - add --without-portaudio to configure args. snes9x runs about
-# 1 frame/sec if I start it up with the sound driver set to portaudio,
-# and I've gotten a report of it blasting high-volume white noise
-# thru the speakers if you switch to portaudio while a ROM is already
-# running. I can't see any reason to use it in favor of pulse, alsa,
-# oss, or sdl audio.
-# - don't extract windows, mac, old-school unix stuff from tarball.
-# uses 50% less $TMP space.
-
-# 20180623 bkw: update for 1.56.2.
-# 20180611 bkw:
-# - update for 1.56.1.
-# - switch the UI from gtk3 to gtk2, as 14.2's gtk3 is too old.
-# - add undocumented PULSE=no build option (in anticipation of 15.0's
-# pure-alsa-system).
-# - add SDL2 to REQUIRES. technically, it's not truly required: snes9x
-# only uses SDL2 to support joysticks. playing with the keyboard/mouse
-# would still work without it. 15.0 is coming soon, and will have SDL2
-# in the core OS, so don't bother me about this decision.
-# - update README, the snes9x_gtk build went away in 2010, no need to
-# mention it now. also add notes about upgrading from 1.55.
-# 20171221 bkw: use --without-system-zip to build bundled unzip, instead
-# of adding minizip as a dependency.
-# 20171213 bkw: update for 1.55.
-# 20170302 bkw: use long-format github URL
-# 20161015 bkw: update for 1.54.1. script has changed enough that it
-# can't build 1.53 any more.
+# 20230418 bkw: BUILD=2, make portaudio optional + autodetected.
+# 20230410 bkw: update for 1.62.3.
+# Most of the work needed for this update was done by M.Dinslage,
+# to whom I owe thanks. I updated the man page, and added the
+# non-GUI binary plus a man page for it.
+
+# For older change-comments, see ChangeLog.old (it was getting too long
+# to keep in the script).
+
+cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=snes9x
-VERSION=${VERSION:-1.57}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-1.62.3}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+SPIRVVER="2021-01-15"
+VULKVER="1.3.246"
+GLSLANGVER="12.1.0"
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -65,11 +35,17 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
+# Note: the flags we set here are followed by -O3, meaning the
+# -O2 does nothing. *shrug*
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -90,83 +66,70 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-# Don't extract the stuff we don't need, this saves 7.9MB in $TMP.
+# Don't extract the stuff we don't need, this saves a few MB in $TMP.
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz \
- --wildcards --exclude '*/win32/*' \
- --exclude '*/macosx/*' --exclude '*/unix/*'
+ --wildcards \
+ --exclude '*/win32/*' \
+ --exclude '*/macosx/*'
cd $PRGNAM-$VERSION
+
+tar xvf $CWD/glslang-$GLSLANGVER.tar.gz \
+ -C external/glslang --strip-components=1
+tar xvf $CWD/SPIRV-Cross-$SPIRVVER.tar.gz \
+ -C external/SPIRV-Cross --strip-components=1
+tar xvf $CWD/Vulkan-Headers-$VULKVER.tar.gz \
+ -C external/vulkan-headers --strip-components=1
+
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-# Various patches, depending on the version we're building. Currently
-# this script should work with 1.56.2 and 1.57. Anything older and you're
-# on your own.
-
-# For 1.56.2, libretro.diff fixes the libretro build, it's upstream's
-# commits abb4b4c39 and a77b3b379b. Already included in 1.57.
-
-# For 1.57 (and 1.56.2 I hope), fix_config_file_segfaults.diff is
-# upstream's commit 5e9f068. libretro_lto_variable is 21d6275 (thanks
-# to orbea for coding this one & sending it upstream, based on my vague
-# idea). Future 1.57.x or 1.58 will include these already.
-
-# At some point, this set of cases will be too complex for me to want to
-# maintain & test it, and it'll go away (this script will only support
-# the latest version, whatever that happens to be).
-
-case "$VERSION" in
- 1.5[0-5]*|1.[0-4]*) ;; # doubt these build anyway
- 1.56.2) PATCHES="libretro" ;;
- 1.57) PATCHES="fix_config_file_segfaults libretro_lto_variable";;
- *) ;;
-esac
-
-[ -n "$PATCHES" ] && for p in $PATCHES; do
- [ -e "$CWD/$p.diff" ] && patch -p1 < "$CWD/$p.diff"
-done
-
-cd gtk
-./autogen.sh
-
WITHPULSE=yes
if [ "$PULSE" = "no" ] || ! pkg-config --exists libpulse; then
- PULSEOPT="--without-pulseaudio"
+ PULSEOPT="-DUSE_PULSEAUDIO=OFF"
WITHPULSE=no
fi
WITHOSS=yes
if [ "${OSS:-no}" = "no" ]; then
- OSSOPT="--without-oss"
+ OSSOPT="-DUSE_OSS=OFF"
WITHOSS=no
fi
-CFLAGS="-g $SLKCFLAGS" \
-CXXFLAGS="-g $SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --bindir=/usr/games \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --with-netplay \
- --without-system-zip \
- --with-gtk2 \
- --without-gtk3 \
- --without-portaudio \
- $PULSEOPT \
- $OSSOPT \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+WITH_PA=no
+PA_OPT="-DUSE_PORTAUDIO=OFF"
+if pkg-config --exists portaudio-2.0 && [ "${PORTAUDIO:-yes}" = "yes" ]; then
+ WITH_PA=yes
+ PA_OPT="-DUSE_PORTAUDIO=ON"
+fi
+
+SLKCFLAGS+=" -DNDEBUG"
+mkdir -p gtk/build
+cd gtk/build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_BINDIR=games \
+ $PULSEOPT $OSSOPT $PA_OPT \
+ -DCMAKE_INSTALL_DATAROOTDIR=share \
+ -DUSE_SYSTEMZIP=OFF \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make VERBOSE=1
+ make install/strip DESTDIR=$PKG
+cd -
+
+# 20230410 bkw: Insidious weirdness: The bitmap icons all look the
+# same, but the .svg icon looks completely different. Just get rid
+# of it; we have the bitmap icons at every size we could want.
+rm -rf $PKG/usr/share/icons/hicolor/scalable
# RetroArch support, contributed by orbea (Hunter Sezen).
# Note that the source here is self-contained, there's no build-time
# dependency on RetroArch or libretro or such.
# snes9x_libretro-info originally came from:
# https://raw.githubusercontent.com/libretro/libretro-super/383f18fd7c36ffd5fe76ebac58e9e596dde67e66/dist/info/snes9x_libretro.info
-# Renamed .info => -info to avoid confusing SBo tools that deal with
+# Renamed .info => .info.txt to avoid confusing SBo tools that deal with
# SBo's .info files.
# 20181201 bkw: made this optional, auto-detected, and controllable
# via environment. It makes the build take 7x as long, no point wasting
@@ -185,47 +148,60 @@ esac
if [ "$build_ra" = "yes" ]; then
echo "=== Building libretro core"
( LIBNAM=${PRGNAM}_libretro
- cd ../libretro
+ PKGLIB=$PKG/usr/lib$LIBDIRSUFFIX
+ cd libretro
make LTO="-flto=jobserver"
- install -sDm0755 $LIBNAM.so $PKG/usr/lib${LIBDIRSUFFIX}/libretro/$LIBNAM.so
- install -Dm0644 $CWD/$LIBNAM-info \
- $PKG/usr/lib${LIBDIRSUFFIX}/libretro/info/$LIBNAM.info
+ install -sDm0755 $LIBNAM.so $PKGLIB/libretro/$LIBNAM.so
+ install -Dm0644 -o root -g root $CWD/$LIBNAM.info.txt \
+ $PKGLIB/libretro/info/$LIBNAM.info
)
else
echo "=== NOT building libretro core"
fi
+# Go ahead and include the non-gui binary. Note that it doesn't
+# support OSS or Pulse (only ALSA), so the OSS and PULSE environment
+# vars don't affect it.
+cd unix
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ ./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-gamepad \
+ --enable-gzip \
+ --enable-screenshot \
+ --enable-zip \
+ --without-system-zip \
+ --build=$ARCH-slackware-linux
+ make
+cd -
+
+# No 'make install' target.
+install -s -m0755 unix/snes9x $PKG/usr/games/snes9x
+
+# Man pages written by SlackBuild author.
mkdir -p $PKG/usr/man/man6
gzip -9c $CWD/snes9x-gtk.6 > $PKG/usr/man/man6/snes9x-gtk.6.gz
-ln -s $PRGNAM-gtk.6.gz $PKG/usr/man/man6/$PRGNAM.6.gz
-ln -s $PRGNAM-gtk $PKG/usr/games/$PRGNAM
+gzip -9c $CWD/snes9x.6 > $PKG/usr/man/man6/snes9x.6.gz
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
-OLDDOC=$PKGDOC/${PRGNAM}_original_docs
-mkdir -p $OLDDOC
-rm -f ../docs/snes9x.conf.default # outdated, useless
-cp -a doc/* $PKGDOC
-cp -a ../docs/* $OLDDOC
-cat $CWD/README_docs.txt > $PKGDOC/README_docs.txt
+mkdir -p $PKGDOC
+cp -a LICENSE README* docs/* unix/docs/* unix/snes9x.conf.default $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
-# We don't need 3 copies of the LGPL v2.1 (we already have the GPL
-# and proprietary snes9x licenses...)
-cd $PKGDOC
- rm -f snes_ntsc_license.txt ${PRGNAM}_original_docs/lgpl-2.1.txt
- ln -s lgpl.txt snes_ntsc_license.txt
- ln -s ../lgpl.txt ${PRGNAM}_original_docs/lgpl-2.1.txt
-cd -
-
-cat data/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
-
mkdir -p $PKG/install
-sed -e "s,@WITHPULSE@,$WITHPULSE," \
- -e "s,@WITHOSS@,$WITHOSS," \
- -e "s,@build_ra@,$build_ra," \
+sed -e "s,@PU@,$WITHPULSE," \
+ -e "s,@OSS@,$WITHOSS," \
+ -e "s,@PA@,$WITH_PA," \
+ -e "s,@RA@,$build_ra," \
< $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}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/games/snes9x/snes9x.info b/games/snes9x/snes9x.info
index da8405ae11..fda41c81b4 100644
--- a/games/snes9x/snes9x.info
+++ b/games/snes9x/snes9x.info
@@ -1,10 +1,16 @@
PRGNAM="snes9x"
-VERSION="1.57"
+VERSION="1.62.3"
HOMEPAGE="https://github.com/snes9xgit/snes9x"
-DOWNLOAD="https://github.com/snes9xgit/snes9x/archive/1.57/snes9x-1.57.tar.gz"
-MD5SUM="881b740d08a7d42d4a33dee962dcdbdc"
+DOWNLOAD="https://github.com/snes9xgit/snes9x/archive/1.62.3/snes9x-1.62.3.tar.gz \
+ https://github.com/KhronosGroup/glslang/archive/12.1.0/glslang-12.1.0.tar.gz \
+ https://github.com/KhronosGroup/Vulkan-Headers/archive/v1.3.246/Vulkan-Headers-1.3.246.tar.gz \
+ https://github.com/KhronosGroup/SPIRV-Cross/archive/2021-01-15/SPIRV-Cross-2021-01-15.tar.gz"
+MD5SUM="53879c428f871e5e56d5a10dc24e4c10 \
+ 218e2dd3ab422fca3a99ba6ca517c84c \
+ 9b0106c6cae8ef061ba8a7c5b5778b1b \
+ b3d17d652cde727629a68ff338881290"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="SDL2"
+REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/games/snes9x/snes9x.rst b/games/snes9x/snes9x.rst
new file mode 100644
index 0000000000..a7e03f9edf
--- /dev/null
+++ b/games/snes9x/snes9x.rst
@@ -0,0 +1,78 @@
+.. RST source for snes9x(6) man page. Convert with:
+.. rst2man.py snes9x.rst > snes9x.6
+
+.. |version| replace:: 1.62.3
+.. |date| date::
+
+======
+snes9x
+======
+
+--------------------------------------------
+Super Nintendo Entertainment System emulator
+--------------------------------------------
+
+:Manual section: 6
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+**snes9x** [*options*] **rom-file**
+
+DESCRIPTION
+===========
+
+Snes9x is a portable, freeware Super Nintendo Entertainment
+System (SNES) emulator. It basically allows you to play most games
+designed for the SNES and Super Famicom Nintendo game systems
+on your PC or Workstation; they include some real gems that were only
+ever released in Japan.
+
+For the full documentation, see:
+
+ /usr/doc/snes9x-|version|/readme_unix.html
+
+This is the command-line build of **snes9x**. For the GUI version,
+see **snes9x-gtk**\(6).
+
+OPTIONS
+=======
+
+This man page doesn't include a list of options. Run **snes9x** with
+no arguments (or with **--help**) to see them.
+
+FILES
+=====
+
+**~/.snes9x/snes9x.conf**
+ The config file. **snes9x** doesn't create this; the default config
+ file is found in /usr/doc/snes9x-|version|/snes9x.conf.default and
+ must be copied to ~/.snes9x/snes9x.conf manually.
+
+The directory **~/.snes9x/** also contains subdirectories for savestates,
+screenshots, sram, etc. These are populated by **snes9x** as needed.
+
+Note that the graphical **snes9x-gtk** does not share config files or
+directories with command-line **snes9x**\.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/snes9x-|version|/LICENSE for license information.
+
+AUTHORS
+=======
+
+Snes9x was written by Gary Henderson and Jerremy Koot. It also includes
+code from Ivar (Ivar@snes9x.com), zsKnight, _Demo_, and many others.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+**snes9x-gtk**\(6)
diff --git a/games/snes9x/snes9x_libretro-info b/games/snes9x/snes9x_libretro.info.txt
index bcccb02e7e..bcccb02e7e 100644
--- a/games/snes9x/snes9x_libretro-info
+++ b/games/snes9x/snes9x_libretro.info.txt