Skip to content

Commit

Permalink
Added SNES9x core (1.54.1 ed5b457)
Browse files Browse the repository at this point in the history
  • Loading branch information
pcm720 committed Oct 18, 2017
1 parent 1a325d4 commit 165f2f2
Show file tree
Hide file tree
Showing 7 changed files with 166 additions and 0 deletions.
26 changes: 26 additions & 0 deletions core_modules/snes9x.hmod/bin/snes
Original file line number Diff line number Diff line change
@@ -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" "$@"
Binary file not shown.
12 changes: 12 additions & 0 deletions core_modules/snes9x.hmod/etc/libretro/info/snes9x_libretro.info
Original file line number Diff line number Diff line change
@@ -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"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[ -f "$mountpoint/usr/bin/clover-canoe-shvc" ] && overmount /usr/bin/clover-canoe-shvc
4 changes: 4 additions & 0 deletions core_modules/snes9x.hmod/install
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
transfer_default
chmod +x $rootfs/bin/*
chmod +x $rootfs/usr/bin/*
return 1
17 changes: 17 additions & 0 deletions core_modules/snes9x.hmod/readme.txt
Original file line number Diff line number Diff line change
@@ -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 <rom> <clover_args>
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
106 changes: 106 additions & 0 deletions core_modules/snes9x.hmod/usr/bin/clover-canoe-shvc
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 165f2f2

Please sign in to comment.