- make the script more robust against directories with spaces in their names

- when downloading covers for Wii games fail, retry with the US cover
- don't re-download covers that already exist
- don't re-download soundtracks that already exist
This commit is contained in:
Christopher Roy Bratusek 2016-08-03 22:20:17 +02:00
parent be2b5d1169
commit dbac5397e4
4 changed files with 86 additions and 45 deletions

View File

@ -11,6 +11,7 @@ v6.4.0:
- when setting destination directory for created files, check if they are - when setting destination directory for created files, check if they are
writeable, else fallback to ${HOME} writeable, else fallback to ${HOME}
- fix telling user path to Hans Files for all Pokemon game hacks - fix telling user path to Hans Files for all Pokemon game hacks
- make the script more robust against directories with spaces in their names
::configuration file changes ::configuration file changes
- new configuration variable PATCHIMAGE_3DS_DIR, global directory - new configuration variable PATCHIMAGE_3DS_DIR, global directory
@ -26,8 +27,16 @@ v6.4.0:
::misc. changes ::misc. changes
- show full path for Hans Files for all games, instead of relative - show full path for Hans Files for all games, instead of relative
- only show path to Hans files if they exist - only show path to Hans files if they exist
- when downloading covers for Wii games fail, retry with the US cover
- don't re-download covers that already exist
- don't re-download soundtracks that already exist
::game additions ::game additions
::::New Super Mario Bros. Wii
- add support for Revised Super Mario Bros. Wii
::::Pokemon
- add support for Pokemon Eternal X - add support for Pokemon Eternal X
- choose between legal, rebalanced and insanity version - choose between legal, rebalanced and insanity version
- for legal and rebalanced, choose whether to nerf first gym leader - for legal and rebalanced, choose whether to nerf first gym leader
@ -39,6 +48,9 @@ v6.4.0:
- add support for Pokemon Sinking Sapphire - add support for Pokemon Sinking Sapphire
- provide custom Hans banner and launcher - provide custom Hans banner and launcher
::::Other
- add support for Bravely Second Uncensored
::game changes and updates ::game changes and updates
- update download link for Pokemon Rutile Ruby to v2.1 - update download link for Pokemon Rutile Ruby to v2.1
- update download link for Pokemon Star Sapphire to v2.1 - update download link for Pokemon Star Sapphire to v2.1

View File

@ -4,14 +4,12 @@ GAMEIDS
SLF?01 NSMBW3: The Final Levels SLF?01 NSMBW3: The Final Levels
SMN?01 Original New Super Mario Bros. Wii SMN?01 Original New Super Mario Bros. Wii
SMN?02 ?
SMN?03 Newer Super Mario Bros. Wii SMN?03 Newer Super Mario Bros. Wii
SMN?04 Canon Super Mario Bros. Wii SMN?04 Canon Super Mario Bros. Wii
SMN?05 Another Super Mario Bros. Wii SMN?05 Another Super Mario Bros. Wii
SMN?06 Newer Summer Sun SMN?06 Newer Summer Sun
SMN?07 Newer Holiday Special SMN?07 Newer Holiday Special
SMN?08 Epic Super Bowser World SMN?08 Epic Super Bowser World
SMN?09 ?
SMN?10 Koopa Country SMN?10 Koopa Country
SMN?11 New Super Mario Bros. 4 SMN?11 New Super Mario Bros. 4
SMN?12 Awesomer Super Luigi Mini SMN?12 Awesomer Super Luigi Mini
@ -20,6 +18,7 @@ SMN?41 Devil Mario Winter Special
SMN?60 Remixed Super Mario Bros. Wii SMN?60 Remixed Super Mario Bros. Wii
SMN?65 Ghostly Super Ghost Boos. Wii SMN?65 Ghostly Super Ghost Boos. Wii
SMN?66 The Legend of Yoshi SMN?66 The Legend of Yoshi
SMN?69 Revised Super Mario Bros. Wii
SMN?DU DarkUmbra Super Mario Bros: Anniversary Edition SMN?DU DarkUmbra Super Mario Bros: Anniversary Edition
SMN?FL Newer: Falling Leaf SMN?FL Newer: Falling Leaf
SMN?MI Midi's Super Mario Bros Wii - Just A Little Adventure SMN?MI Midi's Super Mario Bros Wii - Just A Little Adventure
@ -64,8 +63,8 @@ RMC?32 Wiimms MKW-Fun 2016-07
### Kirby's Adventure Wii ### ### Kirby's Adventure Wii ###
SUK?01 Kirby's Adventure Wii (only exchanging first SUK?01 Kirby's Adventure Wii
player's character is supported) * exchange first player's character
### Pokemon ### ### Pokemon ###
@ -82,6 +81,11 @@ SUK?01 Kirby's Adventure Wii (only exchanging first
* Pokemon Star Sapphire * Pokemon Star Sapphire
* Pokemon Sinking Sapphire * Pokemon Sinking Sapphire
### Bravely ###
000400000017BB00 Bravely Second
* De-Censoring the game
### Toyko Mirage Sessions #FE ### ### Toyko Mirage Sessions #FE ###
ASE?01 De-Censoring the game ASE?01 De-Censoring the game

View File

@ -139,6 +139,10 @@ case ${GAME} in
source ${PATCHIMAGE_SCRIPT_DIR}/ghostlysuperghostbooswii.sh source ${PATCHIMAGE_SCRIPT_DIR}/ghostlysuperghostbooswii.sh
;; ;;
NSMB26 | RevisedSuperMarioBrosWii )
source ${PATCHIMAGE_SCRIPT_DIR}/revisedsupermariobroswii.sh
;;
NSMB99 | NSMBWCharacters ) NSMB99 | NSMBWCharacters )
source ${PATCHIMAGE_SCRIPT_DIR}/nsmbw_characters.sh source ${PATCHIMAGE_SCRIPT_DIR}/nsmbw_characters.sh
;; ;;
@ -207,6 +211,10 @@ case ${GAME} in
source ${PATCHIMAGE_SCRIPT_DIR}/pokemonsinkingsapphire.sh source ${PATCHIMAGE_SCRIPT_DIR}/pokemonsinkingsapphire.sh
;; ;;
BSECU | BravelySecondUncensored )
source ${PATCHIMAGE_SCRIPT_DIR}/bravelyseconduncensored.sh
;;
ZEL1 | ParallelWorlds | "The Legend of Zelda: Parallel Worlds" ) ZEL1 | ParallelWorlds | "The Legend of Zelda: Parallel Worlds" )
source ${PATCHIMAGE_SCRIPT_DIR}/parallelworlds.sh source ${PATCHIMAGE_SCRIPT_DIR}/parallelworlds.sh
;; ;;
@ -274,8 +282,9 @@ case ${GAME_TYPE} in
echo -e "\n >>> ${GAMENAME} saved as: ${PATCHIMAGE_GAME_DIR}/${GAMEID}.wbfs\n" echo -e "\n >>> ${GAMENAME} saved as: ${PATCHIMAGE_GAME_DIR}/${GAMEID}.wbfs\n"
if [[ ${PATCHIMAGE_COVER_DOWNLOAD} == TRUE ]]; then if [[ ${PATCHIMAGE_COVER_DOWNLOAD} == TRUE ]]; then
echo -e "\n*** Z) download_covers" echo -e "*** Z) download_covers"
download_covers ${GAMEID} download_covers ${GAMEID}
echo -e "\nCovers downloaded to ${PATCHIMAGE_COVER_DIR}"
fi fi
;; ;;

View File

@ -12,15 +12,15 @@ setup_tools () {
else SUFFIX=32 else SUFFIX=32
fi fi
WIT=${PATCHIMAGE_TOOLS_DIR}/wit.${SUFFIX} WIT="${PATCHIMAGE_TOOLS_DIR}"/wit.${SUFFIX}
PPF=${PATCHIMAGE_TOOLS_DIR}/applyppf3.${SUFFIX} PPF="${PATCHIMAGE_TOOLS_DIR}"/applyppf3.${SUFFIX}
IPS=${PATCHIMAGE_TOOLS_DIR}/uips.${SUFFIX} IPS="${PATCHIMAGE_TOOLS_DIR}"/uips.${SUFFIX}
UNP=${PATCHIMAGE_TOOLS_DIR}/unp UNP="${PATCHIMAGE_TOOLS_DIR}"/unp
SZS=${PATCHIMAGE_TOOLS_DIR}/wszst.${SUFFIX} SZS="${PATCHIMAGE_TOOLS_DIR}"/wszst.${SUFFIX}
XD3=${PATCHIMAGE_TOOLS_DIR}/xdelta3.${SUFFIX} XD3="${PATCHIMAGE_TOOLS_DIR}"/xdelta3.${SUFFIX}
GDOWN=${PATCHIMAGE_TOOLS_DIR}/gdown.pl GDOWN="${PATCHIMAGE_TOOLS_DIR}"/gdown.pl
CTRTOOL=${PATCHIMAGE_TOOLS_DIR}/ctrtool.${SUFFIX} CTRTOOL="${PATCHIMAGE_TOOLS_DIR}"/ctrtool.${SUFFIX}
FDSTOOL=${PATCHIMAGE_TOOLS_DIR}/3dstool.${SUFFIX} FDSTOOL="${PATCHIMAGE_TOOLS_DIR}"/3dstool.${SUFFIX}
} }
@ -58,6 +58,7 @@ NSMB22 New Super Mario Bros. Wii - Other World
NSMB23 The Legend of Yoshi NSMB23 The Legend of Yoshi
NSMB24 Remixed Super Mario Bros. Wii NSMB24 Remixed Super Mario Bros. Wii
NSMB25 Ghostly Super Ghost Boos. Wii NSMB25 Ghostly Super Ghost Boos. Wii
NSMB26 Revised Super Mario Bros. Wii
NSMB99 Customize Characters NSMB99 Customize Characters
@ -85,6 +86,8 @@ PKMN6 Pokemon Wilting Y
PKMN7 Pokemon Rising Ruby PKMN7 Pokemon Rising Ruby
PKMN8 Pokemon Sinking Sapphire PKMN8 Pokemon Sinking Sapphire
BSECU Bravely Second Uncensored
<<<<<< ROMS >>>>>> <<<<<< ROMS >>>>>>
ZEL1 The Legend of Zelda: Parallel Worlds ZEL1 The Legend of Zelda: Parallel Worlds
@ -98,8 +101,8 @@ read GAME
download_soundtrack () { download_soundtrack () {
if [[ ${SOUNDTRACK_LINK} ]]; then if [[ ${SOUNDTRACK_LINK} && ! -f "${PATCHIMAGE_AUDIO_DIR}"/"${SOUNDTRACK_ZIP}" ]]; then
wget --no-check-certificate "${SOUNDTRACK_LINK}" -O "${PATCHIMAGE_AUDIO_DIR}"/${SOUNDTRACK_ZIP} || exit 57 wget --no-check-certificate "${SOUNDTRACK_LINK}" -O "${PATCHIMAGE_AUDIO_DIR}"/"${SOUNDTRACK_ZIP}" || exit 57
echo -e "\n >>> soundtrack saved to\n >>> ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP}" echo -e "\n >>> soundtrack saved to\n >>> ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP}"
else else
echo -e "no soundtrack for ${GAMENAME} available." echo -e "no soundtrack for ${GAMENAME} available."
@ -162,37 +165,37 @@ apply_banner () {
check_directories () { check_directories () {
[[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR} && -w $(dirname ${PATCHIMAGE_RIIVOLUTION_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR} && -w $(dirname ${PATCHIMAGE_RIIVOLUTION_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_RIIVOLUTION_DIR} || PATCHIMAGE_RIIVOLUTION_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_RIIVOLUTION_DIR}" || PATCHIMAGE_RIIVOLUTION_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_RIIVOLUTION_DIR} ]] && PATCHIMAGE_RIIVOLUTION_DIR=${HOME} [[ ! -w ${PATCHIMAGE_RIIVOLUTION_DIR} ]] && PATCHIMAGE_RIIVOLUTION_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_WBFS_DIR} && -w $(dirname ${PATCHIMAGE_WBFS_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_WBFS_DIR} && -w $(dirname ${PATCHIMAGE_WBFS_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_WBFS_DIR} || PATCHIMAGE_WBFS_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_WBFS_DIR}" || PATCHIMAGE_WBFS_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_WBFS_DIR} ]] && PATCHIMAGE_WBFS_DIR=${HOME} [[ ! -w "${PATCHIMAGE_WBFS_DIR}" ]] && PATCHIMAGE_WBFS_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_GAME_DIR} && -w $(dirname ${PATCHIMAGE_GAME_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_GAME_DIR} && -w $(dirname ${PATCHIMAGE_GAME_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_GAME_DIR} || PATCHIMAGE_GAME_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_GAME_DIR}" || PATCHIMAGE_GAME_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_GAME_DIR} ]] && PATCHIMAGE_GAME_DIR=${HOME} [[ ! -w ${PATCHIMAGE_GAME_DIR} ]] && PATCHIMAGE_GAME_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_3DS_DIR} && -w $(dirname ${PATCHIMAGE_3DS_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_3DS_DIR} && -w $(dirname ${PATCHIMAGE_3DS_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_3DS_DIR} || PATCHIMAGE_3DS_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_3DS_DIR}" || PATCHIMAGE_3DS_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_3DS_DIR} ]] && PATCHIMAGE_3DS_DIR=${HOME} [[ ! -w ${PATCHIMAGE_3DS_DIR} ]] && PATCHIMAGE_3DS_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_ROM_DIR} && -w $(dirname ${PATCHIMAGE_ROM_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_ROM_DIR} && -w $(dirname ${PATCHIMAGE_ROM_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_ROM_DIR} || PATCHIMAGE_ROM_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_ROM_DIR}" || PATCHIMAGE_ROM_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_ROM_DIR} ]] && PATCHIMAGE_ROM_DIR=${HOME} [[ ! -w ${PATCHIMAGE_ROM_DIR} ]] && PATCHIMAGE_ROM_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_AUDIO_DIR} && -w $(dirname ${PATCHIMAGE_AUDIO_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_AUDIO_DIR} && -w $(dirname ${PATCHIMAGE_AUDIO_DIR}) ]] && \
( mkdir -p ${PATCHIMAGE_AUDIO_DIR} || PATCHIMAGE_AUDIO_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_AUDIO_DIR}" || PATCHIMAGE_AUDIO_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_AUDIO_DIR} ]] && PATCHIMAGE_AUDIO_DIR=${HOME} [[ ! -w ${PATCHIMAGE_AUDIO_DIR} ]] && PATCHIMAGE_AUDIO_DIR=${HOME}
[[ ! -d ${PATCHIMAGE_COVER_DIR} && -w $(dirname ${PATCHIMAGE_COVER_DIR}) ]] && \ [[ ! -d ${PATCHIMAGE_COVER_DIR} && -w $(dirname "${PATCHIMAGE_COVER_DIR}") ]] && \
( mkdir -p ${PATCHIMAGE_COVER_DIR} || PATCHIMAGE_COVER_DIR=${HOME} ) ( mkdir -p "${PATCHIMAGE_COVER_DIR}" || PATCHIMAGE_COVER_DIR=${HOME} )
[[ ! -w ${PATCHIMAGE_COVER_DIR} ]] && PATCHIMAGE_COVER_DIR=${HOME} [[ ! -w ${PATCHIMAGE_COVER_DIR} ]] && PATCHIMAGE_COVER_DIR=${HOME}
@ -224,12 +227,12 @@ check_input_image_nsmb () {
elif test -f SMN?01.iso; then elif test -f SMN?01.iso; then
x=2 x=2
IMAGE=SMN?01.iso IMAGE=SMN?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/SMN?01.iso; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/SMN?01.iso; then
x=3 x=3
IMAGE=${PATCHIMAGE_WBFS_DIR}/SMN?01.iso IMAGE="${PATCHIMAGE_WBFS_DIR}"/SMN?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/SMN?01.wbfs; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/SMN?01.wbfs; then
x=4 x=4
IMAGE=${PATCHIMAGE_WBFS_DIR}/SMN?01.wbfs IMAGE="${PATCHIMAGE_WBFS_DIR}"/SMN?01.wbfs
else else
echo -e "please specify image to use with --iso=<path>" echo -e "please specify image to use with --iso=<path>"
exit 15 exit 15
@ -249,12 +252,12 @@ check_input_image_kirby () {
elif test -f SMN?01.iso; then elif test -f SMN?01.iso; then
x=2 x=2
IMAGE=SMN?01.iso IMAGE=SMN?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/SUK?01.iso; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/SUK?01.iso; then
x=3 x=3
IMAGE=${PATCHIMAGE_WBFS_DIR}/SUK?01.iso IMAGE="${PATCHIMAGE_WBFS_DIR}"/SUK?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/SUK?01.wbfs; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/SUK?01.wbfs; then
x=4 x=4
IMAGE=${PATCHIMAGE_WBFS_DIR}/SUK?01.wbfs IMAGE="${PATCHIMAGE_WBFS_DIR}"/SUK?01.wbfs
else else
echo -e "please specify image to use with --iso=<path>" echo -e "please specify image to use with --iso=<path>"
exit 15 exit 15
@ -274,12 +277,12 @@ check_input_image_mkwiimm () {
elif test -f RMC?01.iso; then elif test -f RMC?01.iso; then
x=2 x=2
IMAGE=RMC?01.iso IMAGE=RMC?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/RMC?01.iso; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/RMC?01.iso; then
x=3 x=3
IMAGE=${PATCHIMAGE_WBFS_DIR}/RMC?01.iso IMAGE="${PATCHIMAGE_WBFS_DIR}"/RMC?01.iso
elif test -f ${PATCHIMAGE_WBFS_DIR}/RMC?01.wbfs; then elif test -f "${PATCHIMAGE_WBFS_DIR}"/RMC?01.wbfs; then
x=4 x=4
IMAGE=${PATCHIMAGE_WBFS_DIR}/RMC?01.wbfs IMAGE="${PATCHIMAGE_WBFS_DIR}"/RMC?01.wbfs
else else
echo -e "please specify image to use with --iso=<path>" echo -e "please specify image to use with --iso=<path>"
exit 15 exit 15
@ -318,7 +321,7 @@ show_nsmb_db () {
ID1=${1:0:3} ID1=${1:0:3}
ID2=${1:4:2} ID2=${1:4:2}
gawk -F \: "/^${ID1}\*${ID2}/"'{print $2}' \ gawk -F \: "/^${ID1}\*${ID2}/"'{print $2}' \
< ${PATCHIMAGE_SCRIPT_DIR}/nsmbw.db || echo "** Unknown **" < "${PATCHIMAGE_SCRIPT_DIR}"/nsmbw.db || echo "** Unknown **"
} }
@ -326,7 +329,7 @@ show_mkwiimm_db () {
ID=${1:4:2} ID=${1:4:2}
[[ ${ID} == [0-9][0-9] ]] && gawk -F \: "/^${ID}/"'{print $2}' \ [[ ${ID} == [0-9][0-9] ]] && gawk -F \: "/^${ID}/"'{print $2}' \
< ${PATCHIMAGE_SCRIPT_DIR}/mkwiimm.db || echo "** Unknown **" < "${PATCHIMAGE_SCRIPT_DIR}"/mkwiimm.db || echo "** Unknown **"
} }
@ -366,14 +369,14 @@ show_titles_db () {
ID=${1/.*} ID=${1/.*}
gawk -F \: "/^${ID}/"'{print $2}' \ gawk -F \: "/^${ID}/"'{print $2}' \
< ${PATCHIMAGE_SCRIPT_DIR}/titles.db || echo "** Unknown **" < "${PATCHIMAGE_SCRIPT_DIR}"/titles.db || echo "** Unknown **"
} }
check_wfc () { check_wfc () {
ID=${1/.*} ID=${1/.*}
if [[ $(grep ${ID} ${PATCHIMAGE_SCRIPT_DIR}/wfc.db) ]]; then if [[ $(grep ${ID} "${PATCHIMAGE_SCRIPT_DIR}"/wfc.db) ]]; then
echo TRUE echo TRUE
else else
echo FALSE echo FALSE
@ -443,11 +446,24 @@ check_riivolution_patch () {
download_covers () { download_covers () {
alt=$(echo $1 | sed s/./E/4)
for path in cover cover3D coverfull disc disccustom; do for path in cover cover3D coverfull disc disccustom; do
wget -O ${PATCHIMAGE_COVER_DIR}/${1}_${path}.png \ if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/${1}_${path}.png ]]; then
http://art.gametdb.com/wii/${path}/EN/${1}.png &>/dev/null \ wget -O "${PATCHIMAGE_COVER_DIR}"/${1}_${path}.png \
|| ( echo "Cover (${path}) does not exist for gameid ${1}." && \ http://art.gametdb.com/wii/${path}/EN/${1}.png &>/dev/null \
rm ${PATCHIMAGE_COVER_DIR}/${1}_${path}.png ) || 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
[[ ! -f "${PATCHIMAGE_COVER_DIR}"/${1}_${path}.png ]] && \
echo "Cover (${path}) does not exist for gameid ${1}."
fi
done done
} }