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
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-12-09 19:03:48 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-12-09 19:03:48 +0300
commit6a46aadeb570033313cc0097013c3778435a09cb (patch)
tree238ed14060a7effcebfee2e71e6395006282965c
parent46348fd9ce54e99853991a69e6261dfdc0dd08ed (diff)
Sync to madmonkey's hakchi
-rw-r--r--mods/mod_hakchi/hakchi/config1
-rw-r--r--mods/mod_hakchi/hakchi/init58
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/chmenu4
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr11
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr16
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/hsqs3
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/remote-exec22
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/hakchi.pngbin0 -> 4620 bytes
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon4
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec4
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/inittab1
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit12
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines20
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions185
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb58
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config4
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit6
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo1
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb1
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware9
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pffff_config2
-rw-r--r--mods/mod_hakchi/hakchi/script/install22
-rw-r--r--mods/mod_hakchi/hakchi/script/reflash26
-rw-r--r--mods/mod_hakchi/hakchi/script/transfer4
-rwxr-xr-xmods/mod_hakchi/sbin/init2
26 files changed, 329 insertions, 149 deletions
diff --git a/mods/mod_hakchi/hakchi/config b/mods/mod_hakchi/hakchi/config
index 4efc5ca1..6e90132e 100644
--- a/mods/mod_hakchi/hakchi/config
+++ b/mods/mod_hakchi/hakchi/config
@@ -2,3 +2,4 @@ local cf_backup_dummy='n'
local cf_backup='n'
local cf_backup_nandc='n'
local cf_shutdown='n'
+local cf_usb='y'
diff --git a/mods/mod_hakchi/hakchi/init b/mods/mod_hakchi/hakchi/init
index cd1ab8d2..50fc66a4 100644
--- a/mods/mod_hakchi/hakchi/init
+++ b/mods/mod_hakchi/hakchi/init
@@ -1,38 +1,36 @@
-init(){
-echo
-/bin/busybox --install -s /bin/
+#!/bin/sh
-local modname="hakchi"
-local modpath="/$modname"
-local mountpoint="/newroot"
-local installpath=""
-local firmwarepath=""
-local rootfs=""
-local squashfs=""
-local preinit=""
-local preinitpath=""
-local sftype=""
-local sfregion=""
-local gamepath=""
-local temppath="/tmp"
+init(){
+ echo
+ export modname="hakchi"
+ export modpath="/$modname"
+ export mountpoint="/newroot"
+ export temppath="/tmp"
-mkdir -p "$temppath"
+ /bin/busybox --install -s /bin/
+ mkdir -p "$temppath"
+ for dir in etc lib usr; do
+ [ -e "/$dir" ] || ln -s "$mountpoint/$dir" "/$dir"
+ done
+ export PATH="/sbin:$modpath/rootfs/bin:/bin:$mountpoint/sbin:/usr/sbin:$mountpoint/bin:/usr/bin"
-source "$modpath/config"
-source "$modpath/script/base"
+ source "$modpath/config"
+ source "$modpath/script/base"
-if [ -d "$modpath/transfer" ]; then
- source "$modpath/script/transfer"
-else
- mount_base
-fi
+ if [ -d "$modpath/transfer" ]; then
+ export cf_usb='n'
+ source "$modpath/script/transfer"
+ else
+ mount_base
+ fi
-if [ -f "$preinit" ]; then
- source "$preinit"
- preinit
-else
- umount_base
-fi
+ if [ -f "$preinit" ]; then
+ PATH="$rootfs/sbin:$rootfs/usr/sbin:$rootfs/bin:$rootfs/usr/bin:$PATH"
+ "$rootfs/bin/busybox" sh -c "source "$preinit.d/b0000_defines" && source "$preinit" && preinit"
+ else
+ umount_base
+ fi
}
init
+echo
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
index 8d0a6fdd..3ad32b84 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/chmenu
@@ -31,5 +31,5 @@ fi
uistop
overmount_games
-
-touch "/var/startmpc.flag"
+sleep 1
+touch "/var/startmcp.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 c7cfb5b7..b3b2bc0f 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/clover-canoe-shvc-wr
@@ -20,10 +20,9 @@ while [ $# -gt 0 ] ; do
mkdir -p "$tmppath"
cd "$tmppath"
tiny7zx x "$filename"
- filename="$tmppath/$(ls)"
- filename_str=${filename// /_}
- mv "$filename" "$filename_str"
- filename=$filename_str
+ filename="$(ls|head -n1)"
+ mv "$filename" "rom.${filename##*.}"
+ filename="$tmppath/rom.${filename##*.}"
fi
options="-rom $filename"
shift
@@ -34,4 +33,6 @@ while [ $# -gt 0 ] ; do
done
args="$options $cfg_snes_extra_args"
-exec /usr/bin/clover-canoe-shvc $args
+
+[ -f "/bin/clover-canoe-shvc" ] && exec /bin/clover-canoe-shvc $args
+[ -f "/usr/bin/clover-canoe-shvc" ] && 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 6316ddf4..0da3c122 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/clover-kachikachi-wr
@@ -16,20 +16,22 @@ if [ "$extension" == "7z" ]; then
mkdir -p "$tmppath"
cd "$tmppath"
tiny7zx x "$filename"
- filename="$tmppath/$(ls)"
- filename_str=${filename// /_}
- mv "$filename" "$filename_str"
- filename=$filename_str
+ filename="$(ls|head -n1)"
+ mv "$filename" "rom.${filename##*.}"
+ filename="$tmppath/rom.${filename##*.}"
fi
if [ "$extension" == "gz" ]; then
rm -rf "$tmppath"
mkdir -p "$tmppath"
- gunzip -c > "$tmppath/$filebase"
- filename="$tmppath/$filebase"
+ filebase="$(basename "$filebase" ".gz")"
+ extension="${filebase##*.}"
+ filename="$tmppath/rom.$extension"
+ gunzip -c > "$filename"
fi
shift
args="$filename $@ $cfg_nes_extra_args"
[ "$cfg_disable_armet" == "y" ] && args="$(echo $args | sed 's/--enable-armet//g')"
-exec /usr/bin/clover-kachikachi $args
+[ -f "/bin/clover-kachikachi" ] && exec /bin/clover-kachikachi $args
+[ -f "/usr/bin/clover-kachikachi" ] && exec /usr/bin/clover-kachikachi $args
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/hsqs b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
index 0b1d9d2d..800c4567 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/hsqs
@@ -7,7 +7,8 @@ printSoftwareInfo
firmware="$1"
if [ "$firmware" != "_nand_" ]; then
- firmware="$(readlink -f "$1")"
+ firmware="$(echo "$firmware" | sed -re 's/^\/usr\/share\/games\/(nes\/kachikachi\/)?/\/var\/games\//')"
+ firmware="$(readlink -f "$firmware")"
checkFirmware "$firmware" || exit 1
fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
index 32977e64..a7e62442 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
@@ -1,16 +1,20 @@
#!/bin/sh
-mpc_flag="/var/startmpc.flag"
+
+mcp_flag="/var/startmcp.flag"
+mcp_flag_compat="/var/startmpc.flag"
exec_flag="/var/exec.flag"
-while [ true ]; do
- if [ -f "$mpc_flag" ]; then
- echo Restart!
- rm "$mpc_flag"
- /etc/init.d/S81clover-mcp start
+
+while true; do
+ if [ -f "$mcp_flag" ] || [ -f "$mcp_flag_compat" ]; then
+ echo "Restart!"
+ uistart
+ usleep 100000
+ rm -f "$mcp_flag" "$mcp_flag_compat"
fi
if [ -f "$exec_flag" ]; then
- cmd="$(cat "$exec_flag")"
- rm "$exec_flag"
- $cmd
+ usleep 100000
+ source "$exec_flag"
+ rm -f "$exec_flag"
fi
usleep 200000
done
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png b/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png
new file mode 100644
index 00000000..f18bc87f
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png
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..355fc01a 100755
--- a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S78clvcon
@@ -1,6 +1,6 @@
#!/bin/sh
-CLV_BOARD_NAME=$(cat /etc/clover/boardtype)
+CLV_BOARD_NAME="$(cat "/etc/clover/boardtype")"
MODULE="clvcon"
[ -f "/lib/modules/$(uname -r)/extra/$MODULE.ko" ] || MODULE="clovercon"
@@ -21,7 +21,7 @@ start()
MODULE_PARAMS="1,-1,2,-1"
;;
esac
- modprobe "$MODULE" module_params=$MODULE_PARAMS
+ modprobe "$MODULE" "module_params=$MODULE_PARAMS"
}
stop()
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..ab8cef16 100755
--- a/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/init.d/S82remote-exec
@@ -1,7 +1,7 @@
-#!/bin/sh -e
+#!/bin/sh
start() {
- remote-exec &
+ nice remote-exec &
}
stop() {
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/inittab b/mods/mod_hakchi/hakchi/rootfs/etc/inittab
index ee87e540..1de7da21 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/inittab
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/inittab
@@ -1,4 +1,5 @@
null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -t usbfs none /proc/bus/usb
null::sysinit:/bin/mkdir -p /dev/pts /dev/shm
null::sysinit:/bin/mount -a
null::sysinit:/bin/mkdir -p /var/cache /var/lock /var/log /var/spool
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit b/mods/mod_hakchi/hakchi/rootfs/etc/preinit
index 1a4eab63..731ab4a8 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit
@@ -24,8 +24,8 @@ source_base(){
source_parts "$1/b????_*"
return 0
fi
- if [ -d "$preinitpath" ]; then
- source_parts "$preinitpath/b????_*"
+ if [ -d "$preinit.d" ]; then
+ source_parts "$preinit.d/b????_*"
return 0
fi
if [ -d "$rootfs/etc/preinit.d" ]; then
@@ -40,20 +40,20 @@ source_base(){
}
source_config(){
- [ -f "$preinitpath/p0000_config" ] && source "$preinitpath/p0000_config"
+ [ -f "$preinit.d/p0000_config" ] && source "$preinit.d/p0000_config"
}
save_config(){
- [ -f "$preinitpath/pffff_config" ] && source "$preinitpath/pffff_config"
+ [ -f "$preinit.d/pffff_config" ] && source "$preinit.d/pffff_config"
}
script_init(){
source_base
source_config
+ softwareCheck
}
preinit(){
- [ -z "$gamepath" ] && [ -d "/newroot" ] && /bin/busybox --install -s /bin/ && cp -a "$rootfs/bin/rsync" /bin/
source_base
- source_parts "$preinitpath/p????_*"
+ source_parts "$preinit.d/p????_*"
}
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 3aeee77c..684054df 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0000_defines
@@ -1,21 +1,3 @@
-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 [ "$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
- gamepath="/usr/share/games/nes/kachikachi"
- [ -d "$feck" ] && rm -rf "$feck.snes" && mv "$feck" "$feck.snes"
- [ -f "$feck.nes" ] && mv -f "$feck.nes" "$feck"
- fi
-}
-
modname="hakchi"
modpath="/$modname"
#mountpoint="/newroot"
@@ -29,5 +11,3 @@ sftype=""
sfregion=""
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 ff726747..7ec99650 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
@@ -37,37 +37,57 @@ remove_old(){
}
mod_repair_etc(){
+ [ -d "$rootfs" ] || return 0
remove_old "$rootfs"
- rm -f "$modpath/rootfs/etc/preinit.d/p0000_config"
- chown -R 0:0 "$modpath/"
local etc="$temppath/etc"
rm -rf "$etc"
mkdir -p "$etc"
copy "$mountpoint/etc/" "$etc/"
if [ "$1" == "full" ]; then
+ rm -f "$modpath/rootfs/etc/preinit.d/p0000_config"
copy "$modpath/rootfs/etc/" "$etc/"
else
copy "$rootfs/etc/inittab" "$etc/inittab"
fi
copy "$etc/" "$rootfs/etc/"
+ rm -rf "$etc"
}
mod_repair_modules(){
- restore "/lib/modules/$(uname -r)/"
+ [ -d "$mountpoint/lib/modules/$(uname -r)" ] && restore "/lib/modules/$(uname -r)/"
+}
+
+mount_move(){
+ local tmpmount="/$2"
+ if [ "$1" == "l" ]; then
+ mountpoint -q "$mountpoint$tmpmount" || return 1
+ mkdir -p "$tmpmount"
+ mount --move "$mountpoint$tmpmount" "$tmpmount"
+ else
+ mountpoint -q "$tmpmount" || return 1
+ mount --move "$tmpmount" "$mountpoint$tmpmount"
+ rmdir --ignore-fail-on-non-empty "$tmpmount"
+ fi
}
remount_root(){
- local tmpmount="/var"
- mkdir -p "$tmpmount"
- mount --move "$mountpoint/var" "$tmpmount"
+ mount_move l media
+ mount_move l var
umount "$mountpoint"
+ local loopfile="/var${1##$mountpoint/var}"
+ [ -f "$loopfile" ] || loopfile="/media${1##$mountpoint/media}"
+ if ! mount -o loop,ro,noatime "$loopfile" "$mountpoint"; then
+ local preinitf="/${preinit##$mountpoint/}"
+ local preinit="$preinitf"
+ cfg_firmware="_nand_"
+ save_config
+ shutdown
+ fi
- local loopfile="$tmpmount${1##$mountpoint/var}"
- mount -o loop,ro,noatime "$loopfile" "$mountpoint" || shutdown
-
- mount --move "$tmpmount" "$mountpoint/var"
+ mount_move r var
+ mount_move r media
}
checkFirmware(){
@@ -82,18 +102,19 @@ currentFirmware(){
echo "$firmware"
return 0
fi
- if [ -b /dev/mapper/root-crypt ]; then
+ if [ -b "/dev/mapper/root-crypt" ]; then
echo "_nand_"
return 0
fi
return 1
}
-load_firmware(){
+loadFirmware(){
[ -z "$(mount | grep -F loop0)" ] || return 1
local firmware="$mountpoint$cfg_firmware"
if ! checkFirmware "$firmware"; then
+ [ "$cfg_firmware" == "auto" ] || return 0
[ -d "$firmwarepath" ] || return 0
firmware="$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n 1)"
fi
@@ -114,8 +135,7 @@ load_firmware(){
}
shutdown(){
- echo "shutting down..."
- echo
+ echo "The system is going down NOW!"
sync
umount -a -r 2>/dev/null
poweroff -f
@@ -123,8 +143,7 @@ shutdown(){
}
reboot(){
- echo "rebooting..."
- echo
+ echo "Restarting system."
sync
umount -a -r 2>/dev/null
/bin/reboot -f
@@ -185,48 +204,121 @@ containsGames(){
return 0
}
+linkGames(){
+ local games="$mountpoint/media/$modname/games${1##$rootfs$gamepath}"
+ [ -d "$games" ] || games="$installpath/games${1##$rootfs$gamepath}"
+ [ -d "$games" ] || games="$1"
+ games="${games##$mountpoint}"
+ rm -f "$mountpoint/var/games"
+ ln -s "$games" "$mountpoint/var/games"
+ return 0
+}
+
+softwareCheck(){
+ sftype="nes"
+ sfregion="usa"
+ [ "$(cat "$mountpoint/etc/clover/boardtype")" == "dp-shvc" ] && sftype="snes"
+ [ "$(cat "$mountpoint/etc/clover/REGION")" == "JPN" ] && sfregion="jpn"
+ [ "$(cat "$mountpoint/etc/clover/REGION")" == "EUR" ] && sfregion="eur"
+
+ local feck="$mountpoint/var/lib/clover/profiles/0/home-menu/save/system-save.json"
+ 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
+ gamepath="/usr/share/games/nes/kachikachi"
+ [ -d "$feck" ] && rm -rf "$feck.snes" && mv "$feck" "$feck.snes"
+ [ -f "$feck.nes" ] && mv -f "$feck.nes" "$feck"
+ fi
+
+ rm -f "$mountpoint/var/saves"
+ ln -s "/var/lib/clover/profiles/0" "$mountpoint/var/saves"
+}
+
+repair_fonts(){
+ if [ "$sftype" == "nes" ]; then
+ mkdir -p "$1" || return 1
+ [ ! -f "$1/title.fnt" ] && (cp $rootfs$gamepath/title.fnt "$1" || cp $squashfs$gamepath/title.fnt "$1")
+ [ ! -f "$1/copyright.fnt" ] && (cp $rootfs$gamepath/copyright.fnt "$1" || cp $squashfs$gamepath/copyright.fnt "$1")
+ fi
+}
+
+repair_games(){
+ [ -w "$1" ] || return 0
+ local usesymlink=''
+ ln -s / "$1/symlinktest" && rm "$1/symlinktest" && usesymlink='y'
+
+ ls -1 "$squashfs$gamepath" | grep CLV- | while read code
+ do
+ local gamedir="$1/$code"
+ local squashgamedir="$squashfs$gamepath/$code"
+
+ [ -d "$gamedir" ] || continue
+
+ if [ ! -f "$gamedir/$code.desktop" ]; then
+ cp "$squashgamedir/$code.desktop" "$gamedir/"
+ [ "$sftype" == "nes" ] && \
+ sed -i -e 's#/usr/bin/clover-kachikachi#/bin/clover-kachikachi-wr#g' "$gamedir/$code.desktop"
+ [ "$sftype" == "snes" ] && \
+ sed -i -e 's#/usr/bin/clover-canoe-shvc#/bin/clover-canoe-shvc-wr#g' "$gamedir/$code.desktop"
+ fi
+
+ [ -d "$gamedir/autoplay/" ] && ([ "$(ls -A "$gamedir/autoplay/")" ] || rm -r "$gamedir/autoplay/")
+ [ -d "$gamedir/pixelart/" ] && ([ "$(ls -A "$gamedir/pixelart/")" ] || rm -r "$gamedir/pixelart/")
+
+ find "$squashgamedir" -maxdepth 1 | sed -n '1!p' | while read squashfile
+ do
+ if [ "$usesymlink" == "y" ]; then
+ ln -s "${squashfile##$mountpoint}" "$gamedir/" > /dev/null 2>&1
+ else
+ rsync -a --ignore-existing "$squashfile" "$gamedir/" > /dev/null 2>&1
+ fi
+ done
+ done
+ sync
+ return 0
+}
+
overmount_games(){
local menu_code="000"
[ -f "$installpath/menu" ] && menu_code="$(cat "$installpath/menu")"
- [ -z "$menu_code" ] && menu_code="000"
+ containsGames "$rootfs$gamepath/$menu_code" || menu_code=""
echo "menu code: $menu_code"
- if [ "$menu_code" != "000" ]; 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
- if containsGames "$rootfs$gamepath"; then
- overmount "$gamepath" && return 0
+ if containsGames "$rootfs$gamepath/$menu_code"; then
+ overmount "$gamepath/$menu_code" "$gamepath" && repair_games "$rootfs$gamepath/$menu_code" && linkGames "$rootfs$gamepath/$menu_code" && return 0
+ else
+ echo "no romz found at: $rootfs$gamepath/$menu_code"
fi
- echo "no romz found at: $rootfs$gamepath"
+ linkGames "$gamepath"
return 1
}
+uilist(){
+ lsof -n | grep -F "/dev/fb0" | awk '{print $1}' | sort -u
+}
+
+uikill(){
+ [ -z "$1" ] && return 1
+ uilist | xargs -r kill -s "$1"
+}
+
uistop(){
- killall -9 clover-mcp
- killall -9 ReedPlayer-Clover
- killall kachikachi
- killall canoe-shvc
- killall retroarch
+ killall -s KILL clover-mcp 1>/dev/null 2>&1
+ uikill TERM
}
uistart(){
- uistop 1>/dev/null 2>&1
- /etc/init.d/S81clover-mcp start
+ uistop
+ sh "/etc/init.d/S81clover-mcp" start
}
uipause(){
- lsof -n | grep /dev/fb0 | awk '{ print $1 }' | while read pid; do
- kill -s SIGSTOP $pid
- done
+ uikill STOP
}
uiresume(){
- lsof -n | grep /dev/fb0 | awk '{ print $1 }' | while read pid; do
- kill -s SIGCONT $pid
- done
+ uikill CONT
}
gameover(){
@@ -237,3 +329,16 @@ printSoftwareInfo(){
echo "software=$sftype"
echo "region=$sfregion"
}
+
+showImage(){
+ image="$(eval echo "$1")"
+ [ -f "$image" ] || image="$rootfs$1"
+ [ -f "$image" ] || image="$squashfs$1"
+ [ -f "$image" ] || return 1
+ decodepng "$image" > "/dev/fb0" &
+ return 0
+}
+
+hwmon(){
+ cat "/sys/devices/virtual/hwmon/hwmon1/temp1_input"
+}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
new file mode 100644
index 00000000..06d7f798
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
@@ -0,0 +1,58 @@
+checkUsbStorage(){
+ local trigger="/sys/bus/platform/devices/sunxi_hcd_host0/otg_ed_test"
+ local disk="/dev/sda1"
+
+ if [ -f "$trigger" ]; then
+ echo "1" > "$trigger"
+ local timeout=5
+ while [ $timeout -gt 0 ] && ! [ -b "$disk" ]; do
+ echo "waiting for media $timeout"
+ let timeout=timeout-1
+ sleep 1
+ done
+ fi
+
+ [ -b "$disk" ] || return 1
+
+ local ro="defaults,nosuid,nodev,noatime,ro"
+ local rw="defaults,nosuid,nodev,noatime,rw"
+ mount -o $ro "$disk" "$mountpoint/media" || return 1
+
+ local saves="$modname/saves"
+
+ if [ -d "$mountpoint/media/$saves" ] || [ -d "$mountpoint/media/$modname/transfer" ] || [ "$cfg_usb_rw" == "y" ]; then
+ mount -o remount,$rw "$disk"
+ fi
+ [ -d "$mountpoint/media/$saves" ] && mount_bind "$mountpoint/media/$saves" "$mountpoint/var/lib/clover/profiles/0"
+
+ local bootlogo0="boot.png"
+ local bootlogo1="$mountpoint/media/$modname/$bootlogo0"
+ local bootlogo2="$rootfs/etc/$bootlogo0"
+ if [ -f "$bootlogo1" ]; then
+ rsync -ac "$bootlogo1" "$bootlogo2"
+ showImage "$bootlogo2"
+ cfg_boot_logo=''
+ else
+ [ -f "$bootlogo2" ] && rm "$bootlogo2" && source "$preinit.d/p7010_bootlogo"
+ fi
+
+ return 0
+}
+
+checkUsbGamepath(){
+ local disk="/dev/sda1"
+ [ -b "$disk" ] || return 1
+
+ local games="$modname/games"
+ if containsGames "$mountpoint/media/$games"; then
+ if ! mkdir -p "$rootfs$gamepath"; then
+ rm -rf "$rootfs$gamepath"
+ mkdir -p "$rootfs$gamepath" || return 1
+ fi
+ mount_bind "$mountpoint/media/$games" "$rootfs$gamepath"
+ return 0
+ else
+ echo "no romz found at: $disk:/$games"
+ return 1
+ fi
+}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
new file mode 100644
index 00000000..2130e4ea
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p0000_config
@@ -0,0 +1,4 @@
+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 18d36b22..ed85bfd2 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7000_preinit
@@ -1,9 +1,9 @@
if [ "$cfg_boot_stock" == "y" ]; then
# load firmware if needed/present
- source_parts "$preinitpath/p????_*firmware*"
+ source_parts "$preinit.d/p????_*firmware*"
# stop loading
umount_base 2>/dev/null
return 0
-else
- echo "loading $modname"
fi
+
+echo "loading $modname"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo
new file mode 100644
index 00000000..9675ad27
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7010_bootlogo
@@ -0,0 +1 @@
+showImage "$cfg_boot_logo" || showImage "$rootfs/etc/boot.png" || showImage "$rootfs/etc/$modname.png"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
new file mode 100644
index 00000000..5026a862
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
@@ -0,0 +1 @@
+[ "$cf_usb" == "n" ] || checkUsbStorage
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 28d28566..fbe018a4 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware
@@ -1,3 +1,8 @@
-[ "$cfg_firmware" == "_nand_" ] || load_firmware
+[ "$cfg_firmware" == "_nand_" ] || loadFirmware
mod_repair_etc
-setGamepath
+
+softwareCheck
+checkUsbGamepath
+
+# temporary
+[ "$(uname -n)" == "madmonkey" ] && overmount "/lib/modules"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods
index ca3b93df..3bf788b0 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7080_hmods
@@ -1,4 +1,6 @@
local transferpath="$installpath/transfer"
+[ -d "$mountpoint/media/$modname/transfer" ] && transferpath="$mountpoint/media/$modname/transfer"
+
if [ -d "$transferpath" ]; then
cd "$transferpath"
[ -f "$transferpath/earlybird" ] && source "$transferpath/earlybird"
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pffff_config b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pffff_config
index 9defb135..8d238b1b 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pffff_config
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/pffff_config
@@ -1,3 +1,3 @@
local config=p0000_config
set | grep -F cfg_ | sort > "$temppath/$config"
-copy "$temppath/$config" "$preinitpath/$config"
+copy "$temppath/$config" "$preinit.d/$config"
diff --git a/mods/mod_hakchi/hakchi/script/install b/mods/mod_hakchi/hakchi/script/install
index 9ca6806e..f5fb048c 100644
--- a/mods/mod_hakchi/hakchi/script/install
+++ b/mods/mod_hakchi/hakchi/script/install
@@ -6,19 +6,29 @@ mod_uninstall(){
}
mod_repair(){
- mod_repair_etc full
+ local bin="$temppath/bin"
+ rm -rf "$bin"
+ mkdir -p "$bin"
+ copy "$mountpoint/bin/" "$bin/"
+ copy "/bin/" "$bin/"
+ copy "$modpath/rootfs/bin/" "$bin/"
+ copy "/sbin/cryptsetup" "$bin/cryptsetup"
+ copy "$bin/" "$modpath/rootfs/bin/"
+ rm -rf "$bin"
+
+ copy "/key-file" "$modpath/rootfs/etc/key-file"
+ chown -R 0:0 "$modpath/"
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"
+ rm -f "$modpath/rootfs/etc/preinit.d/p0000_config"
copy "$modpath/rootfs/" "$rootfs/"
+
+ mod_repair_etc full
+ cd /
}
mod_install(){
echo "installing $modname..."
rm -rf "$rootfs"
- restore "/bin/"
- restore "/etc/"
mod_repair
}
diff --git a/mods/mod_hakchi/hakchi/script/reflash b/mods/mod_hakchi/hakchi/script/reflash
index a7beaefb..258d263e 100644
--- a/mods/mod_hakchi/hakchi/script/reflash
+++ b/mods/mod_hakchi/hakchi/script/reflash
@@ -1,6 +1,7 @@
+umount_base
+
local firmware="$(find -type f -name "*.hsqs" | sort | head -n 1)"
if [ -f "$firmware" ]; then
- umount_base
umount "$mountpoint"
cryptsetup close root-crypt
@@ -13,15 +14,18 @@ if [ -f "$firmware" ]; then
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"
+fi
+unset firmware
- 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
+local tmk="$(pwd)/mkfs.txz"
+if [ -f "$tmk"]; then
+ rm "/lib"
+ 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
+unset tmk
+
+mount_base
diff --git a/mods/mod_hakchi/hakchi/script/transfer b/mods/mod_hakchi/hakchi/script/transfer
index 237d2c42..6a27c7bf 100644
--- a/mods/mod_hakchi/hakchi/script/transfer
+++ b/mods/mod_hakchi/hakchi/script/transfer
@@ -1,15 +1,16 @@
+showImage "$modpath/rootfs/etc/$modname.fb"
source "$modpath/script/install"
backup_nandc
mount_base
backup
+source "$modpath/rootfs/etc/preinit.d/p0000_config"
source_config
local transferpath="$modpath/transfer"
cd "$transferpath"
-
[ -f "$transferpath/earlybird" ] && source "$transferpath/earlybird"
rm -f "$transferpath/earlybird"
@@ -29,6 +30,7 @@ if [ -d "$transferpath/firmware" ]; then
find "$firmwarepath" -type f -not -name "$firmware_name" -delete
echo "transferring firmware..."
copy "$firmware" "$firmwarepath/"
+ cfg_firmware="auto"
fi
rm -rf "$transferpath/firmware"
fi
diff --git a/mods/mod_hakchi/sbin/init b/mods/mod_hakchi/sbin/init
index 52cc5fa1..156c02ae 100755
--- a/mods/mod_hakchi/sbin/init
+++ b/mods/mod_hakchi/sbin/init
@@ -31,7 +31,7 @@ else
/bin/mount -o "${MOUNT_OPTS}" ${ROOTFS} /newroot
fi
-. /hakchi/init
+[ -f "/hakchi/init" ] && sh "/hakchi/init"
/bin/mount --move /dev /newroot/dev
/bin/umount /proc