Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mods
diff options
context:
space:
mode:
authormadmonkey <madfkingmonkey@gmail.com>2017-10-08 15:27:58 +0300
committermadmonkey <madfkingmonkey@gmail.com>2017-10-08 15:27:58 +0300
commitf476e186a1b502d6d72fdf7dab4ab44e5b209230 (patch)
treea9ffa9521ae2ce8881d02145d8120103e38d2af1 /mods
parentafb1d8a8b5fde2e4d49ad9c42e29d64f65074718 (diff)
update scripts
Diffstat (limited to 'mods')
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/bin/busyboxbin608480 -> 608480 bytes
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/bin/rsyncbin463320 -> 463320 bytes
-rw-r--r--mods/mod_hakchi/hakchi/init15
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/bin/chmenu21
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr17
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr24
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/gameover2
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/hakchi15
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/hsqs22
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/bin/remote-exec11
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/test-menu4
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/uistart2
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/uistop2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/bin/usleepbin9628 -> 0 bytes
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon0
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec0
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit6
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines16
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions150
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup60
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package (renamed from mods/mod_hakchi/hakchi/script/package)40
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware4
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods28
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pa100_games6
-rw-r--r--mods/mod_hakchi/hakchi/script/backup36
-rw-r--r--mods/mod_hakchi/hakchi/script/install12
-rw-r--r--mods/mod_hakchi/hakchi/script/reflash27
-rw-r--r--mods/mod_hakchi/hakchi/script/transfer25
-rwxr-xr-x[-rw-r--r--]mods/mod_hakchi/sbin/init0
-rwxr-xr-x[-rw-r--r--]mods/mod_uninstall/bin/busyboxbin608480 -> 608480 bytes
-rwxr-xr-x[-rw-r--r--]mods/mod_uninstall/sbin/init0
33 files changed, 393 insertions, 156 deletions
diff --git a/mods/mod_hakchi/bin/busybox b/mods/mod_hakchi/bin/busybox
index e71f5823..e71f5823 100644..100755
--- a/mods/mod_hakchi/bin/busybox
+++ b/mods/mod_hakchi/bin/busybox
Binary files differ
diff --git a/mods/mod_hakchi/bin/rsync b/mods/mod_hakchi/bin/rsync
index d37b2b8d..d37b2b8d 100644..100755
--- a/mods/mod_hakchi/bin/rsync
+++ b/mods/mod_hakchi/bin/rsync
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/init b/mods/mod_hakchi/hakchi/init
index e885e8e0..cd1ab8d2 100644
--- a/mods/mod_hakchi/hakchi/init
+++ b/mods/mod_hakchi/hakchi/init
@@ -5,12 +5,15 @@ echo
local modname="hakchi"
local modpath="/$modname"
local mountpoint="/newroot"
-local installpath
-local firmwarepath
-local rootfs
-local preinit
-local preinitpath
-local gamepath
+local installpath=""
+local firmwarepath=""
+local rootfs=""
+local squashfs=""
+local preinit=""
+local preinitpath=""
+local sftype=""
+local sfregion=""
+local gamepath=""
local temppath="/tmp"
mkdir -p "$temppath"
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
index 5dff8aa1..8d0a6fdd 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
@@ -2,24 +2,23 @@
source /etc/preinit
script_init
-state_file=$installpath/menu
-flag=/var/startmpc.flag
+state_file="$installpath/menu"
[ -z "$1" ] && exit 1
-[ -f "$state_file" ] && prev_code=$(cat "$state_file") || prev_code=000
+[ -f "$state_file" ] && prev_code="$(cat "$state_file")" || prev_code="000"
[ "$1" == "$prev_code" ] && exit 1
-echo Switching to menu $1
+echo "Switching to menu $1"
if [ "$1" == "000" ]; then
- targetpath=$rootfs$gamepath
+ targetpath="$rootfs$gamepath"
else
- targetpath=$rootfs$gamepath/$1
+ targetpath="$rootfs$gamepath/$1"
fi
[ -d "$targetpath" ] || exit 1
-echo $1 > "$state_file"
+echo "$1" > "$state_file"
-echo New directory: $targetpath
+echo "New directory: $targetpath"
if [ "$1" != "000" ]; then
if [ -f "$rootfs$gamepath/title.fnt" ] && [ ! -f "$targetpath/title.fnt" ]; then
@@ -30,9 +29,7 @@ if [ "$1" != "000" ]; then
fi
fi
-pkill -KILL ReedPlayer-Clover
-pkill -KILL clover-mcp
-
+uistop
overmount_games
-touch "$flag"
+touch "/var/startmpc.flag"
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr b/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr
index eaf903db..0c76842f 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr
@@ -11,16 +11,16 @@ options=""
while [ $# -gt 0 ] ; do
case "$1" in
-rom)
- filename=$2
- filebase=$(basename "$filename")
+ filename="$(readlink -f "$2")"
+ filebase="$(basename "$filename")"
extension="${filebase##*.}"
- tmppath=/tmp/rom
+ tmppath="$temppath/rom"
if [ "$extension" == "7z" ]; then
- mkdir -p $tmppath
- rm -rf $tmppath/*
- cd $tmppath
- tiny7zx x $filename
- filename=$tmppath/$(ls)
+ rm -rf "$tmppath"
+ mkdir -p "$tmppath"
+ cd "$tmppath"
+ tiny7zx x "$filename"
+ filename="$tmppath/$(ls)"
fi
options="-rom $filename"
shift
@@ -31,5 +31,4 @@ while [ $# -gt 0 ] ; do
done
args="$options $cfg_snes_extra_args"
-
exec /usr/bin/clover-canoe-shvc $args
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr b/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr
index a3bed783..5160d727 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr
@@ -7,22 +7,22 @@
source /etc/preinit
script_init
-filename=$1
-filebase=$(basename "$filename")
+filename="$(readlink -f "$1")"
+filebase="$(basename "$filename")"
extension="${filebase##*.}"
-tmppath=/tmp/rom
+tmppath="$temppath/rom"
if [ "$extension" == "7z" ]; then
- mkdir -p $tmppath
- rm -rf $tmppath/*
- cd $tmppath
- tiny7zx x $filename
- filename=$tmppath/$(ls)
+ rm -rf "$tmppath"
+ mkdir -p "$tmppath"
+ cd "$tmppath"
+ tiny7zx x "$filename"
+ filename="$tmppath/$(ls)"
fi
if [ "$extension" == "gz" ]; then
- mkdir -p $tmppath
- rm -rf $tmppath/*
- gunzip -c > $tmppath/$filebase
- filename=$tmppath/$filebase
+ rm -rf "$tmppath"
+ mkdir -p "$tmppath"
+ gunzip -c > "$tmppath/$filebase"
+ filename="$tmppath/$filebase"
fi
shift
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/gameover b/mods/mod_hakchi/hakchi/rootfs/bin/gameover
new file mode 100755
index 00000000..4f824211
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/gameover
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec hakchi "$(basename "$0")" ${1+"$@"}
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/hakchi b/mods/mod_hakchi/hakchi/rootfs/bin/hakchi
new file mode 100755
index 00000000..e3493b82
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/hakchi
@@ -0,0 +1,15 @@
+#!/bin/sh
+source /etc/preinit
+script_init
+
+hakchi(){
+ [ "$1" == "hakchi" ] && shift
+ if type "$1" | grep -q '^.* is a shell function$' 2>/dev/null; then
+ ${1+"$@"}
+ else
+ echo "no such function: $@"
+ return 1
+ fi
+}
+
+hakchi "$(basename "$0")" ${1+"$@"}
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/hsqs b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
new file mode 100755
index 00000000..0b1d9d2d
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
@@ -0,0 +1,22 @@
+#!/bin/sh
+source /etc/preinit
+script_init
+
+echo "current firmware: $(currentFirmware)"
+printSoftwareInfo
+
+firmware="$1"
+if [ "$firmware" != "_nand_" ]; then
+ firmware="$(readlink -f "$1")"
+ checkFirmware "$firmware" || exit 1
+fi
+
+[ "$cfg_firmware" == "$firmware" ] && exit 0
+cfg_firmware="$firmware"
+save_config
+
+[ "$(currentFirmware)" == "$firmware" ] && exit 0
+
+echo "changing firmware to: $firmware"
+reboot
+exit 0
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
index 67789578..32977e64 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
@@ -1,16 +1,15 @@
#!/bin/sh
-mpc_flag=/var/startmpc.flag
-exec_flag=/var/exec.flag
+mpc_flag="/var/startmpc.flag"
+exec_flag="/var/exec.flag"
while [ true ]; do
- #sleep 1
if [ -f "$mpc_flag" ]; then
echo Restart!
+ rm "$mpc_flag"
/etc/init.d/S81clover-mcp start
- rm $mpc_flag
fi
if [ -f "$exec_flag" ]; then
- cmd=$(cat "$exec_flag")
- rm $exec_flag
+ cmd="$(cat "$exec_flag")"
+ rm "$exec_flag"
$cmd
fi
usleep 200000
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/test-menu b/mods/mod_hakchi/hakchi/rootfs/bin/test-menu
new file mode 100755
index 00000000..d22b60b1
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/test-menu
@@ -0,0 +1,4 @@
+#!/bin/sh
+uistop 1>/dev/null 2>&1
+/opt/test/bin/test-menu </dev/null
+uistart
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/uistart b/mods/mod_hakchi/hakchi/rootfs/bin/uistart
new file mode 100755
index 00000000..4f824211
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/uistart
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec hakchi "$(basename "$0")" ${1+"$@"}
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/uistop b/mods/mod_hakchi/hakchi/rootfs/bin/uistop
new file mode 100755
index 00000000..4f824211
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/uistop
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec hakchi "$(basename "$0")" ${1+"$@"}
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/usleep b/mods/mod_hakchi/hakchi/rootfs/bin/usleep
deleted file mode 100644
index 5ae85b68..00000000
--- a/mods/mod_hakchi/hakchi/rootfs/bin/usleep
+++ /dev/null
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon
index 9b47abc4..9b47abc4 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec
index 65395aaa..65395aaa 100644..100755
--- a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit b/mods/mod_hakchi/hakchi/rootfs/etc/preinit
index a0452250..1a4eab63 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit
@@ -3,11 +3,11 @@ rand(){
}
source_parts(){
- [ -z "$temppath" ] && local temppath=/tmp
+ [ -z "$temppath" ] && temppath="/tmp"
mkdir -p "$temppath"
- local script=$temppath/script_$(rand)
+ local script="$temppath/script_$(rand)"
rm -f "$script"
- local searchpath=$(dirname "$1")
+ local searchpath="$(dirname "$1")"
[ -d "$searchpath" ] || return 1
for i in $(find "$searchpath" -maxdepth 1 -path "$1" | sort); do
cat "$i" >> "$script"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
index 47c72734..3aeee77c 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
@@ -1,12 +1,15 @@
-set_gamepath(){
+setGamepath(){
+ sftype="nes"
+ sfregion="usa"
+ [ "$(cat "$mountpoint/etc/clover/boardtype")" == "dp-shvc" ] && sftype="snes"
+ [ "$(cat "$mountpoint/etc/clover/REGION")" == "JPN" ] && sfregion="jpn"
+
local feck="$mountpoint/var/lib/clover/profiles/0/home-menu/save/system-save.json"
- if [ -f "$mountpoint/etc/clover/version/canoe" ]; then
-# echo "SNES gamepath"
+ if [ "$sftype" == "snes" ]; then
gamepath="/usr/share/games"
[ -f "$feck" ] && mv -f "$feck" "$feck.nes"
[ -d "$feck.snes" ] && rm -rf "$feck" && mv "$feck.snes" "$feck"
else
-# echo "NES gamepath"
gamepath="/usr/share/games/nes/kachikachi"
[ -d "$feck" ] && rm -rf "$feck.snes" && mv "$feck" "$feck.snes"
[ -f "$feck.nes" ] && mv -f "$feck.nes" "$feck"
@@ -19,9 +22,12 @@ modpath="/$modname"
installpath="$mountpoint/var/lib/$modname"
firmwarepath="$installpath/firmware"
rootfs="$installpath/rootfs"
+squashfs="$installpath/squashfs"
preinit="$rootfs/etc/preinit"
preinitpath="$preinit.d"
+sftype=""
+sfregion=""
gamepath=""
-set_gamepath
temppath="/tmp"
+setGamepath
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
index 2689c24e..02febfa3 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
@@ -1,11 +1,30 @@
+squashDevice(){
+ echo "$(mount | grep -F squashfs | head -n1 | awk '{print $1;}')"
+}
+
+umountSquash(){
+ mountpoint -q "$squashfs" && umount "$squashfs"
+}
+
+mountSquash(){
+ [ -d "$(dirname "$squashfs")" ] || return 1
+ umountSquash
+ mkdir -p "$squashfs"
+ local sdev="$(squashDevice)"
+ [ -z "$sdev" ] && return 1
+ mount -o ro,noatime "$sdev" "$squashfs"
+}
+
mount_base(){
mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs "$mountpoint/var"
mkdir -p "$mountpoint/var/lib"
mount -o defaults,nosuid,nodev,noatime /dev/nandc "$mountpoint/var/lib"
+ mountSquash
}
umount_base(){
sync
+ umountSquash
umount "$mountpoint/var/lib"
umount "$mountpoint/var"
}
@@ -20,7 +39,7 @@ remove_old(){
mod_repair_etc(){
remove_old "$rootfs"
rm -f "$modpath/rootfs/etc/preinit.d/p0000_config"
- chown -R 0:0 $modpath/
+ chown -R 0:0 "$modpath/"
local etc="$temppath/etc"
rm -rf "$etc"
@@ -39,38 +58,63 @@ mod_repair_modules(){
}
remount_root(){
- [ -z "$(mount | grep -F loop)" ] || return 1
-
- local tmpmount=$modpath/var.tmp
+ local tmpmount="/var"
mkdir -p "$tmpmount"
mount --move "$mountpoint/var" "$tmpmount"
umount "$mountpoint"
- local loopfile=$tmpmount${1##$mountpoint/var}
- mount -o loop,ro "$loopfile" "$mountpoint" || shutdown
+ local loopfile="$tmpmount${1##$mountpoint/var}"
+ mount -o loop,ro,noatime "$loopfile" "$mountpoint" || shutdown
mount --move "$tmpmount" "$mountpoint/var"
}
+checkFirmware(){
+ [ -f "$1" ] || return 1
+ [ "$(hexdump -e '1/4 "%u"' -s 0 -n 4 "$1")" == "1936814952" ] || return 1
+ return 0
+}
+
+currentFirmware(){
+ local firmware="$(losetup | awk '{print $3'})"
+ if ! [ -z "$firmware" ]; then
+ echo "$firmware"
+ return 0
+ fi
+ if [ -b /dev/mapper/root-crypt ]; then
+ echo "_nand_"
+ return 0
+ fi
+ return 1
+}
+
load_firmware(){
- [ -d "$firmwarepath" ] || return 0
- local firmware=$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n 1)
- [ -f "$firmware" ] || return 0
+ [ -z "$(mount | grep -F loop0)" ] || return 1
+
+ local firmware="$mountpoint$cfg_firmware"
+ if ! checkFirmware "$firmware"; then
+ [ -d "$firmwarepath" ] || return 0
+ firmware="$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n 1)"
+ fi
+ checkFirmware "$firmware" || return 0
+
mod_repair_modules
- remount_root "$firmware" || return 0
+ umountSquash
+ remount_root "$firmware"
cryptsetup close root-crypt
- mod_repair_etc
- if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then
- overmount "/lib/modules"
- else
- echo "no modules for loaded kernel $(uname -r)"
+ mountSquash
+ if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then
+ if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then
+ overmount "/lib/modules"
+ else
+ echo "no modules for loaded kernel $(uname -r)"
+ fi
fi
- set_gamepath
}
shutdown(){
- echo shutting down...
+ echo "shutting down..."
echo
sync
umount -a -r 2>/dev/null
@@ -78,6 +122,15 @@ shutdown(){
while :;do sleep 1;:;done
}
+reboot(){
+ echo "rebooting..."
+ echo
+ sync
+ umount -a -r 2>/dev/null
+ /bin/reboot -f
+ while :;do sleep 1;:;done
+}
+
early_getty(){
cd "$modpath/transfer"
getty -ni 115200 ttyS0 -l /bin/sh
@@ -86,20 +139,24 @@ early_getty(){
copy(){
# we must create target directory
- local dirname=$(dirname "$2")
+ local dirname="$(dirname "$2")"
mkdir -p "$dirname"
rsync -ac "$1" "$2"
}
copy_mask(){
# this function is unsafe, avoid spaces in filenames!
- local dirname=$(dirname "$2")
+ local dirname="$(dirname "$2")"
mkdir -p "$dirname"
rsync -ac $1 "$2"
}
restore(){
- copy "$mountpoint$1" "$rootfs$1"
+ if mountpoint -q "$squashfs" && [ -e "$squashfs$1" ]; then
+ copy "$squashfs$1" "$rootfs$1"
+ else
+ copy "$mountpoint$1" "$rootfs$1"
+ fi
}
mount_bind(){
@@ -111,25 +168,60 @@ mount_bind(){
overmount(){
if [ "$#" == "1" ]; then
- echo overmounting $1
+ echo "overmounting $1"
mount_bind "$rootfs$1" "$mountpoint$1" && return 0
fi
if [ "$#" == "2" ]; then
- echo overmounting $1 on $2
+ echo "overmounting $1 on $2"
mount_bind "$rootfs$1" "$mountpoint$2" && return 0
fi
- echo overmounting failed
+ echo "overmounting failed"
+ return 1
+}
+
+containsGames(){
+ [ -d "$1" ] || return 1
+ [ -z "$(cd "$1";ls CLV-* 2>/dev/null)" ] && return 1
+ return 0
}
overmount_games(){
- local menu_code=000
- [ -f "$installpath/menu" ] && menu_code=$(cat "$installpath/menu")
- [ -z "$menu_code" ] && menu_code=000
- echo menu code: $menu_code
+ local menu_code="000"
+ [ -f "$installpath/menu" ] && menu_code="$(cat "$installpath/menu")"
+ [ -z "$menu_code" ] && menu_code="000"
+ echo "menu code: $menu_code"
if [ "$menu_code" != "000" ]; then
- if [ -d "$rootfs$gamepath/$menu_code" ]; then
+ if containsGames "$rootfs$gamepath/$menu_code"; then
overmount "$gamepath/$menu_code" "$gamepath" && return 0
+ else
+ echo "no romz found at: $rootfs$gamepath/$menu_code"
fi
fi
- overmount "$gamepath"
+ if containsGames "$rootfs$gamepath"; then
+ overmount "$gamepath" && return 0
+ fi
+ echo "no romz found at: $rootfs$gamepath"
+ return 1
+}
+
+uistop(){
+ killall -9 clover-mcp
+ killall -9 ReedPlayer-Clover
+ killall kachikachi
+ killall canoe-shvc
+ killall retroarch
+}
+
+uistart(){
+ uistop 1>/dev/null 2>&1
+ /etc/init.d/S81clover-mcp start
+}
+
+gameover(){
+ poweroff
+}
+
+printSoftwareInfo(){
+ echo "software=$sftype"
+ echo "region=$sfregion"
}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup
new file mode 100644
index 00000000..8377e1d7
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0020_backup
@@ -0,0 +1,60 @@
+backup_one(){
+ [ ! -f "$backuppath/$1.gz" ] || return 0
+ echo "backup $1"
+ dd "if=/dev/$1" bs=128K | gzip > "$backuppath/$1.gz"
+}
+
+backup_nandb(){
+ [ -b /dev/mapper/root-crypt ] || return 1
+ mkdir -p "$backuppath" || return 1
+ cd "$mountpoint/etc/clover" || return 1
+ local nandb_filename="$(cat boardtype)-$(cat VERSION)-$(cat REGION).hsqs"
+ nandb_filename="$(echo "$nandb_filename" | tr '[:upper:]' '[:lower:]')"
+ cd "$backuppath" || return 1
+ if [ ! -f "$nandb_filename" ]; then
+ echo "backup $nandb_filename"
+ dd if=/dev/mapper/root-crypt bs=4k \
+ count=$((($(hexdump -e '1/4 "%u"' -s $((0x28)) -n 4 /dev/mapper/root-crypt)+0xfff)/0x1000)) \
+ > "$nandb_filename" && \
+ md5sum "$nandb_filename" > "$nandb_filename.md5"
+ fi
+}
+
+backup_nandc(){
+ [ "$cf_backup_nandc" == "y" ] || return 0
+ local backuppath="$installpath/backup"
+ [ ! -f "$backuppath/nandc.gz" ] || return 0
+ backuppath="$modpath"
+ backup_one nandc
+}
+
+backup(){
+ local backuppath="$installpath/backup"
+ if [ -f "$modpath/nandc.gz" ]; then
+ echo "move nandc"
+ mkdir -p "$backuppath"
+ mv "$modpath/nandc.gz" "$backuppath/"
+ fi
+ [ "$cf_backup" == "y" ] || return 0
+ backup_nandb
+ cd /
+ [ "$cf_backup_dummy" == "y" ] || return 0
+ backup_one nanda
+ backup_one nandd
+ backup_one nande
+}
+
+dumpFirmware(){
+ if [ -z "$1" ]; then
+ echo "specify path"
+ return 1
+ fi
+ local backuppath="$1"
+ if backup_nandb; then
+ cd /
+ return 0
+ fi
+ echo "whoopsie"
+ cd /
+ return 1
+}
diff --git a/mods/mod_hakchi/hakchi/script/package b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package
index 68396efc..3c3894f3 100644
--- a/mods/mod_hakchi/hakchi/script/package
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package
@@ -17,13 +17,15 @@ transfer_default(){
}
transfer_path(){
- local transferpath=$1
+ local transferpath="$1"
chown -R 0:0 "$transferpath/"
find "$transferpath/" -maxdepth 1 -type f -iname "readme.*" -delete
find "$transferpath/" -maxdepth 1 -type f -iname "*.txt" -delete
find "$transferpath/" -maxdepth 1 -type f -iname "*.md" -delete
local docopy=y
cd "$transferpath"
+ [ -d "./bin" ] && chmod 755 ./bin/*
+ [ -d "./etc/init.d" ] && chmod 755 ./etc/init.d/*
transfer_file "$transferpath/install" || docopy=n
cd "$transferpath"
transfer_file "$transferpath/transfer" || docopy=n
@@ -31,21 +33,21 @@ transfer_path(){
}
pack_upath(){
- echo $installpath/hmod/uninstall-$(basename "$1" .hmod)
+ echo "$installpath/hmod/uninstall-$(basename "$1" .hmod)"
}
pack_install(){
- echo installing $(basename "$1" .hmod)...
+ echo "installing $(basename "$1" .hmod)..."
if [ -f "$1" ]; then
- local transferpath=$temppath/pack
+ local transferpath="$temppath/pack"
rm -rf "$transferpath"
mkdir -p "$transferpath"
cd "$transferpath" && tar -xzf "$1"
else
- local transferpath=$1
+ local transferpath="$1"
fi
transfer_path "$transferpath"
- echo creating uninstall for $(basename "$1" .hmod)...
+ echo "creating uninstall for $(basename "$1" .hmod)..."
echo >> "$transferpath/uninstall"
echo "# auto-generated" >> "$transferpath/uninstall"
cd "$transferpath"
@@ -54,7 +56,7 @@ pack_install(){
find . -depth -mindepth 1 -type d -exec echo rmdir \"\$rootfs/{}\" + >> "$transferpath/uninstall"
[ $(stat -c%s "$transferpath/uninstall") -gt 8 ] || rm -f "$transferpath/uninstall"
cd /
- local unfile=$(pack_upath "$1")
+ local unfile="$(pack_upath "$1")"
if [ -f "$transferpath/uninstall" ]; then
dos2unix -u "$transferpath/uninstall"
sed -i "s#rmdir #rmdir --ignore-fail-on-non-empty #" "$transferpath/uninstall"
@@ -63,23 +65,29 @@ pack_install(){
else
rm -f "$unfile"
fi
- echo package $(basename "$1" .hmod) installed
+ echo "package $(basename "$1" .hmod) installed"
+}
+
+pack_list(){
+ if [ -d "$installpath/hmod" ]; then
+ for i in $(find "$installpath/hmod/" -maxdepth 1 -type f -name "uninstall-*" | sort); do
+ echo "${i##$installpath/hmod/uninstall-}"
+ done
+ fi
}
pack_uninstall(){
if [ "$1" == "all" ]; then
- if [ -d "$installpath/hmod" ]; then
- for i in $(find "$installpath/hmod/" -maxdepth 1 -type f -name "uninstall-*" | sort); do
- pack_uninstall "$i"
- done
- fi
+ for i in $(pack_list); do
+ pack_uninstall "$i"
+ done
else
- local unfile=$(pack_upath "$1")
+ local unfile="$(pack_upath "$1")"
if [ -f "$unfile" ]; then
- echo uninstalling $(basename "$1" .hmod)...
+ echo "uninstalling $(basename "$1" .hmod)..."
cd "$rootfs"
transfer_file "$unfile"
- echo package $(basename "$1" .hmod) uninstalled
+ echo "package $(basename "$1" .hmod) uninstalled"
fi
fi
cd /
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
index 68e938f6..2130e4ea 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
@@ -1,4 +1,4 @@
-cfg_boot_stock_firmware='n'
cfg_boot_stock='n'
cfg_disable_armet='y'
+cfg_firmware='auto'
cfg_nes_extra_args='--ppu-palette 2'
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit
index 6fb17938..18d36b22 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit
@@ -5,5 +5,5 @@ if [ "$cfg_boot_stock" == "y" ]; then
umount_base 2>/dev/null
return 0
else
- echo loading $modname
+ echo "loading $modname"
fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
index 43d756fd..28d28566 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
@@ -1 +1,3 @@
-[ "$cfg_boot_stock_firmware" == "y" ] || load_firmware
+[ "$cfg_firmware" == "_nand_" ] || load_firmware
+mod_repair_etc
+setGamepath
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods
new file mode 100644
index 00000000..ca3b93df
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods
@@ -0,0 +1,28 @@
+local transferpath="$installpath/transfer"
+if [ -d "$transferpath" ]; then
+ cd "$transferpath"
+ [ -f "$transferpath/earlybird" ] && source "$transferpath/earlybird"
+ rm -f "$transferpath/earlybird"
+
+ [ -f "$transferpath/uninstall" ] && packs_uninstall $(cat "$transferpath/uninstall")
+ rm -f "$transferpath/uninstall"
+
+ [ -f "$transferpath/hmod/uninstall" ] && packs_uninstall $(cat "$transferpath/hmod/uninstall")
+ rm -f "$transferpath/hmod/uninstall"
+
+ packs_install "$transferpath"
+
+ if [ -d "$transferpath/hmod" ]; then
+ packs_install "$transferpath/hmod"
+ rm -rf "$transferpath/hmod"
+ fi
+
+ echo "transferring data..."
+ transfer_path "$transferpath"
+ echo
+ cd /
+ rm -rf "$transferpath"
+ save_config
+ reboot
+fi
+unset transferpath
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pa100_games b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pa100_games
index 73cf7716..d0df2442 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pa100_games
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pa100_games
@@ -1,5 +1 @@
-if [ -z "$(ls $rootfs$gamepath/CLV-* 2>/dev/null)" ]; then
- echo "no romz found"
-else
- overmount_games
-fi
+overmount_games
diff --git a/mods/mod_hakchi/hakchi/script/backup b/mods/mod_hakchi/hakchi/script/backup
deleted file mode 100644
index 55f89ef8..00000000
--- a/mods/mod_hakchi/hakchi/script/backup
+++ /dev/null
@@ -1,36 +0,0 @@
-backup_one(){
- [ ! -f "$backuppath/$1.gz" ] || return 0
- echo backup $1
- dd if=/dev/$1 bs=128K | gzip > "$backuppath/$1.gz"
-}
-
-backup_nandc(){
- [ "$cf_backup_nandc" == "y" ] || return 0
- local backuppath=$installpath/backup
- [ ! -f "$backuppath/nandc.gz" ] || return 0
- backuppath=$modpath
- backup_one nandc
-}
-
-backup(){
- local backuppath=$installpath/backup
- if [ -f "$modpath/nandc.gz" ]; then
- echo move nandc
- mkdir -p "$backuppath"
- mv "$modpath/nandc.gz" "$backuppath/"
- fi
- [ "$cf_backup" == "y" ] || return 0
- mkdir -p "$backuppath"
- local nandb_filename=$(cat $mountpoint/etc/clover/boardtype)-$(cat $mountpoint/etc/clover/VERSION).hsqs
- if [ ! -f "$backuppath/$nandb_filename" ]; then
- echo backup $nandb_filename
- dd if=/dev/mapper/root-crypt bs=4k \
- count=$((($(hexdump -e '1/4 "%u"' -s $((0x28)) -n 4 /dev/mapper/root-crypt)+0xfff)/0x1000)) \
- > "$backuppath/$nandb_filename"
- md5sum "$backuppath/$nandb_filename" > "$backuppath/$nandb_filename.md5"
- fi
- [ "$cf_backup_dummy" == "y" ] || return 0
- backup_one nanda
- backup_one nandd
- backup_one nande
-}
diff --git a/mods/mod_hakchi/hakchi/script/install b/mods/mod_hakchi/hakchi/script/install
index fdd3df92..9ca6806e 100644
--- a/mods/mod_hakchi/hakchi/script/install
+++ b/mods/mod_hakchi/hakchi/script/install
@@ -1,24 +1,24 @@
mod_uninstall(){
- echo uninstalling $modname...
+ echo "uninstalling $modname..."
rm -rf "$installpath"
- echo done.
+ echo "done."
shutdown
}
mod_repair(){
mod_repair_etc full
- chmod 755 $modpath/rootfs/bin/*
- chmod 755 $modpath/rootfs/etc/init.d/*
+ cd "$modpath/rootfs/bin" && chmod 755 *
+ cd "$modpath/rootfs/etc/init.d" && chmod 755 *
+ cd /
copy "/bin/" "$rootfs/bin/"
copy "/sbin/cryptsetup" "$rootfs/bin/cryptsetup"
copy "$modpath/rootfs/" "$rootfs/"
}
mod_install(){
- echo installing $modname...
+ echo "installing $modname..."
rm -rf "$rootfs"
restore "/bin/"
restore "/etc/"
- restore "$gamepath/"
mod_repair
}
diff --git a/mods/mod_hakchi/hakchi/script/reflash b/mods/mod_hakchi/hakchi/script/reflash
new file mode 100644
index 00000000..a7beaefb
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/script/reflash
@@ -0,0 +1,27 @@
+local firmware="$(find -type f -name "*.hsqs" | sort | head -n 1)"
+if [ -f "$firmware" ]; then
+ umount_base
+ umount "$mountpoint"
+
+ cryptsetup close root-crypt
+ cryptsetup open /dev/nandb root-crypt --type plain --cipher aes-xts-plain --key-file /key-file
+
+ dd if=/dev/zero of=/dev/mapper/root-crypt bs=512 "seek=$(($(stat -c%s "$firmware")/512))"
+ dd "if=$firmware" of=/dev/mapper/root-crypt bs=512
+
+ cryptsetup close root-crypt
+ cryptsetup open /dev/nandb root-crypt --readonly --type plain --cipher aes-xts-plain --key-file /key-file
+
+ mount -o ro,noatime /dev/mapper/root-crypt "$mountpoint"
+
+ local tmk="$(pwd)/mkfs.txz"
+ if [ -f "$tmk"]; then
+ cd / && tar xJf "$tmk"
+ mount_bind "$mountpoint/lib" "/lib"
+# /sbin/mkfs.ext4 -L data -m 0 /dev/nandc
+ mkfs.ext2 -L data -m 0 /dev/nandc
+ umount "/lib"
+ fi
+
+ mount_base
+fi
diff --git a/mods/mod_hakchi/hakchi/script/transfer b/mods/mod_hakchi/hakchi/script/transfer
index 0ec983c7..237d2c42 100644
--- a/mods/mod_hakchi/hakchi/script/transfer
+++ b/mods/mod_hakchi/hakchi/script/transfer
@@ -1,7 +1,4 @@
-source "$modpath/script/backup"
source "$modpath/script/install"
-source "$modpath/script/package"
-source "$modpath/script/games"
backup_nandc
mount_base
@@ -11,17 +8,26 @@ source_config
local transferpath="$modpath/transfer"
+cd "$transferpath"
+
[ -f "$transferpath/earlybird" ] && source "$transferpath/earlybird"
rm -f "$transferpath/earlybird"
+if [ -d "$transferpath/reflash" ]; then
+ cd "$transferpath/reflash"
+ source "$modpath/script/reflash"
+ cd "$transferpath"
+ rm -rf "$transferpath/reflash"
+fi
+
# transfer firmware, if any
if [ -d "$transferpath/firmware" ]; then
- local firmware=$(find "$transferpath/firmware" -type f -name "*.hsqs" | sort | head -n 1)
+ local firmware="$(find "$transferpath/firmware" -type f -name "*.hsqs" | sort | head -n 1)"
if [ -f "$firmware" ]; then
mkdir -p "$firmwarepath"
- local firmware_name=$(basename "$firmware")
+ local firmware_name="$(basename "$firmware")"
find "$firmwarepath" -type f -not -name "$firmware_name" -delete
- echo transferring firmware...
+ echo "transferring firmware..."
copy "$firmware" "$firmwarepath/"
fi
rm -rf "$transferpath/firmware"
@@ -32,7 +38,7 @@ source_parts "$modpath/rootfs/etc/preinit.d/p????_*firmware*"
# now we can do install/repair
if [ -f "$preinit" ]; then
- echo $modname already installed
+ echo "$modname already installed"
mod_repair
else
mod_install
@@ -50,12 +56,15 @@ if [ -d "$transferpath/hmod" ]; then
fi
if [ -d "$transferpath/games" ]; then
+ source "$modpath/script/games"
transfer_games "$transferpath/games"
rm -rf "$transferpath/games"
fi
-echo transferring data...
+echo "transferring data..."
transfer_path "$transferpath"
+echo
save_config
[ "$cf_shutdown" != "y" ] || shutdown
+echo
diff --git a/mods/mod_hakchi/sbin/init b/mods/mod_hakchi/sbin/init
index 52cc5fa1..52cc5fa1 100644..100755
--- a/mods/mod_hakchi/sbin/init
+++ b/mods/mod_hakchi/sbin/init
diff --git a/mods/mod_uninstall/bin/busybox b/mods/mod_uninstall/bin/busybox
index e71f5823..e71f5823 100644..100755
--- a/mods/mod_uninstall/bin/busybox
+++ b/mods/mod_uninstall/bin/busybox
Binary files differ
diff --git a/mods/mod_uninstall/sbin/init b/mods/mod_uninstall/sbin/init
index 52cc5fa1..52cc5fa1 100644..100755
--- a/mods/mod_uninstall/sbin/init
+++ b/mods/mod_uninstall/sbin/init