patchimage/scripts/common.sh

624 lines
15 KiB
Bash
Raw Normal View History

2013-06-15 19:33:43 +02:00
#!/bin/bash
2016-08-03 22:21:05 +02:00
PATCHIMAGE_VERSION=7.0.0
PATCHIMAGE_RELEASE=2016/08/03
2016-05-16 14:53:30 +02:00
2016-08-05 20:52:12 +02:00
[[ -e ${HOME}/.patchimage.rc ]] && source "${HOME}"/.patchimage.rc
2013-06-15 19:33:43 +02:00
setup_tools () {
if [[ $(uname -m) == "x86_64" ]]; then
SUFFIX=64
else SUFFIX=32
fi
2016-08-05 20:52:12 +02:00
export WIT="${PATCHIMAGE_TOOLS_DIR}"/wit."${SUFFIX}"
export PPF="${PATCHIMAGE_TOOLS_DIR}"/applyppf3."${SUFFIX}"
export IPS="${PATCHIMAGE_TOOLS_DIR}"/uips."${SUFFIX}"
export UNP="${PATCHIMAGE_TOOLS_DIR}"/unp
export SZS="${PATCHIMAGE_TOOLS_DIR}"/wszst."${SUFFIX}"
export XD3="${PATCHIMAGE_TOOLS_DIR}"/xdelta3."${SUFFIX}"
export GDOWN="${PATCHIMAGE_TOOLS_DIR}"/gdown.pl
export CTRTOOL="${PATCHIMAGE_TOOLS_DIR}"/ctrtool."${SUFFIX}"
export FDSTOOL="${PATCHIMAGE_TOOLS_DIR}"/3dstool."${SUFFIX}"
2013-06-15 19:33:43 +02:00
}
ask_game () {
2013-06-20 21:30:26 +02:00
echo -e \
"************************************************
2016-05-16 14:53:30 +02:00
patchimage v${PATCHIMAGE_VERSION}
2014-05-17 10:07:15 +02:00
2016-05-16 17:25:17 +02:00
ID Name
2014-05-17 10:07:15 +02:00
<<<<<< New Super Mario Bros. Wii >>>>>>
NSMB1 NewerSMB
NSMB2 Newer Summer Sun
NSMB3 AnotherSMB
NSMB4 Newer: Holiday Special
NSMB5 Cannon Super Mario Bros.
NSMB6 Epic Super Bowser World
NSMB7 Koopa Country
NSMB8 New Super Mario Bros. 4
NSMB9 New Super Mario Bros. Wii Retro Remix
NSMB10 Super Mario: Mushroom Adventure PLUS - Winter Moon
NSMB11 NSMBW3: The Final Levels
NSMB12 Super Mario Vacation
NSMB13 Awesomer Super Luigi Mini
NSMB14 Super Mario Skyland
NSMB15 RVLution Wii (NewSMB Mod)
2014-08-10 21:46:26 +02:00
NSMB16 Midi's Super Mario Wii (Just A Little Adventure)
NSMB17 DarkUmbra SMB Anniversary Edition
2014-08-10 22:12:50 +02:00
NSMB18 Newer Apocalypse
NSMB19 Luigi's Super Yoshi Bros.
2015-01-20 21:01:45 +01:00
NSMB20 Newer: Falling Leaf
NSMB21 Devil Mario Winter Special
NSMB22 New Super Mario Bros. Wii - Other World
2016-05-16 17:21:53 +02:00
NSMB23 The Legend of Yoshi
2016-05-16 17:25:17 +02:00
NSMB24 Remixed Super Mario Bros. Wii
NSMB25 Ghostly Super Ghost Boos. Wii
NSMB26 Revised Super Mario Bros. Wii
2014-05-17 10:07:15 +02:00
NSMB99 Customize Characters
2014-05-17 10:07:15 +02:00
<<<<<< Mario Kart Wii >>>>>>
MKW1 Wiimfi Patcher. Patch Mario Kart to use Wiimm's server
MKW2 Wiimfi Patcher. Patch WFC games to use Wiimm's server (exp)
MKW3 Mario Kart Wiimm. Custom Mario Kart Distribution
MKW4 Custom Items. Replace items in the game
2014-05-18 07:51:09 +02:00
MKW5 Custom Font. Replace font in the game
2015-04-11 21:01:24 +02:00
MKW6 Custom Karts. Replace characters in the game
2014-05-17 10:07:15 +02:00
<<<<<< Kirby's Adventure Wii >>>>>>
KAW1 Change first player's character
<<<<<< Tokyo Mirage Sessions #FE >>>>>>
TMS1 Uncensor US/EUR version
2016-07-26 23:16:49 +02:00
<<<<<< 3DS ROMS >>>>>>
PKMN1 Pokemon Neo X
PKMN2 Pokemon Neo Y
PKMN3 Pokemon Rutile Ruby
PKMN4 Pokemon Star Sapphire
PKMN5 Pokemon Eternal X
PKMN6 Pokemon Wilting Y
PKMN7 Pokemon Rising Ruby
PKMN8 Pokemon Sinking Sapphire
2016-07-26 23:16:49 +02:00
BSECU Bravely Second Uncensored
2014-05-17 10:07:15 +02:00
<<<<<< ROMS >>>>>>
ZEL1 The Legend of Zelda: Parallel Worlds
2016-05-16 17:25:17 +02:00
ID Name
Enter ID for the Game you want to create:
2013-06-20 21:03:40 +02:00
"
2013-06-15 19:33:43 +02:00
2016-08-05 20:52:12 +02:00
read -r GAME
2013-06-15 19:33:43 +02:00
}
download_soundtrack () {
2016-08-05 20:52:12 +02:00
if [[ ${SOUNDTRACK_LINK} && ! -f ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP} ]]; then
wget --no-check-certificate "${SOUNDTRACK_LINK}" \
-O "${PATCHIMAGE_AUDIO_DIR}"/"${SOUNDTRACK_ZIP}" || exit 57
2014-05-11 21:57:19 +02:00
echo -e "\n >>> soundtrack saved to\n >>> ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP}"
else
2014-05-16 20:30:36 +02:00
echo -e "no soundtrack for ${GAMENAME} available."
fi
}
download_banner () {
if [[ ${PATCHIMAGE_BANNER_DOWNLOAD} == "TRUE" ]]; then
if [[ ${CUSTOM_BANNER} ]]; then
2016-08-05 20:52:12 +02:00
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr ]]; then
wget --no-check-certificate "${CUSTOM_BANNER}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp || exit 57
mv "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
fi
2016-08-05 20:52:12 +02:00
BANNER="${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
else
2013-10-12 10:37:29 +02:00
echo "*** >> no custom banner available"
fi
fi
}
nsmbw_version () {
if [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232911 ]]; then
VERSION=EURv1
2016-08-05 20:52:12 +02:00
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_152101 ]]; then
VERSION=EURv2
2016-08-05 20:52:12 +02:00
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232303 ]]; then
VERSION=USAv1
2016-08-05 20:52:12 +02:00
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_143554 ]]; then
VERSION=USAv2
2016-08-05 20:52:12 +02:00
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_231655 ]]; then
VERSION=JPNv1
2016-08-05 20:52:12 +02:00
export REG_LETTER=J
elif [[ ! ${VERSION} ]]; then
echo -e "please specify your games version using --version={EURv1,EURv2,USAv1,USAv2,JPNv1}"
2013-10-12 10:37:29 +02:00
exit 27
fi
2013-10-12 10:37:29 +02:00
echo "*** >> status: ${VERSION}"
}
apply_banner () {
if [[ ${BANNER} != "" ]]; then
if [[ -e ${BANNER} ]]; then
cp "${BANNER}" "${BANNER_LOCATION}"
else
echo "specified banner ${BANNER} does not exist, not modifying"
fi
fi
}
2013-10-12 10:37:29 +02:00
check_directories () {
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR} && -w $(dirname "${PATCHIMAGE_RIIVOLUTION_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_RIIVOLUTION_DIR}" || PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
fi
2013-10-12 10:37:29 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_RIIVOLUTION_DIR} ]] && PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_WBFS_DIR} && -w $(dirname "${PATCHIMAGE_WBFS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_WBFS_DIR}" || PATCHIMAGE_WBFS_DIR="${HOME}"
fi
2013-10-12 10:37:29 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w "${PATCHIMAGE_WBFS_DIR}" ]] && PATCHIMAGE_WBFS_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_GAME_DIR} && -w $(dirname "${PATCHIMAGE_GAME_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_GAME_DIR}" || PATCHIMAGE_GAME_DIR="${HOME}"
fi
2013-10-12 10:37:29 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_GAME_DIR} ]] && PATCHIMAGE_GAME_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_3DS_DIR} && -w $(dirname "${PATCHIMAGE_3DS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_3DS_DIR}" || PATCHIMAGE_3DS_DIR="${HOME}"
fi
2013-10-12 10:37:29 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_3DS_DIR} ]] && PATCHIMAGE_3DS_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_ROM_DIR} && -w $(dirname "${PATCHIMAGE_ROM_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_ROM_DIR}" || PATCHIMAGE_ROM_DIR="${HOME}"
fi
2014-05-13 17:49:00 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_ROM_DIR} ]] && PATCHIMAGE_ROM_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_AUDIO_DIR} && -w $(dirname "${PATCHIMAGE_AUDIO_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_AUDIO_DIR}" || PATCHIMAGE_AUDIO_DIR="${HOME}"
fi
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_AUDIO_DIR} ]] && PATCHIMAGE_AUDIO_DIR="${HOME}"
2016-08-05 20:52:12 +02:00
if [[ ! -d ${PATCHIMAGE_COVER_DIR} && -w $(dirname "${PATCHIMAGE_COVER_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_COVER_DIR}" || PATCHIMAGE_COVER_DIR="${HOME}"
fi
2013-10-12 10:37:29 +02:00
2016-08-05 20:52:12 +02:00
[[ ! -w ${PATCHIMAGE_COVER_DIR} ]] && PATCHIMAGE_COVER_DIR="${HOME}"
}
2013-10-12 10:37:29 +02:00
check_input_image () {
2014-05-11 19:26:58 +02:00
x=0
if [[ ! ${IMAGE} ]]; then
2016-08-05 20:52:12 +02:00
if test -f "${WBFS_MASK}".wbfs; then
2014-05-11 19:26:58 +02:00
x=1
2016-08-05 20:52:12 +02:00
IMAGE="${WBFS_MASK}".wbfs
elif test -f "${WBFS_MASK}".iso; then
2014-05-11 19:26:58 +02:00
x=2
2016-08-05 20:52:12 +02:00
IMAGE="${WBFS_MASK}".iso
elif test -f "${PATCHIMAGE_WBFS_DIR}"/"${WBFS_MASK}".iso; then
2014-05-11 19:26:58 +02:00
x=3
2016-08-05 20:52:12 +02:00
IMAGE="${PATCHIMAGE_WBFS_DIR}"/"${WBFS_MASK}".iso
elif test -f "${PATCHIMAGE_WBFS_DIR}"/"${WBFS_MASK}".wbfs; then
2014-05-11 19:26:58 +02:00
x=4
2016-08-05 20:52:12 +02:00
IMAGE="${PATCHIMAGE_WBFS_DIR}"/"${WBFS_MASK}".wbfs
2014-05-11 19:26:58 +02:00
else
echo -e "please specify image to use with --iso=<path>"
exit 15
fi
fi
echo "*** >> status: ${x}"
}
check_input_rom () {
x=5
if [[ ! ${CXI} ]]; then
2016-08-05 20:52:12 +02:00
CXI=$(find . -name "${CXI_MASK}" | sed -e 's,./,,')
if [[ -f ${CXI} ]]; then
x=6
2016-08-05 20:52:12 +02:00
CXI="${CXI}"
else
2016-08-05 20:52:12 +02:00
CXI=$(find "${PATCHIMAGE_3DS_DIR}" -name "${CXI_MASK}")
if [[ -f ${CXI} ]]; then
x=7
2016-08-05 20:52:12 +02:00
CXI="${CXI}"
else
if [[ ! ${HANS_MULTI_SOURCE} ]]; then
echo -e "error: could not find suitable ROM, specify using --rom"
exit 15
fi
fi
fi
fi
echo "*** >> status: ${x}"
}
show_nsmb_db () {
2015-07-12 19:59:08 +02:00
ID1=${1:0:3}
ID2=${1:4:2}
2016-08-05 20:52:12 +02:00
gawk -F : "/^${ID1}\*${ID2}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/nsmbw.db || echo "** Unknown **"
}
2014-05-11 21:57:19 +02:00
show_mkwiimm_db () {
ID=${1:4:2}
2016-08-05 20:52:12 +02:00
[[ ${ID} == [0-9][0-9] ]] && \
gawk -F : "/^${ID}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/mkwiimm.db \
|| echo "** Unknown **"
2014-05-11 21:57:19 +02:00
}
ask_input_image_mkwiimm () {
2015-04-11 21:11:59 +02:00
echo "Choose Mario Kart Wii Image to modify
2014-05-11 21:57:19 +02:00
ALL patch all images"
2016-08-05 20:52:12 +02:00
for image in "${PWD}"/RMC???.{iso,wbfs} "${PATCHIMAGE_WBFS_DIR}"/RMC???.{iso,wbfs}; do
[[ -f ${image} ]] && echo " ${image##*/} $(show_mkwiimm_db "${image##*/}")"
2014-05-11 21:57:19 +02:00
done
echo ""
}
ask_input_image_nsmb () {
echo "Choose New Super Mario Bros. Wii Image to modify
ALL patch all images"
2016-08-05 20:52:12 +02:00
for image in "${PWD}"/SMN???.{iso,wbfs} \
"${PWD}"/SLF???.{iso,wbfs} \
"${PWD}"/SMM???.{iso,wbfs} \
"${PWD}"/SMV???.{iso,wbfs} \
"${PWD}"/MRR???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SMN???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SLF???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SMM???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SMV???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/MRR???.{iso,wbfs}; do
[[ -f ${image} ]] && echo " ${image##*/} $(show_nsmb_db "${image##*/}")"
done
echo ""
}
show_titles_db () {
ID=${1/.*}
2016-08-05 20:52:12 +02:00
gawk -F : "/^${ID}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/titles.db \
|| echo "** Unknown **"
}
check_wfc () {
ID=${1/.*}
2016-08-05 20:52:12 +02:00
if grep -q "${ID}" "${PATCHIMAGE_DATABASE_DIR}"/wfc.db; then
echo TRUE
else
echo FALSE
fi
}
2014-05-13 17:49:00 +02:00
ask_input_image_wiimmfi () {
echo "Choose Wii Game Image to wiimmfi"
2016-08-05 20:52:12 +02:00
for image in "${PWD}"/*.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/*.{iso,wbfs}; do
if [[ -e ${image} && ! ${image} == "*/RMC*" && $(check_wfc "${image##*/}") == TRUE ]]; then
echo " ${image##*/} $(show_titles_db "${image##*/}")"
2014-05-13 17:49:00 +02:00
fi
done
echo ""
}
2013-06-15 19:33:43 +02:00
check_riivolution_patch () {
2013-10-12 10:37:29 +02:00
x=0
if [[ ! -d ${RIIVOLUTION_DIR} ]]; then
2013-10-12 10:37:29 +02:00
x=1
if [[ -f "${PWD}/${RIIVOLUTION_DIR}" ]]; then
echo "*** >> unpacking"
x=2
2016-08-05 20:52:12 +02:00
${UNP} "${PWD}/${RIIVOLUTION_ZIP}" -- "${UNP_EXTRA_ARGS}" >/dev/null || exit 63
2013-10-12 10:37:29 +02:00
elif [[ -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" ]]; then
echo "*** >> unpacking"
x=3
2016-08-05 20:52:12 +02:00
${UNP} "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" -- "${UNP_EXTRA_ARGS}" >/dev/null || exit 63
elif [[ ${PATCHIMAGE_RIIVOLUTION_DOWNLOAD} == "TRUE" ]]; then
2013-10-12 10:37:29 +02:00
x=4
if [[ ${DOWNLOAD_LINK} == *docs.google* || ${DOWNLOAD_LINK} == *drive.google* ]]; then
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" ]]; then
x=5
echo "*** >> downloading"
${GDOWN} "${DOWNLOAD_LINK}" "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp >/dev/null || exit 57
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
2016-08-05 20:52:12 +02:00
${UNP} "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" -- "${UNP_EXTRA_ARGS}" >/dev/null || exit 63
fi
elif [[ ${DOWNLOAD_LINK} == *mega.nz* ]]; then
echo "can not download from Mega, download manually from:
${DOWNLOAD_LINK}
"
exit 21
elif [[ ${DOWNLOAD_LINK} == *mediafire* ]]; then
echo "can not download from Mediafire, download manually from:
${DOWNLOAD_LINK}
"
exit 21
elif [[ ${DOWNLOAD_LINK} ]]; then
2013-10-12 10:37:29 +02:00
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" ]]; then
x=5
echo "*** >> downloading"
2016-08-03 21:03:54 +02:00
wget --no-check-certificate "${DOWNLOAD_LINK}" -O "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp >/dev/null || exit 57
2013-10-12 10:37:29 +02:00
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
2016-08-05 20:52:12 +02:00
${UNP} "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" -- "${UNP_EXTRA_ARGS}" >/dev/null || exit 63
fi
else
echo "no download link for ${GAMENAME} available."
2013-10-12 10:37:29 +02:00
exit 21
fi
else
echo -e "please specify zip/rar to use with --riivolution=<path>"
2013-10-12 10:37:29 +02:00
exit 21
fi
2013-06-15 19:33:43 +02:00
fi
2013-10-12 10:37:29 +02:00
echo "*** >> status: ${x}"
2013-06-15 19:33:43 +02:00
}
2014-05-11 20:43:49 +02:00
download_covers () {
2016-08-05 20:52:12 +02:00
alt=$(echo "${1}" | sed s/./E/4)
2014-05-11 20:43:49 +02:00
for path in cover cover3D coverfull disc disccustom; do
2016-08-05 20:52:12 +02:00
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/EN/"${1}".png &>/dev/null \
|| rm "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/US/"${alt}".png &>/dev/null \
|| rm "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png
fi
2016-08-05 20:52:12 +02:00
[[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]] && \
echo "Cover (${path}) does not exist for gameid ${1}."
fi
2014-05-11 20:43:49 +02:00
done
}
2016-07-26 23:16:49 +02:00
unpack_3dsrom () {
${CTRTOOL} -p --romfs=romfs.bin "${1}" &>/dev/null
}
unpack_3dsromfs () {
${CTRTOOL} -t romfs --romfsdir=romfs "${1}" &>/dev/null
}
repack_3dsromfs () {
${FDSTOOL} -ctf romfs "${2}" --romfs-dir "${1}" &>/dev/null
}
2013-06-15 19:33:43 +02:00
optparse () {
xcount=0
pcount=$#
while [[ $xcount -lt $pcount ]]; do
2016-07-26 23:16:49 +02:00
case ${1} in
2013-06-15 19:33:43 +02:00
2016-08-05 20:52:12 +02:00
--iso=* )
ISO_PATH="${1/*=}"
2013-06-15 19:33:43 +02:00
if [[ -f "${ISO_PATH}" ]]; then
IMAGE="${ISO_PATH}"
2013-06-15 19:33:43 +02:00
else
echo -e "ISO not found"
2013-10-12 10:37:29 +02:00
exit 15
2013-06-15 19:33:43 +02:00
fi
;;
2016-08-05 20:52:12 +02:00
--rom=* )
ROM_PATH="${1/*=}"
if [[ -f "${ROM_PATH}" ]]; then
IMAGE="${ROM_PATH}"
else
echo -e "ROM not found"
2013-10-12 10:37:29 +02:00
exit 15
fi
;;
2016-08-05 20:52:12 +02:00
--riivolution=* )
RIIVOLUTION="${1/*=}"
2013-06-15 19:33:43 +02:00
if [[ -e "${RIIVOLUTION}" ]]; then
2016-08-05 20:52:12 +02:00
"${UNP}" "${RIIVOLUTION}" >/dev/null
2013-06-15 19:33:43 +02:00
else
echo -e "Riivolution patch ${RIIVOLUTION} not found."
2013-10-12 10:37:29 +02:00
exit 21
2013-06-15 19:33:43 +02:00
fi
;;
2016-08-05 20:52:12 +02:00
--patch=* )
PATCH="${1/*=}"
if [[ -e "${PATCH}" ]]; then
${UNP} "${PATCH}" >/dev/null
else
echo -e "PATCH patch ${PATCH} not found."
2013-10-12 10:37:29 +02:00
exit 21
fi
;;
2016-08-05 20:52:12 +02:00
--customid=* )
2013-06-15 19:33:43 +02:00
CUSTOMID=${1/*=}
if [[ ${#CUSTOMID} != 6 ]]; then
echo -e "CustomID ${CUSTOMID} needs to have 6 digits"
2013-10-12 10:37:29 +02:00
exit 39
2013-06-15 19:33:43 +02:00
fi
;;
--download )
2016-08-05 20:52:12 +02:00
export PATCHIMAGE_RIIVOLUTION_DOWNLOAD=TRUE
;;
--soundtrack )
2016-08-05 20:52:12 +02:00
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
2014-05-11 21:57:19 +02:00
;;
--only-soundtrack )
2016-08-05 20:52:12 +02:00
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
export ONLY_SOUNDTRACK=TRUE
;;
2013-06-15 19:33:43 +02:00
--version=* )
2016-08-05 20:52:12 +02:00
VERSION="${1/*=}"
2013-06-15 19:33:43 +02:00
case ${VERSION} in
EURv1 )
2016-08-05 20:52:12 +02:00
export REG_LETTER=P
2013-06-15 19:33:43 +02:00
;;
EURv2 )
2016-08-05 20:52:12 +02:00
export REG_LETTER=P
2013-06-15 19:33:43 +02:00
;;
USAv1 )
2016-08-05 20:52:12 +02:00
export REG_LETTER=E
2013-06-15 19:33:43 +02:00
;;
USAv2 )
2016-08-05 20:52:12 +02:00
export REG_LETTER=E
2013-06-15 19:33:43 +02:00
;;
JPNv1 )
2016-08-05 20:52:12 +02:00
export REG_LETTER=J
2013-06-15 19:33:43 +02:00
;;
* )
echo -e "unrecognized game version: ${VERSION}"
2013-10-12 10:37:29 +02:00
exit 27
2013-06-15 19:33:43 +02:00
;;
esac
;;
--sharesave )
2016-08-05 20:52:12 +02:00
export PATCHIMAGE_SHARE_SAVE=TRUE
2013-06-15 19:33:43 +02:00
;;
2016-08-05 20:52:12 +02:00
--game=* )
export GAME="${1/*=}"
2013-06-15 19:33:43 +02:00
;;
2016-08-05 20:52:12 +02:00
--covers )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
2014-05-11 21:57:19 +02:00
;;
2016-08-05 20:52:12 +02:00
--only-covers=* )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
download_covers "${1/*=}"
2014-05-11 21:57:19 +02:00
exit 0
;;
--banner=* )
2016-08-05 20:52:12 +02:00
BANNER="${1/*=}"
BANNER_EXT="${BANNER//*./}"
if [[ ${BANNER_EXT} != "bnr" ]]; then
echo "given banner (${BANNER}) is not a .bnr file!"
2013-10-12 10:37:29 +02:00
exit 33
fi
;;
--download-banner )
2016-08-05 20:52:12 +02:00
export PATCHIMAGE_BANNER_DOWNLOAD=TRUE
;;
--xdelta=* )
2016-08-05 20:52:12 +02:00
export XDELTA_PATH="${1/*=}"
;;
--cpk=* )
2016-08-05 20:52:12 +02:00
export CPK_PATH="${1/*=}"
;;
2014-05-16 20:36:08 +02:00
--help | -h )
2016-05-16 17:21:53 +02:00
echo -e "patchimage ${PATCHIMAGE_VERSION} (${PATCHIMAGE_RELEASE})
2013-10-12 10:37:29 +02:00
(c) 2013-2016 Christopher Roy Bratusek <nano@jpberlin.de>
2013-10-12 10:37:29 +02:00
patchimage creates wbfs images from riivolution patches.
--game=<gamename/gameletter> | specify game you want to create
--iso/--rom=/home/test/<Image> | specify which ISO/ROM to use for building
--riivolution/--patch=<Patch> | specify path to Riivolution/Patch files
2013-06-15 19:33:43 +02:00
--version=EURv1,EURv2,USAv1,USAv2,JPNv1 | specify your game version
--customdid=SMNP02 | specify a custom ID to use for the game
--sharesave | let modified game share savegame with original game
2013-06-20 18:15:42 +02:00
--download | download riivolution patchfiles
2014-05-11 21:57:19 +02:00
--soundtrack | download soundtrack (if available)
--only-soundtrack | download soundtrack only (if available) and exit
--covers | download covers (if available)
--only-covers=SMNP02 | download covers only (if available)
--banner=<banner.bnr> | use a custom banner (riivolution games)
--download-banner | download a custom banner (if available)
--xdelta=<path> | path to xdelta patches
--cpk=<path> | path to unpatched xdelta patches"
2013-06-15 19:33:43 +02:00
exit 0
;;
esac
shift
2016-08-05 20:52:12 +02:00
xcount=$((xcount+1))
2013-06-15 19:33:43 +02:00
done
}