summaryrefslogtreecommitdiffstats
path: root/games/mesen-x
diff options
context:
space:
mode:
Diffstat (limited to 'games/mesen-x')
-rw-r--r--games/mesen-x/README14
-rw-r--r--games/mesen-x/doinst.sh9
-rw-r--r--games/mesen-x/mesen-x2
-rw-r--r--games/mesen-x/mesen-x.SlackBuild124
-rw-r--r--games/mesen-x/mesen-x.desktop8
-rw-r--r--games/mesen-x/mesen-x.info10
-rw-r--r--games/mesen-x/mesen-x_libretro.info.in39
-rw-r--r--games/mesen-x/slack-desc19
8 files changed, 225 insertions, 0 deletions
diff --git a/games/mesen-x/README b/games/mesen-x/README
new file mode 100644
index 0000000000..51392bfe81
--- /dev/null
+++ b/games/mesen-x/README
@@ -0,0 +1,14 @@
+Mesen-X is a fork of Mesen, which is a cross-platform NES/Famicom
+emulator for Windows & Linux built in C++ and C#. The original Mesen
+project has paused development, and this fork is meant to collect
+patches contributed by the community.
+
+Changes include:
+ * Support for newer versions of Mono, for running Mesen on Linux
+ * ESPM homebrew expansion audio support
+ * HD Pack improvements
+ * Replaced VRC7 synth code with Nuked-OPLL
+ * Debugger improvements, for Alchemy65
+
+If you would like to build the libretro core, pass LIBRETRO=yes to
+the SlackBuild script.
diff --git a/games/mesen-x/doinst.sh b/games/mesen-x/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/games/mesen-x/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/games/mesen-x/mesen-x b/games/mesen-x/mesen-x
new file mode 100644
index 0000000000..b6c0df82a6
--- /dev/null
+++ b/games/mesen-x/mesen-x
@@ -0,0 +1,2 @@
+#!/bin/sh
+/usr/bin/mono /usr/bin/Mesen-X "\$@"
diff --git a/games/mesen-x/mesen-x.SlackBuild b/games/mesen-x/mesen-x.SlackBuild
new file mode 100644
index 0000000000..32541b352a
--- /dev/null
+++ b/games/mesen-x/mesen-x.SlackBuild
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+# Slackware build script for mesen-x
+
+# Copyright 2022-2023 Steven Voges <Oregon, USA>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=mesen-x
+SRCNAM=Mesen-X
+VERSION=${VERSION:-0.9.9.3364}
+SRCVER=${SRCVER:-9760d07474881588051d620b3c230bcdf5be08ec}
+MESENPLATFORM=${MESENPLATFORM:-x64}
+LIBRETRO=${LIBRETRO:-no}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+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}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+ MESENPLATFORM="x86"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+ MESENPLATFORM="x86"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ MESENPLATFORM="x64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ MESENPLATFORM="x86"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$SRCVER
+tar xvf $CWD/$SRCNAM-$SRCVER.tar.gz
+cd $SRCNAM-$SRCVER
+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 {} \;
+
+export CC=clang
+export CXX=clang++
+export CFLAGS="$SLKCFLAGS"
+ LTO=true \
+ MESENPLATFORM=$MESENPLATFORM \
+ make
+ install -Dm755 bin/$MESENPLATFORM/Release/Mesen.exe $PKG/usr/bin/$SRCNAM
+ install -Dm755 $CWD/$PRGNAM $PKG/usr/bin/$PRGNAM
+ install -Dm644 InteropDLL/obj.$MESENPLATFORM/libMesenCore.$MESENPLATFORM.dll \
+ $PKG/usr/lib$LIBDIRSUFFIX/libMesenCore.dll
+ install -Dm644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
+ install -Dm644 GUI.NET/Resources/MesenIconSmall.png $PKG/usr/share/icons/hicolor/16x16/apps/$PRGNAM.png
+ install -Dm644 GUI.NET/Resources/MesenIconMedium.png $PKG/usr/share/icons/hicolor/32x32/apps/$PRGNAM.png
+ install -Dm644 GUI.NET/Resources/MesenIcon.png $PKG/usr/share/icons/hicolor/64x64/apps/$PRGNAM.png
+ chmod 755 $PKG/usr/lib$LIBDIRSUFFIX/libMesenCore.dll
+if [ $LIBRETRO = "yes" ]; then
+ cd Libretro
+ make
+ install -Dm755 Libretro/mesen_libretro.so $PKG/usr/lib$LIBDIRSUFFIX/libretro/${PRGNAM}_libretro.so
+ install -Dm644 $CWD/${PRGNAM}_libretro.info.in $PKG/usr/lib$LIBDIRSUFFIX/libretro/info/${PRGNAM}_libretro.info
+ cd ..
+fi
+
+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
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+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
diff --git a/games/mesen-x/mesen-x.desktop b/games/mesen-x/mesen-x.desktop
new file mode 100644
index 0000000000..2305359fa9
--- /dev/null
+++ b/games/mesen-x/mesen-x.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=Mesen-X
+GenericName=Famicom/NES Emulator
+Icon=mesen-x
+Exec=/usr/bin/mesen-x %F
+Terminal=false
+Categories=Game;
diff --git a/games/mesen-x/mesen-x.info b/games/mesen-x/mesen-x.info
new file mode 100644
index 0000000000..60a68106c8
--- /dev/null
+++ b/games/mesen-x/mesen-x.info
@@ -0,0 +1,10 @@
+PRGNAM="mesen-x"
+VERSION="0.9.9.3364"
+HOMEPAGE="https://www.mesen.ca"
+DOWNLOAD="https://github.com/NovaSquirrel/Mesen-X/archive/9760d07474881588051d620b3c230bcdf5be08ec/Mesen-X-9760d07474881588051d620b3c230bcdf5be08ec.tar.gz"
+MD5SUM="3803c949b9eef45f4900a8d257e60fb5"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="mono"
+MAINTAINER="Steven Voges"
+EMAIL="svoges.sbo@gmail.com"
diff --git a/games/mesen-x/mesen-x_libretro.info.in b/games/mesen-x/mesen-x_libretro.info.in
new file mode 100644
index 0000000000..b004791e9f
--- /dev/null
+++ b/games/mesen-x/mesen-x_libretro.info.in
@@ -0,0 +1,39 @@
+# Software Information
+display_name = "Nintendo - NES / Famicom (Mesen-X)"
+authors = "M. Bibaud (aka Sour)|NovaSquirrel"
+supported_extensions = "nes|fds|unf|unif"
+corename = "Mesen-X"
+license = "GPLv3"
+permissions = ""
+display_version = "0.9.9-20230711_e49165c"
+categories = "Emulator"
+
+# Hardware Information
+manufacturer = "Nintendo"
+systemname = "Nintendo Entertainment System"
+systemid = "nes"
+
+# Libretro Features
+supports_no_game = "false"
+savestate = "true"
+savestate_features = "deterministic"
+cheats = "true"
+input_descriptors = "true"
+memory_descriptors = "true"
+libretro_saves = "true"
+core_options = "true"
+core_options_version = "1.0"
+load_subsystem = "false"
+hw_render = "false"
+needs_fullpath = "false"
+disk_control = "false"
+database = "Nintendo - Nintendo Entertainment System|Nintendo - Family Computer Disk System"
+
+# Firmware / BIOS
+firmware_count = 1
+firmware0_desc = "disksys.rom (Family Computer Disk System BIOS)"
+firmware0_path = "disksys.rom"
+firmware0_opt = "true"
+notes = "(!) disksys.rom (md5): ca30b50f880eb660a320674ed365ef7a|Press Retropad R1 to switch disk side.|HD Packs go in %system%/HdPacks/%game_name%|Custom palette in %system%/MesenPalette.pal"
+
+description = "Mesen a relatively new but highly accurate NES emulator. With great accuracy comes great resource requirements (relative to other NES emulators, at least), so this core is not a great choice for weak mobile devices or other low-power/embedded platforms. However, it is the best choice for users who seek the most accurate reproduction of the NES hardware. Mesen also supports some fun enhancements, such as HD sprite replacement packs."
diff --git a/games/mesen-x/slack-desc b/games/mesen-x/slack-desc
new file mode 100644
index 0000000000..d83db9b130
--- /dev/null
+++ b/games/mesen-x/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 ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+mesen-x: mesen-x (NES/Famicom Emulator)
+mesen-x:
+mesen-x: Mesen X is a cross-platform (Windows & Linux) NES/Famicom emulator
+mesen-x: built in C++ and C#.
+mesen-x:
+mesen-x: https://www.mesen.ca
+mesen-x:
+mesen-x:
+mesen-x:
+mesen-x:
+mesen-x: