From 165f2f2bf7c1a0389fe98df877f6d13c742c4960 Mon Sep 17 00:00:00 2001 From: pcm720 Date: Wed, 18 Oct 2017 18:12:57 +0300 Subject: Added SNES9x core (1.54.1 ed5b457) --- core_modules/snes9x.hmod/bin/snes | 26 +++++ .../etc/libretro/core/snes9x_libretro.so | Bin 0 -> 1920459 bytes .../etc/libretro/info/snes9x_libretro.info | 12 +++ .../snes9x.hmod/etc/preinit.d/pe9b0_retroarch_snes | 1 + core_modules/snes9x.hmod/install | 4 + core_modules/snes9x.hmod/readme.txt | 17 ++++ core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc | 106 +++++++++++++++++++++ 7 files changed, 166 insertions(+) create mode 100755 core_modules/snes9x.hmod/bin/snes create mode 100644 core_modules/snes9x.hmod/etc/libretro/core/snes9x_libretro.so create mode 100644 core_modules/snes9x.hmod/etc/libretro/info/snes9x_libretro.info create mode 100644 core_modules/snes9x.hmod/etc/preinit.d/pe9b0_retroarch_snes create mode 100644 core_modules/snes9x.hmod/install create mode 100644 core_modules/snes9x.hmod/readme.txt create mode 100755 core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc diff --git a/core_modules/snes9x.hmod/bin/snes b/core_modules/snes9x.hmod/bin/snes new file mode 100755 index 0000000..4eaef77 --- /dev/null +++ b/core_modules/snes9x.hmod/bin/snes @@ -0,0 +1,26 @@ +#!/bin/sh + +filename=$1 +filebase=$(basename "$filename") +extension="${filebase##*.}" +tmppath=/tmp/rom +if [ "$extension" == "7z" ]; then + mkdir -p $tmppath + rm -rf $tmppath/* + cd $tmppath + tiny7zx x $filename + filename=$tmppath/$(ls) +fi + +filebase=$(basename "$filename") +extension="${filebase##*.}" +if [ "$extension" == "sfrom" ]; then + mkdir -p $tmppath + rm -f $tmppath/*.7z + rm -f $tmppath/*.bin + dd if="$filename" of="$tmppath/$filebase.bin" bs=48 skip=1 + filename=$tmppath/$filebase.bin +fi +shift + +exec retroarch-clover snes9x "$filename" "$@" diff --git a/core_modules/snes9x.hmod/etc/libretro/core/snes9x_libretro.so b/core_modules/snes9x.hmod/etc/libretro/core/snes9x_libretro.so new file mode 100644 index 0000000..76d3bb3 Binary files /dev/null and b/core_modules/snes9x.hmod/etc/libretro/core/snes9x_libretro.so differ diff --git a/core_modules/snes9x.hmod/etc/libretro/info/snes9x_libretro.info b/core_modules/snes9x.hmod/etc/libretro/info/snes9x_libretro.info new file mode 100644 index 0000000..338b2bf --- /dev/null +++ b/core_modules/snes9x.hmod/etc/libretro/info/snes9x_libretro.info @@ -0,0 +1,12 @@ +display_name = "SNES / Super Famicom (Snes9x)" +authors = "Snes9x Team" +supported_extensions = "smc|sfc|swc|fig" +corename = "Snes9x" +manufacturer = "Nintendo" +categories = "Emulator" +systemname = "Super Nintendo Entertainment System" +database = "Nintendo - Super Nintendo Entertainment System|Nintendo - Super Nintendo Entertainment System Hacks|Nintendo - Sufami Turbo" +license = "Non-commercial" +permissions = "" +display_version = "1.53" +supports_no_game = "false" diff --git a/core_modules/snes9x.hmod/etc/preinit.d/pe9b0_retroarch_snes b/core_modules/snes9x.hmod/etc/preinit.d/pe9b0_retroarch_snes new file mode 100644 index 0000000..82b9be4 --- /dev/null +++ b/core_modules/snes9x.hmod/etc/preinit.d/pe9b0_retroarch_snes @@ -0,0 +1 @@ +[ -f "$mountpoint/usr/bin/clover-canoe-shvc" ] && overmount /usr/bin/clover-canoe-shvc diff --git a/core_modules/snes9x.hmod/install b/core_modules/snes9x.hmod/install new file mode 100644 index 0000000..6e0a007 --- /dev/null +++ b/core_modules/snes9x.hmod/install @@ -0,0 +1,4 @@ +transfer_default +chmod +x $rootfs/bin/* +chmod +x $rootfs/usr/bin/* +return 1 diff --git a/core_modules/snes9x.hmod/readme.txt b/core_modules/snes9x.hmod/readme.txt new file mode 100644 index 0000000..bf2322a --- /dev/null +++ b/core_modules/snes9x.hmod/readme.txt @@ -0,0 +1,17 @@ +=== SNES9x core for RetroArch === + +This module will add support for Super Famicom / Super Nintendo games to RetroArch +Due to some bug in the core savestates do not work properly. + +Available executables and arguments: +- /bin/snes + runs "snes9x" core + +For SNES Classic Mini users: +please note that you can also add "--retroarch" argument to "clover-canoe-shvc" to use RetroArch instead of original emulator. Use it for problem games. + +Core by libretro +Module by pcm +Hakchi module system by madmonkey +NES Mini shell integration by Cluster +(c) 2016-2017 diff --git a/core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc b/core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc new file mode 100755 index 0000000..02f43c8 --- /dev/null +++ b/core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc @@ -0,0 +1,106 @@ +#!/bin/sh + +set -x + +export MALI_NOCLEAR=1 + +decorative_options() +{ + local fn="$1_options.txt" + if [ ! -f "$fn" ] ; then + return + fi + while read option ; do + case "$option" in + hue) printf ' --decorative-frame-hue';; + luminosity) printf ' --decorative-frame-luminosity';; + saturation) printf ' --decorative-frame-saturation';; + esac + done < "$fn" +} + +args=$@ +options="" +retroarch=0 +clovercon_file=/dev/clovercon1 +video_mode=keep-aspect-ratio +mode1="-filter 2 -magfilter 1" +mode2="-filter 1 -magfilter 3" +mode3="-filter 1 --pixel-perfect" + +while [ $# -gt 0 ] ; do + case "$1" in + --title-code) title_code="$2"; shift ;; + --load-state-file) options="$options -resume" ;; + --save-data-backing-file) options="$options --sram-file" ;; + --replay-inputs) options="$options -replay-all -replay" ;; + --record-inputs) options="$options -record-next -enable-pad-debug-controls" ;; + --video-mode) + video_mode=$2 + shift + ;; + --no-scanlines) + mode1="-filter 1 -magfilter 1" + ;; + --no-smooth) + mode1="-filter 2 -magfilter 3" + ;; + --smooth43) + mode2="-filter 1 -magfilter 1" + ;; + --rollback-mode) + case "$2" in + record) options="$options -rollback-mode 1" ;; + replay) options="$options -rollback-mode 2" ;; + esac + options="$options --rollback-ui /usr/share/canoe/rollback-ui" + options="-rollback-snapshot-period 720 $options" + options="$options --enable-sram-file-hash" + shift + ;; + --rollback-output-dir) options="$options -rollback-output-dir $2"; shift ;; + --rollback-input-dir) options="$options -rollback-input-dir $2"; shift ;; + --decorative-frame-path) options="$options --use-decorative-frame $2 $(decorative_options $2)"; shift ;; + -retroarch) retroarch=1 ;; + --retroarch) retroarch=1 ;; + --core) core=$2; shift ;; + -core) core=$2; shift ;; + *.sfrom) + if [ -f "$1.gz" ]; then + options="$options /tmp/ROM.sfrom" + gunzip -c "$1.gz" > /tmp/ROM.sfrom + filename=/tmp/ROM.sfrom + else + options="$options $1" + filename=$1 + fi + ;; + *) options="$options $1" ;; + esac + shift +done + +case "$video_mode" in + keep-aspect-ratio) options="$options $mode2" ;; + pixel-perfect) options="$options $mode3" ;; + crt-filter) options="$options $mode1" ;; +esac + +read BUILD_TYPE < /etc/clover/buildtype +case "$BUILD_TYPE" in +devel) log="-log $title_code.log -log-append --debug-menu-settings /var/lib/clover/canoe/debug-menu.json --decorative-frames-path /usr/share/backgrounds" ;; +test) log="-log $title_code.log" ;; +*) ;; +esac + +# Hold up to forcely disable RetroArch +[ -e "$clovercon_file" ] && [ "$(cat $clovercon_file)" == "1000" ] && retroarch=0 +# Hold down to forcely enable RetroArch +[ -e "$clovercon_file" ] && [ "$(cat $clovercon_file)" == "2000" ] && retroarch=1 + +if [ "$retroarch" == "0" ]; then + exec canoe-shvc $options $log +else + [ -z "$core" ] && exec snes $filename $args + [ -z "$core" ] || exec retroarch-clover $core $filename $args +fi -- cgit v1.2.3