Created
July 9, 2017 22:52
-
-
Save xythobuz/c14e99453f00fa1077a76c4ff42fb1c8 to your computer and use it in GitHub Desktop.
PS2 HDLoader hdl_dump 0.9.2 wrapper shell script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
TEMP_DATA_FILE=".ps2-hdl-state" | |
TEMP_INFO_FILE=".ps2-hdl-info" | |
# Determine which hdl_dump client to use | |
HDL=`which hdl_dump` | |
HDLSETTING="auto" | |
# Get PS2 IP from environment var or use default | |
if [ -z "$PS2HOSTNAME" ]; then | |
PS2HOSTNAME="192.168.0.10" | |
PS2IPSETTING="default" | |
else | |
PS2IPSETTING="env" | |
fi | |
# Defaults | |
COMMAND="help" | |
COMMANDARG="" | |
DMAPARAMS="*u4" | |
DMAPARAMSSETTING="auto" | |
NAME="default" | |
NAMESETTING="auto" | |
USEPING="yes" | |
function show_help { | |
echo "Usage:" | |
echo " $0 [OPTION [ARG]] [CMD]" | |
echo | |
echo "Options: (can use multiple)" | |
echo " -b arg - Set hdl_dump binary path" | |
echo " -i arg - Set PS2 IP or hostname" | |
echo " -x - Disable Ping connectivity check" | |
echo " -d arg - Set DMA param (only for upload!)" | |
echo " -n arg - Set ISO name (only for upload!)" | |
echo | |
echo "Commands: (use only one)" | |
echo " -h - Local: Show this help" | |
echo " -a arg - Local: Show ISO infos" | |
echo " -l - PS2: List the installed games" | |
echo " -u arg - PS2: Upload & install game ISO" | |
echo " -q - PS2: Shutoff / Powerdown" | |
} | |
# Handle command line arguments | |
OPTIND=1 | |
while getopts "hlxqb:i:u:a:d:n:" opt; do | |
case $opt in | |
h) | |
show_help | |
exit 0 | |
;; | |
b) | |
HDL=$OPTARG | |
HDLSETTING="user" | |
;; | |
i) | |
PS2HOSTNAME=$OPTARG | |
PS2IPSETTING="user" | |
;; | |
l) | |
COMMAND="list" | |
;; | |
u) | |
COMMAND="upload" | |
COMMANDARG=$OPTARG | |
;; | |
a) | |
COMMAND="analyze" | |
COMMANDARG=$OPTARG | |
;; | |
d) | |
DMAPARAMS=$OPTARG | |
DMAPARAMSSETTING="user" | |
;; | |
n) | |
NAME=$OPTARG | |
NAMESETTING="user" | |
;; | |
x) | |
USEPING="no" | |
;; | |
q) | |
COMMAND="shutdown" | |
;; | |
esac | |
done | |
if [ "$COMMAND" == "help" ]; then | |
show_help | |
exit 0 | |
fi | |
echo "Using hdl_dump: $HDL ($HDLSETTING)" | |
echo "Using PS2 IPv4: $PS2HOSTNAME ($PS2IPSETTING)" | |
echo "-------------------------------------------------" | |
if [ "$COMMANDARG" != "" ]; then | |
echo "Executing \"$COMMAND\" with parameter \"$COMMANDARG\"" | |
else | |
echo "Executing \"$COMMAND\"..." | |
fi | |
# Check if our hdl_dump binary is really executable | |
if [ ! -x $HDL ]; then | |
echo "Error: hdl_dump binary does not exist or is not executable!" | |
exit 1 | |
fi | |
# Check if the PS2 is really reachable | |
if [ "$USEPING" == "yes" ]; then | |
ping -c 1 -t 1 "$PS2HOSTNAME" > /dev/null 2> /dev/null | |
if [ "$?" -ne "0" ]; then | |
echo "Error: PS2 does not seem to be reachable via ICMP pings!" | |
exit 2 | |
fi | |
fi | |
echo "-------------------------------------------------" | |
MEDIUM_TYPE="unknown" | |
MEDIUM_SIZE="unknown" | |
MEDIUM_NAME="unknown" | |
MEDIUM_ID="unknown" | |
function do_analyze { | |
$HDL cdvd_info2 "$COMMANDARG" > "$TEMP_DATA_FILE" | |
if [ "$?" -ne "0" ]; then | |
echo "Error: Couldn't use hdl_dump to analyze an ISO!" | |
exit 3 | |
fi | |
MEDIUM_TYPE=`cat "$TEMP_DATA_FILE" | awk -F ' ' '{print $1}'` | |
KB_SIZE=`cat "$TEMP_DATA_FILE" | awk -F ' ' '{print $2}'` | |
MEDIUM_NAME=`cat "$TEMP_DATA_FILE" | awk -F '"' '{print $2}'` | |
MEDIUM_ID=`cat "$TEMP_DATA_FILE" | awk -F '"' '{print $4}'` | |
SIZE=`echo $KB_SIZE | sed 's/[^0-9]*//g'` | |
MEDIUM_SIZE="`expr $SIZE / 1000`MB" | |
rm -rf "$TEMP_DATA_FILE" | |
} | |
function print_stats { | |
echo "Disc Type: $MEDIUM_TYPE" | |
echo "Disc Size: $MEDIUM_SIZE" | |
echo "Disc Name: $MEDIUM_NAME" | |
echo "Disc ID: $MEDIUM_ID" | |
} | |
function do_list { | |
$HDL toc "$PS2HOSTNAME" | |
if [ "$?" -ne "0" ]; then | |
echo "Error: Couldn't use hdl_dump to dump the TOC!" | |
exit 4 | |
fi | |
} | |
function do_shutdown { | |
$HDL poweroff "$PS2HOSTNAME" | |
if [ "$?" -ne "0" ]; then | |
echo "Error: Couldn't use hdl_dump to turn off PS2!" | |
exit 5 | |
fi | |
} | |
function do_upload { | |
if [ "$MEDIUM_TYPE" != "DVD" ]; then | |
if [ "$MEDIUM_TYPE" != "CD" ]; then | |
echo "Error: unknown disc type!" | |
exit 6 | |
fi | |
fi | |
if [ "$MEDIUM_NAME" == "" ]; then | |
if [ "$NAMESETTING" == "auto" ]; then | |
echo "Error: no name set for upload!" | |
exit 7 | |
fi | |
fi | |
echo "Using DMA Parameter: $DMAPARAMS ($DMAPARAMSSETTING)" | |
if [ "$NAMESETTING" == "auto" ]; then | |
echo "Using Game name from ISO: $MEDIUM_NAME ($NAMESETTING)" | |
NAME="$MEDIUM_NAME" | |
else | |
echo "Using Game name: $NAME ($NAMESETTING)" | |
fi | |
if [ "$MEDIUM_TYPE" == "DVD" ]; then | |
MEDIUM_TYPE="inject_dvd" | |
else | |
MEDIUM_TYPE="inject_cd" | |
fi | |
mv info.sys $TEMP_INFO_FILE 2> /dev/null | |
echo "Starting upload..." | |
$HDL $MEDIUM_TYPE "$PS2HOSTNAME" "$NAME" "$COMMANDARG" "$DMAPARAMS" | |
if [ "$?" -ne "0" ]; then | |
echo | |
echo "Error: Couldn't use hdl_dump to upload ISO!" | |
exit 8 | |
fi | |
echo | |
echo "Upload finished!" | |
rm -rf info.sys 2> /dev/null | |
mv $TEMP_INFO_FILE info.sys 2> /dev/null | |
} | |
case $COMMAND in | |
analyze) | |
do_analyze | |
print_stats | |
;; | |
list) | |
do_list | |
;; | |
upload) | |
do_analyze | |
print_stats | |
do_upload | |
;; | |
shutdown) | |
do_shutdown | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment