From ea523e14cc558b00c3b42ab6cabd0c54a7781f26 Mon Sep 17 00:00:00 2001 From: Alexey 'Cluster' Avdyukhin Date: Sat, 7 Oct 2017 12:31:12 +0300 Subject: SNES ready --- core_modules/snes9x2010.hmod/bin/snes | 24 ++++++- core_modules/snes9x2010.hmod/bin/snes10 | 2 - .../etc/preinit.d/pe9b0_retroarch_snes | 1 + .../snes9x2010.hmod/usr/bin/clover-canoe-shvc | 80 ++++++++++++++++++++++ retroarch.hmod/bin/retroarch-clover-child | 21 +++++- 5 files changed, 124 insertions(+), 4 deletions(-) delete mode 100755 core_modules/snes9x2010.hmod/bin/snes10 create mode 100644 core_modules/snes9x2010.hmod/etc/preinit.d/pe9b0_retroarch_snes create mode 100755 core_modules/snes9x2010.hmod/usr/bin/clover-canoe-shvc mode change 100644 => 100755 retroarch.hmod/bin/retroarch-clover-child diff --git a/core_modules/snes9x2010.hmod/bin/snes b/core_modules/snes9x2010.hmod/bin/snes index 215b4ab..f0ff36f 100755 --- a/core_modules/snes9x2010.hmod/bin/snes +++ b/core_modules/snes9x2010.hmod/bin/snes @@ -1,2 +1,24 @@ #!/bin/sh -exec retroarch-clover snes9x2010 "$@" + +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 + dd if="$filename" of="$tmppath/$filebase.bin" bs=48 skip=1 + filename=$tmppath/$filebase.bin +fi +shift + +exec retroarch-clover snes9x2010 "$filename" "$@" diff --git a/core_modules/snes9x2010.hmod/bin/snes10 b/core_modules/snes9x2010.hmod/bin/snes10 deleted file mode 100755 index 215b4ab..0000000 --- a/core_modules/snes9x2010.hmod/bin/snes10 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec retroarch-clover snes9x2010 "$@" diff --git a/core_modules/snes9x2010.hmod/etc/preinit.d/pe9b0_retroarch_snes b/core_modules/snes9x2010.hmod/etc/preinit.d/pe9b0_retroarch_snes new file mode 100644 index 0000000..82b9be4 --- /dev/null +++ b/core_modules/snes9x2010.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/snes9x2010.hmod/usr/bin/clover-canoe-shvc b/core_modules/snes9x2010.hmod/usr/bin/clover-canoe-shvc new file mode 100755 index 0000000..6ce93c6 --- /dev/null +++ b/core_modules/snes9x2010.hmod/usr/bin/clover-canoe-shvc @@ -0,0 +1,80 @@ +#!/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" +} + +original_options=$@ +options="" + +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) + case "$2" in + keep-aspect-ratio) options="$options -filter 1 -magfilter 3" ;; + pixel-perfect) options="$options -filter 1 --pixel-perfect" ;; + crt-filter) options="$options -filter 2 -magfilter 1" ;; + esac + shift + ;; + --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 ;; + *.sfrom) + if [ -f "$1.gz" ]; then + options="$options /tmp/ROM.sfrom" + gunzip -c "$1.gz" > /tmp/ROM.sfrom + rom=/tmp/ROM.sfrom + else + options="$options $1" + rom=$1 + fi + ;; + *) options="$options $1" ;; + esac + shift +done + +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 + +if [ -z "$retroarch" ]; then + exec canoe-shvc $options $log +else + exec /bin/snes "$rom" $original_options +fi diff --git a/retroarch.hmod/bin/retroarch-clover-child b/retroarch.hmod/bin/retroarch-clover-child old mode 100644 new mode 100755 index cd313e1..14ccbb1 --- a/retroarch.hmod/bin/retroarch-clover-child +++ b/retroarch.hmod/bin/retroarch-clover-child @@ -14,6 +14,7 @@ autosave="/var/cache/$id.state.auto" rsram="/var/cache/$id.srm" rsav="/var/cache/$id.sav" t_suffix=_time.txt +demo_time=30 shift 2 crt=0 @@ -35,11 +36,14 @@ while [ $# -gt 0 ]; do [ "$1" == "--ra-extra" ] && extra=$2 [ "$1" == "--ra-nosaves" ] && nosaves=1 [ "$1" == "--save-time-path" ] && timefile=$2 + [ "$1" == "--replay-inputs" ] && demo=1 shift done [ -z "$timefile" ] && timefile=$load$t_suffix +[ ! -z "$demo" ] && load=$(dirname $load)/savestate + # saves if any rm -f /var/cache/*.state /var/cache/*.auto /var/cache/*.srm /var/cache/*.sav if [ ! -z "$load" ] && [ -f "$load" ] && [ -z "$nosaves" ]; then @@ -100,7 +104,13 @@ power_pid=$! dd if=$reset_file of=/dev/null count=1 2> /dev/null & reset_pid=$! -sleep 2 +# Demo mode enabled +if [ ! -z "$demo" ]; then + dd if=/dev/input/event2 of=/dev/null count=1 2> /dev/null & + anybutton_pid=$! +fi + +sleep 3 rm -f /var/cache/*.state /var/cache/*.auto /var/cache/*.srm /var/cache/*.sav # Playing games until reset pressed @@ -108,11 +118,20 @@ while [ true ]; do kill -0 $rpid 2> /dev/null || break kill -0 $reset_pid 2> /dev/null || break kill -0 $power_pid 2> /dev/null || break + if [ ! -z "$demo" ]; then + # Exit on any button + kill -0 $anybutton_pid 2> /dev/null || break + # Or after some time + ts2=$(date +"%s") + tp=$((ts2 - ts)) + [ "$tp" -ge "$demo_time" ] && break + fi done kill $rpid 2> /dev/null kill -KILL $reset_pid 2> /dev/null kill -KILL $power_pid 2> /dev/null +[ ! -z "$demo" ] && kill -KILL $anybutton_pid 2> /dev/null [ ! -z "$save" ] && mkdir -p $(dirname "$save") [ ! -z "$sram" ] && mkdir -p $(dirname "$sram") -- cgit v1.2.3