summaryrefslogtreecommitdiff
path: root/games/higan
diff options
context:
space:
mode:
Diffstat (limited to 'games/higan')
-rw-r--r--games/higan/README53
-rw-r--r--games/higan/higan-flags.diff49
-rw-r--r--games/higan/higan-flags.patch38
-rw-r--r--games/higan/higan-paths.diff26
-rw-r--r--games/higan/higan.6115
-rw-r--r--games/higan/higan.SlackBuild115
-rw-r--r--games/higan/higan.info12
-rw-r--r--games/higan/higan.rst98
-rw-r--r--games/higan/icarus.663
-rw-r--r--games/higan/icarus.rst50
-rw-r--r--games/higan/slack-desc12
11 files changed, 544 insertions, 87 deletions
diff --git a/games/higan/README b/games/higan/README
index 5f29a6f9ca..d5f3551c02 100644
--- a/games/higan/README
+++ b/games/higan/README
@@ -1,3 +1,5 @@
+higan (console multi-system emulator)
+
higan (formerly known as bsnes) is an emulator that began development
on 2004-10-14. The purpose of this emulator is a bit different from
others: it focuses on accuracy, debugging functionality, and clean
@@ -5,15 +7,50 @@ code. The emulator does not focus on things that would hinder accuracy.
This includes speed and game-specific hacks for compatibility. As a
result, the minimum system requirements for higan are very high.
-It currently supports the following systems: Famicom (NES), Super
-Famicom (SNES), Game Boy, Game Boy Color and Game Boy Advance.
-It also supports the following subsystems: Super Game Boy,
-BS-X Satellaview and Sufami Turbo.
+As of v104, higan has top-tier support for the following consoles:
+
+- Nintendo Super Famicom/SNES, including add-on hardware:
+ + Super Game Boy
+ + Sufami Turbo
+- Nintendo Game Boy Advance
+
+It also includes some level of support for these consoles:
+
+- Satellaview add-on for the Super Famicom
+- Nintendo Famicom/Nintendo Entertainment System
+- Nintendo Game Boy
+- Nintendo Game Boy Color
+- Sega Master System
+- Sega Game Gear
+- Sega Mega Drive/Genesis
+- NEC PC Engine/TurboGrafx 16 (but not the CD-ROM^2 System/TurboGrafx-CD)
+- NEC SuperGrafx
+- Bandai WonderSwan
+- Bandai WonderSwan Color
+
+Complete (though slightly outdated) documentation on higan is available
+at: https://higan.readthedocs.io/en/stable/
-* Configuration *
+*** Configuration:
-The default profile folder (where platform system files, cheats and
+The default profile directory (where platform system files, cheats and
shaders are located) is /usr/share/higan. If you want a personalized
-profile, store your files in ~/.config/higan/, then higan will use
-this folder instead.
+profile, store your files in ~/Emulation, then higan will use this
+directory instead.
+
+First time users note: By default there are *no* control mappings. You'll
+have to use Settings -> Input to map your preferred keyboard and/or
+gamepad controls for each emulated system. Also, by default, there's
+nothing 'plugged into' the emulated controller ports. In the menu bar,
+click on the system name (e.g. Famicom, Super Famicom) -> Controller
+Port 1 -> Gamepad (or whatever is required for the ROM you're running).
+
+*** Build options:
+
+- OpenAL is autodetected, and used if found. You can disable it with
+ OPENAL=no in the environment.
+
+- OSS is disabled by default. If you need it, set OSS=yes in the environment.
+- PulseAudio is enabled by default. You can disable it with PULSE=no in
+ the environment.
diff --git a/games/higan/higan-flags.diff b/games/higan/higan-flags.diff
new file mode 100644
index 0000000000..aaca8d0e2f
--- /dev/null
+++ b/games/higan/higan-flags.diff
@@ -0,0 +1,49 @@
+diff -rupN higan_v106-source.orig/higan/GNUmakefile higan_v106-source/higan/GNUmakefile
+--- higan_v106-source.orig/higan/GNUmakefile 2017-12-27 23:12:21.263872763 +0100
++++ higan_v106-source/higan/GNUmakefile 2017-12-27 23:12:30.243627883 +0100
+@@ -1,4 +1,4 @@
+-build := optimize
++build := release
+ include ../nall/GNUmakefile
+
+ binary := application
+@@ -26,7 +26,6 @@ else ifneq ($(filter $(platform),linux b
+ flags += -fopenmp
+ link += -fopenmp
+ ifeq ($(binary),application)
+- flags += -march=native
+ link += -Wl,-export-dynamic
+ link += -lX11 -lXext
+ else ifeq ($(binary),library)
+diff -rupN higan_v106-source.orig/icarus/GNUmakefile higan_v106-source/icarus/GNUmakefile
+--- higan_v106-source.orig/icarus/GNUmakefile 2017-12-27 23:12:21.280538976 +0100
++++ higan_v106-source/icarus/GNUmakefile 2017-12-27 23:12:30.243627883 +0100
+@@ -1,4 +1,4 @@
+-build := optimize
++build := release
+ include ../nall/GNUmakefile
+ include ../hiro/GNUmakefile
+
+diff -rupN higan_v106-source.orig/nall/GNUmakefile higan_v106-source/nall/GNUmakefile
+--- higan_v106-source.orig/nall/GNUmakefile 2017-12-27 23:12:21.283872217 +0100
++++ higan_v106-source/nall/GNUmakefile 2017-12-27 23:12:44.326577547 +0100
+@@ -40,8 +40,8 @@ cflags := -x c -std=c11
+ objcflags := -x objective-c -std=c11
+ cppflags := -x c++ -std=c++14
+ objcppflags := -x objective-c++ -std=c++14
+-flags :=
+-link :=
++flags := $(CXXFLAGS)
++link := $(LDFLAGS)
+
+ # compiler detection
+ ifeq ($(compiler),)
+@@ -120,7 +120,7 @@ ifeq ($(threaded),true)
+ endif
+
+ # paths
+-prefix := $(HOME)/.local
++prefix := /usr
+
+ # function rwildcard(directory, pattern)
+ rwildcard = \
diff --git a/games/higan/higan-flags.patch b/games/higan/higan-flags.patch
deleted file mode 100644
index 71fd27498c..0000000000
--- a/games/higan/higan-flags.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -rupN higan_v097-source.orig/higan/GNUmakefile higan_v097-source/higan/GNUmakefile
---- higan_v097-source.orig/higan/GNUmakefile 2016-01-24 09:21:45.822940200 +0100
-+++ higan_v097-source/higan/GNUmakefile 2016-01-24 09:24:03.028722500 +0100
-@@ -36,7 +36,7 @@ ifeq ($(platform),windows)
- else ifeq ($(platform),macosx)
- flags += -march=native
- else ifneq ($(filter $(platform),linux bsd),)
-- flags += -march=native -fopenmp
-+ flags += -fopenmp
- link += -fopenmp
- link += -Wl,-export-dynamic
- link += -lX11 -lXext
-diff -rupN higan_v097-source.orig/nall/GNUmakefile higan_v097-source/nall/GNUmakefile
---- higan_v097-source.orig/nall/GNUmakefile 2016-01-24 09:21:46.021749600 +0100
-+++ higan_v097-source/nall/GNUmakefile 2016-01-24 09:25:06.347100800 +0100
-@@ -40,8 +40,8 @@ cflags := -x c -std=c99
- objcflags := -x objective-c -std=c99
- cppflags := -x c++ -std=c++14
- objcppflags := -x objective-c++ -std=c++14
--flags :=
--link :=
-+flags := $(CXXFLAGS)
-+link := $(LDFLAGS)
-
- # compiler detection
- ifeq ($(compiler),)
-@@ -51,9 +51,9 @@ ifeq ($(compiler),)
- else ifeq ($(platform),macosx)
- compiler := clang++
- else ifeq ($(platform),linux)
-- compiler := g++-4.9
-+ compiler := g++
- else ifeq ($(platform),bsd)
-- compiler := g++49
-+ compiler := g++
- else
- compiler := g++
- endif
diff --git a/games/higan/higan-paths.diff b/games/higan/higan-paths.diff
new file mode 100644
index 0000000000..dcb3eaf89d
--- /dev/null
+++ b/games/higan/higan-paths.diff
@@ -0,0 +1,26 @@
+diff -rupN higan_v106-source.orig/higan/target-tomoko/tomoko.cpp higan_v106-source/higan/target-tomoko/tomoko.cpp
+--- higan_v106-source.orig/higan/target-tomoko/tomoko.cpp 2017-12-27 23:48:31.103245742 +0100
++++ higan_v106-source/higan/target-tomoko/tomoko.cpp 2017-12-27 23:49:19.728586352 +0100
+@@ -11,6 +11,9 @@ auto locate(string name) -> string {
+ location = {Path::config(), "higan/", name};
+ if(inode::exists(location)) return location;
+
++ location = {Path::shared(), "higan/", name};
++ if(inode::exists(location)) return location;
++
+ directory::create({Path::local(), "higan/"});
+ return {Path::local(), "higan/", name};
+ }
+diff -rupN higan_v106-source.orig/icarus/icarus.cpp higan_v106-source/icarus/icarus.cpp
+--- higan_v106-source.orig/icarus/icarus.cpp 2017-12-27 23:48:31.109912227 +0100
++++ higan_v106-source/icarus/icarus.cpp 2017-12-27 23:49:02.672384569 +0100
+@@ -11,6 +11,9 @@ auto locate(string name) -> string {
+ location = {Path::config(), "icarus/", name};
+ if(inode::exists(location)) return location;
+
++ location = {Path::shared(), "icarus/", name};
++ if(inode::exists(location)) return location;
++
+ directory::create({Path::local(), "icarus/"});
+ return {Path::local(), "icarus/", name};
+ }
diff --git a/games/higan/higan.6 b/games/higan/higan.6
new file mode 100644
index 0000000000..ede823154b
--- /dev/null
+++ b/games/higan/higan.6
@@ -0,0 +1,115 @@
+.\" Man page generated from reStructuredText.
+.
+.TH HIGAN 6 "2018-12-12" "106" "SlackBuilds.org"
+.SH NAME
+higan \- multi-system console emulator
+.
+.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
+..
+.\" RST source for higan(6) man page. Convert with:
+.
+.\" rst2man.py higan.rst > higan.6
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+higan [\-\-fullscreen] [GAME [SUBGAME1 [SUBGAME2]]]
+.SH DESCRIPTION
+.sp
+When launched with \-\-fullscreen, higan will automatically enter fullscreen mode
+when it starts, otherwise it starts in windowed mode. This is not much use
+unless you also specify GAME, because you won\(aqt be able to load a game until you
+exit fullscreen mode by pressing the "Toggle Fullscreen" hotkey.
+.sp
+When GAME is not given, higan starts with no game loaded.
+.sp
+When GAME is the path to an existing game folder for any supported console, that
+game will automatically be loaded after higan starts.
+.sp
+When GAME is the path to a ROM file for any supported console, it will be
+imported into a game folder in the Game Library, and loaded from there after
+higan starts.
+.sp
+When GAME is of the form REGION|PATH (that is, a region code, a vertical bar
+(|), and a path to a game folder or ROM file) higan will load the game at PATH
+into the REGION variant of the appropriate console, rather than detecting which
+variant the game expects. This is the command\-line equivalent of choosing a
+region from the drop\-down in the bottom\-right of the filesystem browser window
+when you load a game from the game library. The list of region codes differs
+from console to console, so load a game from the library and check the list
+before loading it from the command\-line.
+.sp
+When GAME refers to a game with a Satellaview memory pak slot, SUBGAME1 should
+be the path to a game folder or ROM file representing the memory pak to insert
+into the slot. If SUBGAME1 is not supplied, higan will prompt for one. SUBGAME2
+is ignored.
+.sp
+When GAME refers to the Super Game Boy or Super Game Boy 2, SUBGAME1 should be
+the path to a game folder or ROM file representing a Game Boy game to insert
+into the slot. If SUBGAME1 is not supplied, higan will prompt for one. SUBGAME2
+is ignored.
+.sp
+When GAME refers to the Sufami Turbo, then SUBGAME1 should be the path to a game
+folder or ROM file representing the mini\-cartridge to be inserted into slot A of
+the Sufami Turbo base cartridge, and SUBGAME2 is the same thing for slot B.
+higan will prompt for any mini\-cartridges not supplied on the command\-line.
+.sp
+When GAME refers to any other game, both SUBGAME1 and SUBGAME2 are ignored.
+.SH EXAMPLES
+.sp
+Play a previously\-imported copy of Super Mario World in fullscreen (assuming
+Linux defaults):
+.INDENT 0.0
+.INDENT 3.5
+higan \-\-fullscreen "$HOME/Emulation/Super Famicom/Super Mario World.sfc"
+.UNINDENT
+.UNINDENT
+.sp
+Play a previously\-imported copy of Sonic the Hedgehog 3, forcing higan to
+emulate a Japanese Mega Drive:
+.INDENT 0.0
+.INDENT 3.5
+higan "NTSC\-J|$HOME/Emulation/Mega Drive/Sonic the Hedgehog 3.md"
+.UNINDENT
+.UNINDENT
+.SH AUTHORS
+.sp
+higan was written by byuu.
+.sp
+This man page created for the SlackBuilds.org project
+by B. Watson, by copying and reformatting higan\-cli.md
+from upstream\(aqs git.
+.SH SEE ALSO
+.sp
+icarus(6)
+.sp
+The higan homepage: \fI\%https://byuu.org/emulation/higan/\fP
+.sp
+Full documentation: \fI\%https://higan.readthedocs.io/en/stable/\fP
+.\" Generated by docutils manpage writer.
+.
diff --git a/games/higan/higan.SlackBuild b/games/higan/higan.SlackBuild
index a9511ca33c..caf311dd6a 100644
--- a/games/higan/higan.SlackBuild
+++ b/games/higan/higan.SlackBuild
@@ -2,9 +2,10 @@
# Slackware build script for higan
-# Based on bsnes SlackBuild by Erik Hanson <erik@slackbuilds.org>
-# Maintained by Gabriel Magno <gabrielmagno1[at]gmail[dot]com>
-# Modified by Johannes Schoepfer <slackbuilds[at]schoepfer[dot]info>
+# Based on bsnes SlackBuild by Erik Hanson <email removed>
+# Maintained by Gabriel Magno <email removed>
+# Modified by Johannes Schoepfer <email removed>
+# Modified again & now maintained by B. Watson <yalhcru@gmail.com>
# Copyright 2013 Gabriel Magno, Belo Horizonte, MG, Brazil
# All rights reserved.
@@ -26,8 +27,24 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20181211 bkw:
+# This update would not have happened without assistance and moral support
+# from Yossi Ne'eman. Thanks!
+# - Take over maintenance.
+# - Update for v106.
+# - Use the gtk frontend, not the *broken* qt one.
+# - Make OpenAL dep optional & autodetected (and OPENAL=no to force-disable).
+# - Add OSS (default no) and PULSE (default yes) env vars.
+# - Fix permissions of the stuff installed to /usr/share/higan: everything
+# was executable, ugh.
+# - Install binary in /usr/games (it's a game system emulator, people).
+# - Update the README, include link to the semi-official doc site.
+# - Update slack-desc with current list of supported systems.
+# - Add man pages. Note to SBo admins: please don't remove my *.rst man
+# page sources!
+
PRGNAM=higan
-VERSION=${VERSION:-101}
+VERSION=${VERSION:-106}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -60,45 +77,85 @@ fi
set -e
+SRCNAM=${PRGNAM}_v${VERSION}-source
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf ${PRGNAM}_v${VERSION}-source
-7z x $CWD/${PRGNAM}_v${VERSION}-source.7z
-cd ${PRGNAM}_v${VERSION}-source
-find . -type d -exec chmod -R 0755 {} \;
+rm -rf $SRCNAM
+7z x $CWD/$SRCNAM.7z
+cd $SRCNAM
+
+# Bletcherous permissions, please don't replace with template code.
+find . -type d -exec chmod 0755 {} \+
+find . -type f -exec chmod 0644 {} \+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Thanks to the Arch folks
-patch -p1 -i $CWD/higan-flags.patch
+# Thanks to the Arch folks for these patches. -flags allows us to pass
+# custom CFLAGS, and -paths makes the emulator look in /usr/share/higan
+# for its support files if they're not found in ~/.local/share/higan.
+patch -p1 -i $CWD/higan-flags.diff
+patch -p1 -i $CWD/higan-paths.diff
+
+# 20181212 bkw: audio system stuff. Upstream doesn't give us a way to
+# disable these on the make command line, but hacking this file works:
+HACKFILE=higan/target-tomoko/GNUmakefile
+
+# Who actually uses OSS?
+if [ "${OSS:-no}" = "no" ]; then
+ sed -i '/^ *ruby /s,audio\.oss,,' $HACKFILE
+fi
+
+# Prepare for 15.0's pure-alsa-system option.
+if [ "${PULSE:-yes}" = "no" ] || ! [ -e /usr/bin/pulseaudio ]; then
+ sed -i '/^ *ruby /s,audio\.pulse[^ ]*,,g' $HACKFILE
+fi
+
+# Upstream *should* autodetect this, but doesn't.
+if [ "${OPENAL:-yes}" = "no" ] || ! pkg-config --exists openal; then
+ sed -i '/^ *ruby /s,audio\.openal,,' $HACKFILE
+fi
+
+# 20181212 bkw: switch from hiro=qt to hiro=gtk. I have no idea why the
+# original author chose qt... the qt frontend is known to be buggy in v106
+# (per upstream's git log). Issues I ran into were segfaulting on exit,
+# and sometimes the Settings tabs wouldn't get painted... which are both
+# mentioned as known issues in the git log. There are some post-106
+# commits that may fix the qt issues; we'll see, when 107 is released.
CXXFLAGS="$SLKCFLAGS" \
make -C icarus \
prefix=/usr \
platform=linux \
- hiro=qt \
+ hiro=gtk
CXXFLAGS="$SLKCFLAGS" \
-make -C higan \
+make -C $PRGNAM \
prefix=/usr \
platform=linux \
- hiro=qt
-
-install -dm 755 $PKG/usr/{bin,share/{applications,higan,pixmaps}}
-install -m 755 icarus/out/icarus $PKG/usr/bin/
-install -m 755 higan/out/higan $PKG/usr/bin/
-install -m 644 higan/data/higan.desktop $PKG/usr/share/applications/
-install -m 644 higan/data/higan.png $PKG/usr/share/pixmaps/
-cp -dr higan/systems/* higan/data/cheats.bml $PKG/usr/share/higan/
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
+ hiro=gtk
+
+mkdir -p $PKG/usr/games \
+ $PKG/usr/share/applications \
+ $PKG/usr/share/$PRGNAM \
+ $PKG/usr/share/pixmaps
+
+install -s -m 755 $PRGNAM/out/$PRGNAM icarus/out/icarus $PKG/usr/games/
+install -m 644 $PRGNAM/data/$PRGNAM.desktop $PKG/usr/share/applications/
+install -m 644 $PRGNAM/data/$PRGNAM.png $PKG/usr/share/pixmaps/
+cp -dr $PRGNAM/systems/* $PKG/usr/share/$PRGNAM/
+
+# Man pages by B. Watson. higan.6 is basically the higan-cli.md from the
+# git repo, reformatted as RST & converted to a man page. icarus.6 was
+# written from scratch (and doesn't have much to say, you'll notice).
+mkdir -p $PKG/usr/man/man6
+for i in $PRGNAM icarus; do
+ gzip -9c < $CWD/$i.6 > $PKG/usr/man/man6/$i.6.gz
+done
+
+# Sadly there are no docs in v106. I found a docs/ dir in git, but it's not
+# in the release 7z archive. Apparently this is because the git archive is
+# somehow unofficial...?
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/games/higan/higan.info b/games/higan/higan.info
index 9f10b12b0d..4bee32e849 100644
--- a/games/higan/higan.info
+++ b/games/higan/higan.info
@@ -1,10 +1,10 @@
PRGNAM="higan"
-VERSION="101"
+VERSION="106"
HOMEPAGE="https://byuu.org/emulation/higan/"
-DOWNLOAD="http://helmet.kafuka.org/higan_v101-source.7z"
-MD5SUM="7c0f00b05c5589ea01b5c2b18c452e0f"
+DOWNLOAD="https://download.byuu.org/higan_v106-source.7z"
+MD5SUM="74fa6050909445035119ee764563c094"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="OpenAL p7zip"
-MAINTAINER="Gabriel Magno"
-EMAIL="gabrielmagno1@gmail.com"
+REQUIRES="p7zip gtksourceview"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
diff --git a/games/higan/higan.rst b/games/higan/higan.rst
new file mode 100644
index 0000000000..fb452fb581
--- /dev/null
+++ b/games/higan/higan.rst
@@ -0,0 +1,98 @@
+.. RST source for higan(6) man page. Convert with:
+.. rst2man.py higan.rst > higan.6
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 106
+.. |date| date::
+
+=====
+higan
+=====
+
+-----------------------------
+multi-system console emulator
+-----------------------------
+
+:Manual section: 6
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+higan [--fullscreen] [GAME [SUBGAME1 [SUBGAME2]]]
+
+DESCRIPTION
+===========
+
+When launched with --fullscreen, higan will automatically enter fullscreen mode
+when it starts, otherwise it starts in windowed mode. This is not much use
+unless you also specify GAME, because you won't be able to load a game until you
+exit fullscreen mode by pressing the "Toggle Fullscreen" hotkey.
+
+When GAME is not given, higan starts with no game loaded.
+
+When GAME is the path to an existing game folder for any supported console, that
+game will automatically be loaded after higan starts.
+
+When GAME is the path to a ROM file for any supported console, it will be
+imported into a game folder in the Game Library, and loaded from there after
+higan starts.
+
+When GAME is of the form REGION|PATH (that is, a region code, a vertical bar
+(|), and a path to a game folder or ROM file) higan will load the game at PATH
+into the REGION variant of the appropriate console, rather than detecting which
+variant the game expects. This is the command-line equivalent of choosing a
+region from the drop-down in the bottom-right of the filesystem browser window
+when you load a game from the game library. The list of region codes differs
+from console to console, so load a game from the library and check the list
+before loading it from the command-line.
+
+When GAME refers to a game with a Satellaview memory pak slot, SUBGAME1 should
+be the path to a game folder or ROM file representing the memory pak to insert
+into the slot. If SUBGAME1 is not supplied, higan will prompt for one. SUBGAME2
+is ignored.
+
+When GAME refers to the Super Game Boy or Super Game Boy 2, SUBGAME1 should be
+the path to a game folder or ROM file representing a Game Boy game to insert
+into the slot. If SUBGAME1 is not supplied, higan will prompt for one. SUBGAME2
+is ignored.
+
+When GAME refers to the Sufami Turbo, then SUBGAME1 should be the path to a game
+folder or ROM file representing the mini-cartridge to be inserted into slot A of
+the Sufami Turbo base cartridge, and SUBGAME2 is the same thing for slot B.
+higan will prompt for any mini-cartridges not supplied on the command-line.
+
+When GAME refers to any other game, both SUBGAME1 and SUBGAME2 are ignored.
+
+EXAMPLES
+========
+
+Play a previously-imported copy of Super Mario World in fullscreen (assuming
+Linux defaults):
+
+ higan --fullscreen "$HOME/Emulation/Super Famicom/Super Mario World.sfc"
+
+Play a previously-imported copy of Sonic the Hedgehog 3, forcing higan to
+emulate a Japanese Mega Drive:
+
+ higan "NTSC-J|$HOME/Emulation/Mega Drive/Sonic the Hedgehog 3.md"
+
+AUTHORS
+=======
+
+higan was written by byuu.
+
+This man page created for the SlackBuilds.org project
+by B. Watson, by copying and reformatting higan-cli.md
+from upstream's git.
+
+SEE ALSO
+========
+
+icarus(6)
+
+The higan homepage: https://byuu.org/emulation/higan/
+
+Full documentation: https://higan.readthedocs.io/en/stable/
diff --git a/games/higan/icarus.6 b/games/higan/icarus.6
new file mode 100644
index 0000000000..8f62030ac7
--- /dev/null
+++ b/games/higan/icarus.6
@@ -0,0 +1,63 @@
+.\" Man page generated from reStructuredText.
+.
+.TH ICARUS 6 "2018-12-12" "106" "SlackBuilds.org"
+.SH NAME
+icarus \- ROM library importer for higan
+.
+.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
+..
+.\" RST source for icarus(6) man page. Convert with:
+.
+.\" rst2man.py icarus.rst > icarus.6
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+icarus
+.SH DESCRIPTION
+.sp
+icarus is a graphical program that takes no command\-line arguments.
+.sp
+When launched, icarus presents a file browser that can be used to locate
+ROM files. Select one or more ROMs (or use "Select All"), then click
+Import to import the ROM(s) into the higan library, by default located
+at $HOME/Emulation.
+.sp
+After importing, the games will be selectable from the "Library" menu in
+the higan user interface.
+.SH AUTHORS
+.sp
+higan was written by byuu.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+higan(6)
+.\" Generated by docutils manpage writer.
+.
diff --git a/games/higan/icarus.rst b/games/higan/icarus.rst
new file mode 100644
index 0000000000..13a1f6cc1b
--- /dev/null
+++ b/games/higan/icarus.rst
@@ -0,0 +1,50 @@
+.. RST source for icarus(6) man page. Convert with:
+.. rst2man.py icarus.rst > icarus.6
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 106
+.. |date| date::
+
+======
+icarus
+======
+
+------------------------------
+ROM library importer for higan
+------------------------------
+
+:Manual section: 6
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+icarus
+
+DESCRIPTION
+===========
+
+icarus is a graphical program that takes no command-line arguments.
+
+When launched, icarus presents a file browser that can be used to locate
+ROM files. Select one or more ROMs (or use "Select All"), then click
+Import to import the ROM(s) into the higan library, by default located
+at $HOME/Emulation.
+
+After importing, the games will be selectable from the "Library" menu in
+the higan user interface.
+
+AUTHORS
+=======
+
+higan was written by byuu.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+higan(6)
diff --git a/games/higan/slack-desc b/games/higan/slack-desc
index 70b0e5e75a..4ea821c16e 100644
--- a/games/higan/slack-desc
+++ b/games/higan/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-higan: higan (Nintendo multi-system emulator)
+higan: higan (console multi-system emulator)
higan:
higan: higan is an emulator that focuses on accuracy, debug functionality,
higan: and clean code, not on things that would hinder accuracy, like speed
-higan: and game-specific hacks for compatibility. It supports the systems
-higan: Famicom (NES), Super Famicom (SNES), Game Boy, Game Boy Color, and
-higan: Game Boy Advance. It also supports the subsystems Super Game Boy,
-higan: BS-X Satellaview and Sufami Turbo.
+higan: and game-specific hacks for compatibility. It supports many systems,
+higan: including Famicom (NES), Super Famicom (SNES), Game Boy, Game Boy
+higan: Color, and Game Boy Advance, Sega Master System, Game Gear, Genesis,
+higan: NEC TurboGraphix 16, SuperGraphx, Bandai WonderSwan.
higan:
-higan: Homepage: https://byuu.org/emulation/higan/
+higan: For more info, see https://higan.readthedocs.io/en/stable/
higan: