Compare commits

..

No commits in common. "master" and "7.2.2" have entirely different histories.

52 changed files with 10335 additions and 10871 deletions

View File

@ -1,101 +1,3 @@
v7.6.0 (----):
::game updates:
- Pokemon Rising Ruby: support version 2.1
- Pokemon Sinking Sapphire: support version 2.1
- support Wiimms Mario Kart Fun 2016-10
- support Wiimms Mario Kart Fun 2017-05
- support Wiimms Mario Kart Fun 2017-12
- support Wiimms Mario Kart Fun 2018-03
- support Wiimms Mario Kart Fun 2018-06
- support Wiimms Mario Kart Fun 2018-09
- support Wiimms Mario Kart Fun 2018-12
- support Wiimms Mario Kart Fun 2019-03
- support Wiimms Mario Kart Fun 2019-06
- support Newer Super Luigi Wii: Dark Moon (@lordofpeace)
::tools updates:
- update WIT to 2.40a
- update SZS to 1.53a
::misc. changes:
- update title database
v7.5.0 (20160927):
::game additions:
- add support for Super Mario Bros. Frozen Editon
::game updates:
- Pokemon Rising Ruby: support version 2.0
- Pokemon Sinking Sapphire: support version 2.0
::misc. changes:
- fix ID6 for NSMBW3: The Final Levels in README.GAMEIDS
- other minor changes
v7.4.0 (20160903):
::Tokyo Mirage Sessions #FE Restoration Patcher
- use 'Restoration' instead of 'Uncensored' as Name
- more failsafe build-directory name
- add support for downloading xdelta files with --download
- check whether files have already been downloaded and use those
- for xdelta patches and original cpk files, now check whether every single
file exists, rather than just one of them
- for cpk file path support both the top level directory of the dump as well
as the sub level directory which holds the cpk files, read: when your dump
is in /home/test/TMSFE you were previously required to set the cpk path to
/home/test/TMSFE/vol/content/Pack now using /home/test/TMSFE will work, too,
as the script will look for the sub directory vol/content/Pack on it's own
::game updates:
- update Cliff Super Mario Bros. Wii to version 1.1.1
- update Revised Super Mario Bros. Wii to version 1.1
- update The Legend of Yoshi to version 2016-08-31
::misc. changes:
- use 'wget -nv' instead of 'wget -q'
- except for cover downloader
v7.3.1.1 (20160829):
::bug fixes
- fixed brocken nsmb-helper script
v7.3.1 (20160828):
::bug fixes
- fixed that --iso, --rom, --patch, --xdelta, --cpk and --riivolution command
line flags failed when relative paths were given (regression from 7.2.2)
- fixed that temporary files were kept when downloads failed, causing required
user-input for wget when trying again
- fixed that --cpk and --xdelta command line flags never actually checked wether
the given directory does exist, before trying to patch the game [the game
patcher does, too, but it should fail immediately upon wrong user-input]
- remove build directory before trying to build a game, not afterwards, so that
in case a build failed in batch-mode, the next one can be tried without issues
- fixed that character mods were not applicable to Cliff Super Mario Bros. Wii
::misc. changes:
- drop support for Awesomer Super Luigi Mini (broken and offline)
- update Cliff Super Mario Bros. to version 1.1
v7.3.0 (20160827):
::internal changes:
- modularize common.sh
- supply megadl (32 and 64 bit)
::downloader changes:
- changed download links to Mediafire so that they can automatically be
downloaded using wget, this makes Cliff Super Mario Bros., Ghostly Super
Mario Boos Wii, MLG Super Mario Bros. Wii, Pokemon Neo X, Pokemon Neo Y
and Pokemon Red Ruby auto-downloadable
- changed download links to Sendspace so that they can automatically be
downloaded using wget, this makes Challenging Super Mario Bros. Wii:
Virtual Special auto-downloadable
- include megadl a tool that can download files from Mega using commandline,
this makes Pokemon Delta Emerald, Pokemon Rutile Ruby, Pokemon Star Sapphire
and Bravely Second Uncensored auto-downloadable
::misc. changes:
- update Cliff Super Mario Bros. to version 1.0.5
v7.2.2 (20160823):
::bug fixes
- fix PATCHIMAGE_3DS_DIR setup when no ${HOME}/.patchimage.rc exists

View File

@ -1,5 +1,5 @@
all:
@echo "nothing to do, use 'make install'"
@echo "nothing to do"
install:
mkdir -p $(DESTDIR)/usr/bin/
@ -28,4 +28,3 @@ uninstall:
fi
clean:
@echo "nothing to"

3
README
View File

@ -60,9 +60,6 @@ Example usages:
Newer Super Mario Bros. Wii and Cannon Super Mario Bros. in one go:
$ patchimage --game="NewerSMB Cannon" --iso=/home/test/SMNP01.iso --download
All Mods of New Super Mario Bros. Wii:
$ patchimage --game=NSMB_ALL --iso=/home/test/SMNP01.iso --download
License: GNU GPLv3
Extra Licenses:
> applyppf3 as-is

View File

@ -14,10 +14,8 @@ b) SMN?01.wbfs
MRR?01 New Super Mario Bros. Wii Retro Remix
SCL?01 Cliff Super Mario Bros. Wii
SFR?01 Super Mario Bros. Frozen Editon
SFL?01 NSMBW3: The Final Levels
SLB?01 MLG Super Luigi Bros. Wii
SLF?01 NSMBW3: The Final Levels
SMM?02 Super Mario: Mushroom Adventure PLUS - Winter Moon
SMN?03 Newer Super Mario Bros. Wii
SMN?04 Canon Super Mario Bros. Wii
SMN?05 Another Super Mario Bros. Wii
@ -26,6 +24,7 @@ SMN?07 Newer Holiday Special
SMN?08 Epic Super Bowser World
SMN?10 Koopa Country
SMN?11 New Super Mario Bros. 4
SMN?12 Awesomer Super Luigi Mini
SMN?31 New Super Mario Bros. Wii - Other World
SMN?41 Devil Mario Winter Special
SMN?60 Remixed Super Mario Bros. Wii
@ -40,6 +39,7 @@ SMN?YL Luigi's Super Yoshi Bros.
SMN?ZA Newer Apocalypse
SMN?ZC Challenging Super Mario Bros. Wii: Virtual Special
SMN?ZY Super Mario Skyland
SMM?02 Super Mario: Mushroom Adventure PLUS - Winter Moon
SMV?01 Super Mario Vacation
### Mario Kart Wii ###
@ -81,15 +81,6 @@ RMC?29 Wiimms MKW-Fun 2015-08
RMC?30 Wiimms MKW-Fun 2015-12
RMC?31 Wiimms MKW-Fun 2016-02
RMC?32 Wiimms MKW-Fun 2016-07
RMC?33 Wiimms MKW-Fun 2016-10
RMC?34 Wiimms MKW-Fun 2017-05
RMC?35 Wiimms MKW-Fun 2017-12
RMC?36 Wiimms MKW-Fun 2018-03
RMC?37 Wiimms MKW-Fun 2018-06
RMC?38 Wiimms MKW-Fun 2018-09
RMC?39 Wiimms MKW-Fun 2018-12
RMC?40 Wiimms MKW-Fun 2019-03
RMC?41 Wiimms MKW-Fun 2019-06
### Kirby's Adventure Wii ###

View File

@ -20,18 +20,9 @@
24:Wiimms MKW Retro 2014-02:download.wiimm.de/mkw-fun/mkw-retro-2014-02.v3.7z
25:Wiimms MKW-Fun 2014-04:download.wiimm.de/mkw-fun/mkw-fun-2014-04.v4.7z
26:Wiimms MKW-Fun 2014-11:download.wiimm.de/mkw-fun/mkw-fun-2014-11.v1.7z
27:Wiimms MKW-Fun 2015-03:download.wiimm.de/mkw-fun/mkw-fun-2015-03.v3.7z
27:Wiimms MKW-Fun 2015-03:download.wiimm.de/mkw-fun/mkw-fun-2015-03.v2.7z
28:Wiimms MKW-Retro 2015-05:download.wiimm.de/mkw-fun/mkw-retro-2015-05.v1.7z
29:Wiimms MKW-Fun 2015-08:download.wiimm.de/mkw-fun/mkw-fun-2015-08.v2.7z
30:Wiimms MKW-Fun 2015-12:download.wiimm.de/mkw-fun/mkw-fun-2015-12.v2.7z
31:Wiimms MKW-Fun 2016-02:download.wiimm.de/mkw-fun/mkw-fun-2016-02.v3.7z
32:Wiimms MKW-Fun 2016-07:download.wiimm.de/mkw-fun/mkw-fun-2016-07.v3.7z
33:Wiimms MKW-Fun 2016-10:download.wiimm.de/mkw-fun/mkw-fun-2016-10.v2.7z
34:Wiimms MKW-Fun 2017-05:download.wiimm.de/mkw-fun/mkw-fun-2017-05.v2.7z
35:Wiimms MKW-Fun 2017-12:download.wiimm.de/mkw-fun/mkw-fun-2017-12.v3.7z
36:Wiimms MKW-Fun 2018-03:download.wiimm.de/mkw-fun/mkw-fun-2018-03.v2.7z
37:Wiimms MKW-Fun 2018-06:download.wiimm.de/mkw-fun/mkw-fun-2018-06.v2.7z
38:Wiimms MKW-Fun 2018-09:download.wiimm.de/mkw-fun/mkw-fun-2018-09.v3.7z
39:Wiimms MKW-Fun 2018-12:download.wiimm.de/mkw-fun/mkw-fun-2018-12.v1.7z
40:Wiimms MKW-Fun 2019-03:download.wiimm.de/mkw-fun/mkw-fun-2019-03.v1.7z
41:Wiimms MKW-Fun 2019-06:download.wiimm.de/mkw-fun/mkw-fun-2019-06.v2.7z
29:Wiimms MKW-Fun 2015-08:download.wiimm.de/mkw-fun/mkw-fun-2015-08.v1.7z
30:Wiimms MKW-Fun 2015-12:download.wiimm.de/mkw-fun/mkw-fun-2015-12.v1.7z
31:Wiimms MKW-Fun 2016-02:download.wiimm.de/mkw-fun/mkw-fun-2016-02.v2.7z
32:Wiimms MKW-Fun 2016-07:download.wiimm.de/mkw-fun/mkw-fun-2016-07.v1.7z

View File

@ -1,8 +1,5 @@
SCL*01:Cliff Super Mario Bros. Wii
SLB*01:MLG Super Luigi Bros. Wii
SFR*01:Super Mario Bros. Frozen Editon
SLF*01:NSMBW3: The Final Levels
SMM*02:Super Mario: Mushroom Adventure PLUS - Winter Moon
SMN*01:Original New Super Mario Bros. Wii
SMN*03:Newer Super Mario Bros. Wii
SMN*04:Canon Super Mario Bros. Wii
@ -12,6 +9,7 @@ SMN*07:Newer Holiday Special
SMN*08:Epic Super Bowser World
SMN*10:Koopa Country
SMN*11:New Super Mario Bros. 4
SMN*12:Awesomer Super Luigi Mini
SMN*31:New Super Mario Bros. Wii - Other World
SMN*41:Devil Mario Winter Special
SMN*60:Remixed Super Mario Bros. Wii
@ -25,7 +23,6 @@ SMN*RV:RVLution Wii (NewSMB Mod)
SMN*YL:Luigi's Super Yoshi Bros.
SMN*ZA:Newer Apocalypse
SMN*ZY:Super Mario Skyland
SMM*02:Super Mario: Mushroom Adventure PLUS - Winter Moon
SMV*01:Super Mario Vacation
MRR*01:New Super Mario Bros. Wii Retro Remix
SMN*ZB:Newer Super Luigi Wii - Dark Moon
SAD*12:Newer Alpine Dream

View File

@ -10,7 +10,7 @@ NSMB9:RetroRemix:nsmbw/retroremix.sh
NSMB10:WinterMoon:nsmbw/wintermoon.sh
NSMB11:NSMBW3:nsmbw/nsmbw3.sh
NSMB12:Vacation:nsmbw/summervacation.sh
NSMB13:Frozen:nsmbw/frozen.sh
NSMB13:ASLM:nsmbw/awesomersuperluigi.sh
NSMB14:Sykland:nsmbw/skyland.sh
NSMB15:RVLution:nsmbw/rvlution.sh
NSMB16:Midi:nsmbw/midissupermariowii.sh
@ -27,8 +27,6 @@ NSMB26:RevisedSuperMarioBros:nsmbw/revisedsupermariobroswii.sh
NSMB27:MLGSuperLuigi:nsmbw/mlgsuperluigibroswii.sh
NSMB28:Cliff:nsmbw/cliffsmb.sh
NSMB29:Virtual:nsmbw/virtualspecial.sh
NSMB30:NSLDM:nsmbw/luigidarkmoon.sh
NSMB31:Alpine:nsmbw/alpinedream.sh
NSMB99:NSMBWCharacters:nsmbw/nsmbw_characters.sh
MKW1:Wiimmfi:mkwii/wiimmfi.sh
MKW2:Wiimmpatch:wiimmfi_generic.sh

File diff suppressed because it is too large Load Diff

24
debian/changelog vendored
View File

@ -1,27 +1,3 @@
patchimage (7.5.0-1nano) unstable; urgency=low
* new upstream stable release
-- Christopher Roy Bratusek <nano@jpberlin.de> Tue, 27 Sep 2016 18:10:38 +0200
patchimage (7.4.0-1nano) unstable; urgency=low
* new upstream stable release
-- Christopher Roy Bratusek <nano@jpberlin.de> Sat, 03 Sep 2016 11:33:09 +0200
patchimage (7.3.0-1nano) unstable; urgency=low
* new upstream stable release
-- Christopher Roy Bratusek <nano@jpberlin.de> Sat, 27 Aug 2016 11:03:41 +0200
patchimage (7.2.2-1nano) unstable; urgency=low
* new upstream bugfix release
-- Christopher Roy Bratusek <nano@jpberlin.de> Tue, 23 Aug 2016 19:57:31 +0200
patchimage (7.2.0-1nano) unstable; urgency=low
* new upstream stable release

View File

@ -1 +1 @@
3.0 (quilt)
3.0 (git)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -40,23 +40,242 @@ export PATCHIMAGE_COVER_DIR="${basedir}"
export PATCHIMAGE_ROM_DIR="${basedir}"
export PATCHIMAGE_3DS_DIR="${basedir}"
MODULES="common downloader helper-3ds helper-mkwii \
helper-nsmb helper-wiimmfi messages optparse patcher"
for mod in ${MODULES[@]}; do
source "${PATCHIMAGE_SCRIPT_DIR}/common/${mod}.sh"
done
source "${PATCHIMAGE_SCRIPT_DIR}/common.sh"
source "${PATCHIMAGE_SCRIPT_DIR}/messages.sh"
optparse "${@}"
check_directories
setup_tools
patchimage_riivolution () {
show_notes
rm -rf "${WORKDIR}"
if [[ ${PATCHIMAGE_SOUNDTRACK_DOWNLOAD} == TRUE ]]; then
echo -e "\n*** A) download_soundtrack"
download_soundtrack
if [[ ${ONLY_SOUNDTRACK} == TRUE ]]; then
exit 0
fi
fi
echo -e "\n*** 1) check_input_image"
check_input_image
echo "*** 2) check_riivolution_patch"
check_riivolution_patch
echo "*** 3) extract game"
${WIT} extract "${IMAGE}" "${WORKDIR}" --psel=DATA -q || exit 51
echo "*** 4) detect_game_version"
detect_game_version
rm -f "${GAMEID}".wbfs "${CUSTOMID}".wbfs
echo "*** 5) place_files"
place_files || exit 45
echo "*** 6) download_banner"
download_banner
echo "*** 7) apply_banner"
apply_banner
echo "*** 8) dolpatch"
dolpatch
if [[ ${CUSTOMID} ]]; then
GAMEID="${CUSTOMID}"
fi
if [[ ${PATCHIMAGE_SHARE_SAVE} == "TRUE" ]]; then
TMD_OPTS=""
else
TMD_OPTS="--tt-id=K"
fi
echo "*** 9) rebuild and store game"
"${WIT}" cp -o -q --disc-id="${GAMEID}" "${TMD_OPTS}" --name "${GAMENAME}" \
-B "${WORKDIR}" "${PATCHIMAGE_GAME_DIR}"/"${GAMEID}".wbfs || exit 51
echo "*** 10) remove workdir"
rm -rf "${WORKDIR}"
echo -e "\n >>> ${GAMENAME} saved as: ${PATCHIMAGE_GAME_DIR}/${GAMEID}.wbfs\n"
if [[ ${PATCHIMAGE_COVER_DOWNLOAD} == TRUE ]]; then
echo -e "*** Z) download_covers"
download_covers "${GAMEID}"
echo -e "\nCovers downloaded to ${PATCHIMAGE_COVER_DIR}"
fi
}
patchimage_mkwiimm () {
show_notes
echo -e "\n*** 1) check_input_image"
check_input_image
echo -e "\n*** 2) download_wiimm"
download_wiimm
echo -e "\n*** 3) patch_wiimm"
patch_wiimm
}
patchimage_generic () {
show_notes
echo -e "\n*** 1) check_input_image"
check_input_image_special
echo -e "\n*** 2) pi_action"
pi_action
}
patchimage_ips () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${IPS}" a "${PATCH}" "${GAMENAME}.${ext}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${IPS}" a "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${GAMENAME}.${ext}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_bps () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${BPS}" -decode -t "${GAMENAME}.${ext}" "${PATCH}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${BPS}" -decode -t "${GAMENAME}.${ext}" \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_ppf () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${PPF}" a "${PATCH}" "${GAMENAME}.${ext}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${PPF}" a "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${GAMENAME}.${ext}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_hans () {
show_notes
echo -e "\n*** 1) check_input_rom"
if [[ ${HANS_MULTI_SOURCE} ]]; then
check_input_rom_special
else check_input_rom
fi
rm -rf romfs/ romfs.bin "${ROMFS}"
echo "*** 2) check_hans_files"
check_hans_files
echo "*** 3) unpack_3dsrom"
unpack_3dsrom "${ROM}" || exit 51
if [[ ${HANS_DELTA} ]]; then
echo "*** 4) apply_delta"
if [[ -f ${PATCH} ]]; then
"${XD3}" -d -f -s romfs.bin \
"${PATCH}" "${ROMFS}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
"${XD3}" -d -f -s romfs.bin \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${ROMFS}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
echo "*** 5) storing game"
else
echo "*** 4) unpack_3dsromfs"
unpack_3dsromfs romfs.bin || exit 51
echo "*** 5) patch_romfs"
patch_romfs
echo "*** 6) repack_romfs"
repack_3dsromfs romfs/ "${ROMFS}" || exit 51
echo "*** 7) storing game"
fi
mv "${ROMFS}" "${PATCHIMAGE_ROM_DIR}"
echo "
*** succesfully created new romfs as \"${PATCHIMAGE_ROM_DIR}/${ROMFS}\"
"
[[ ${DATA} ]] && echo \
" >> for Hans Banners / Launchers, place all files from
$(readlink -m "${DATA}")
into the root of your sd card
"
if [[ ${HANS_DELTA} ]]; then
echo "*** 6) remove workdir"
else echo "*** 8) remove workdir"
fi
rm -rf romfs/ romfs.bin
}
patchimage_delta () {
show_notes
echo -e "\n*** 1) menu"
menu || exit 9
echo -e "\n*** 2) patch"
patch || exit 51
}
[[ ! ${GAME} ]] && ask_game
for game in ${GAME[@]}; do
case ${game} in
NSMB_ALL )
NEW_GAME=(${NEW_GAME[@]} NSMB{1..31})
NEW_GAME=(${NEW_GAME[@]} NSMB{1..12} NSMB{14..29})
;;
PKMN_ALL )
@ -103,7 +322,6 @@ for game in ${GAME[@]}; do
continue
fi
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
cd "${BUILD_DIR}"
@ -143,4 +361,5 @@ for game in ${GAME[@]}; do
esac
cd "${CURDIR}"
rm -rf "${BUILD_DIR}"
done

View File

@ -47,7 +47,7 @@ check_input_rom_special () {
EUR )
echo ">> found EUR game version"
ROMFS="0017BB00.romfs"
DOWNLOAD_LINK="https://mega.nz/#!N0QEHLRB!g_Wy5dngt4xgVXtk1BhQaqSSRj0phjP6xMp776OSEo8"
DOWNLOAD_LINK="mega:///#!N0QEHLRB!g_Wy5dngt4xgVXtk1BhQaqSSRj0phjP6xMp776OSEo8"
RIIVOLUTION_ZIP="Bravely_Second_Uncensored_EUR_MINI_Asia81.rar"
RIIVOLUTION_DIR="Bravely_Second_Uncensored_EUR_MINI_Asia81/ExtractedRomFS"
;;
@ -55,7 +55,7 @@ check_input_rom_special () {
USA )
echo ">> found USA game version"
ROMFS="0017BA00.romfs"
DOWNLOAD_LINK="https://mega.nz/#!9sx1QKRQ!A6qzCkvY9HmPGu4VIy1TiikTRgbE-vUho99LOYWxA84"
DOWNLOAD_LINK="mega:///#!9sx1QKRQ!A6qzCkvY9HmPGu4VIy1TiikTRgbE-vUho99LOYWxA84"
RIIVOLUTION_ZIP="Bravely_Second_Uncensored_USA_MINI_Asia81.rar"
RIIVOLUTION_DIR="Bravely_Second_Uncensored_USA_MINI_Asia81/ExtractedRomFS"
;;

702
scripts/common.sh Normal file
View File

@ -0,0 +1,702 @@
#!/bin/bash
PATCHIMAGE_VERSION=7.2.2
PATCHIMAGE_RELEASE=2016/08/23
[[ -e ${HOME}/.patchimage.rc ]] && source "${HOME}"/.patchimage.rc
setup_tools () {
if [[ $(uname -m) == "x86_64" ]]; then
SUFFIX=64
else SUFFIX=32
fi
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}"
}
ask_game () {
echo "${SUPPORTED_GAMES_ALL}
Enter ID or Short Name for the Game you want to build (multiple separated by space):
"
read -er GAME
}
download_soundtrack () {
if [[ ${SOUNDTRACK_LINK} && ! -f ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP} ]]; then
wget -q --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}"
else
echo -e "no soundtrack for ${GAMENAME} available."
fi
}
download_banner () {
if [[ ${PATCHIMAGE_BANNER_DOWNLOAD} == "TRUE" ]]; then
if [[ ${CUSTOM_BANNER} ]]; then
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr ]]; then
wget -q --no-check-certificate "${CUSTOM_BANNER}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp || \
rm -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp
fi
if [[ -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp ]]; then
mv "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
BANNER="${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
else echo "*** >> could not download custom banner"
fi
else
echo "*** >> no custom banner available"
fi
fi
}
nsmbw_version () {
if [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232911 ]]; then
VERSION=EURv1
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_152101 ]]; then
VERSION=EURv2
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232303 ]]; then
VERSION=USAv1
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_143554 ]]; then
VERSION=USAv2
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_231655 ]]; then
VERSION=JPNv1
export REG_LETTER=J
elif [[ ! ${VERSION} ]]; then
echo -e "please specify your games version using --version={EURv1,EURv2,USAv1,USAv2,JPNv1}"
exit 27
fi
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
}
check_directories () {
if [[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR} && -w $(dirname "${PATCHIMAGE_RIIVOLUTION_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_RIIVOLUTION_DIR}" || PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_RIIVOLUTION_DIR} ]] && PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_WBFS_DIR} && -w $(dirname "${PATCHIMAGE_WBFS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_WBFS_DIR}" || PATCHIMAGE_WBFS_DIR="${HOME}"
fi
[[ ! -w "${PATCHIMAGE_WBFS_DIR}" ]] && PATCHIMAGE_WBFS_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_GAME_DIR} && -w $(dirname "${PATCHIMAGE_GAME_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_GAME_DIR}" || PATCHIMAGE_GAME_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_GAME_DIR} ]] && PATCHIMAGE_GAME_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_3DS_DIR} && -w $(dirname "${PATCHIMAGE_3DS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_3DS_DIR}" || PATCHIMAGE_3DS_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_3DS_DIR} ]] && PATCHIMAGE_3DS_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_ROM_DIR} && -w $(dirname "${PATCHIMAGE_ROM_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_ROM_DIR}" || PATCHIMAGE_ROM_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_ROM_DIR} ]] && PATCHIMAGE_ROM_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_AUDIO_DIR} && -w $(dirname "${PATCHIMAGE_AUDIO_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_AUDIO_DIR}" || PATCHIMAGE_AUDIO_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_AUDIO_DIR} ]] && PATCHIMAGE_AUDIO_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_COVER_DIR} && -w $(dirname "${PATCHIMAGE_COVER_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_COVER_DIR}" || PATCHIMAGE_COVER_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_COVER_DIR} ]] && PATCHIMAGE_COVER_DIR="${HOME}"
}
check_input_image () {
x=0
if [[ ! ${IMAGE} ]]; then
WBFS0=$(find . -maxdepth 1 -name "${WBFS_MASK}".wbfs)
WBFS1=$(find "${PATCHIMAGE_WBFS_DIR}" -name "${WBFS_MASK}".wbfs)
ISO0=$(find . -maxdepth 1 -name "${WBFS_MASK}".iso)
ISO1=$(find "${PATCHIMAGE_WBFS_DIR}" -name "${WBFS_MASK}".iso)
if [[ -f ${WBFS0} ]]; then
x=1
IMAGE=${WBFS0}
elif [[ -f ${ISO0} ]]; then
x=2
IMAGE=${ISO0}
elif [[ -f ${WBFS1} ]]; then
x=3
IMAGE=${WBFS1}
elif [[ -f ${ISO1} ]]; then
x=4
IMAGE=${ISO1}
else
echo -e "please specify image to use with --iso=<path>"
exit 15
fi
fi
echo "*** >> status: ${x}"
IMAGE=$(readlink -m "${IMAGE}")
}
check_input_rom () {
x=5
if [[ ! ${ROM} ]]; then
ROM0=$(find . -maxdepth 1 -name "${ROM_MASK}")
ROM1=$(find "${PATCHIMAGE_3DS_DIR}" -name "${ROM_MASK}")
if [[ -f ${ROM0} ]]; then
x=6
ROM=${ROM0}
elif [[ -f ${ROM1} ]]; then
x=7
ROM=${ROM1}
else
if [[ ! ${HANS_MULTI_SOURCE} ]]; then
echo -e "error: could not find suitable ROM, specify using --rom"
exit 15
fi
fi
fi
echo "*** >> status: ${x}"
ROM=$(readlink -m "${ROM}")
}
show_nsmb_db () {
ID1=${1:0:3}
ID2=${1:4:2}
gawk -F : "/^${ID1}\*${ID2}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/nsmbw.db || echo "** Unknown **"
}
show_mkwiimm_db () {
ID=${1:4:2}
[[ ${ID} == [0-9][0-9] ]] && \
gawk -F : "/^${ID}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/mkwiimm.db \
|| echo "** Unknown **"
}
ask_input_image_mkwiimm () {
echo "Choose Mario Kart Wii Image to modify
ALL patch all images"
for image in "${PWD}"/RMC???.{iso,wbfs} "${PATCHIMAGE_WBFS_DIR}"/RMC???.{iso,wbfs}; do
[[ -f ${image} ]] && echo " ${image##*/} $(show_mkwiimm_db "${image##*/}")"
done
echo ""
}
ask_input_image_nsmb () {
echo "Choose New Super Mario Bros. Wii Image to modify
ALL patch all images"
for image in "${PWD}"/SMN???.{iso,wbfs} \
"${PWD}"/SLF???.{iso,wbfs} \
"${PWD}"/SLB???.{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}"/SLB???.{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/.*}
gawk -F : "/^${ID}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/titles.db \
|| echo "** Unknown **"
}
check_wfc () {
ID=${1/.*}
if grep -q "${ID}" "${PATCHIMAGE_DATABASE_DIR}"/wfc.db; then
echo TRUE
else
echo FALSE
fi
}
ask_input_image_wiimmfi () {
echo "Choose Wii Game Image to wiimmfi"
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##*/}")"
fi
done
echo ""
}
unpack () {
if [[ ${UNP_EXTRA_ARGS} ]]; then
${UNP} "${1}" -- ${UNP_EXTRA_ARGS} >/dev/null || exit 63
else ${UNP} "${1}" >/dev/null || exit 63
fi
}
download_riivolution_patch () {
x=4
case ${DOWNLOAD_LINK} in
*docs.google* | *drive.google* )
x=5
echo "*** >> downloading"
${GDOWN} "${DOWNLOAD_LINK}" \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp >/dev/null || \
( echo -e "\nDownload failed!" && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
;;
*mega.nz* )
x=6
echo "can not download from Mega, download manually from:
${DOWNLOAD_LINK}
"
exit 21
;;
*mediafire* )
x=6
echo "can not download from Mediafire, download manually from:
${DOWNLOAD_LINK}
"
exit 21
;;
*sendspace* )
x=6
echo "can not download from SendSpace, download manually from:
${DOWNLOAD_LINK}
"
exit 21
;;
*romhacking* )
x=6
echo "can not download from Romhacking, download manually from:
${DOWNLOAD_LINK}
"
exit 21
;;
"" )
echo "no download link for ${GAMENAME} available."
exit 21
;;
* )
x=5
echo "*** >> downloading"
wget -q --no-check-certificate "${DOWNLOAD_LINK}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp || \
( echo -e "\nDownload failed!" && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
;;
esac
}
check_riivolution_patch () {
x=0
if [[ ! -d ${RIIVOLUTION_DIR} ]]; then
x=1
if [[ -f "${PWD}/${RIIVOLUTION_ZIP}" ]]; then
echo "*** >> unpacking"
x=2
unpack "${PWD}/${RIIVOLUTION_ZIP}"
elif [[ -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" ]]; then
echo "*** >> unpacking"
x=3
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
elif [[ ${PATCHIMAGE_RIIVOLUTION_DOWNLOAD} == "TRUE" ]]; then
download_riivolution_patch
else
if [[ ${1} == --nofail ]]; then
echo -e "no zip archive found. Skipping to bare patch file detection"
else
echo -e "please specify zip/rar to use with --riivolution=<path>"
exit 21
fi
fi
fi
echo "*** >> status: ${x}"
}
download_covers () {
alt=$(echo "${1}" | sed s/./E/4)
for path in cover cover3D coverfull disc disccustom; do
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -q -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/EN/"${1}".png \
|| rm "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -q -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/US/"${alt}".png \
|| 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
}
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
}
optparse () {
xcount=0
pcount=$#
while [[ $xcount -lt $pcount ]]; do
case ${1} in
--iso=* )
ISO_PATH="${1/*=}"
if [[ -f "${ISO_PATH}" ]]; then
IMAGE="${ISO_PATH}"
else
echo -e "ISO not found"
exit 15
fi
;;
--rom=* )
ROM_PATH="${1/*=}"
if [[ -f "${ROM_PATH}" ]]; then
ROM="${ROM_PATH}"
else
echo -e "ROM not found"
exit 15
fi
;;
--riivolution=* )
RIIVOLUTION="${1/*=}"
if [[ -f "${RIIVOLUTION}" ]]; then
"${UNP}" "${RIIVOLUTION}" >/dev/null
else
echo -e "Riivolution patch ${RIIVOLUTION} not found."
exit 21
fi
;;
--patch=* )
PATCH="${1/*=}"
if [[ -f "${PATCH}" ]]; then
PATCH="${PATCH}"
else
echo -e "IPS/PPF patch ${PATCH} not found."
exit 21
fi
;;
--customid=* )
CUSTOMID=${1/*=}
if [[ ${#CUSTOMID} != 6 ]]; then
echo -e "CustomID ${CUSTOMID} needs to have 6 digits"
exit 39
fi
;;
--download )
export PATCHIMAGE_RIIVOLUTION_DOWNLOAD=TRUE
;;
--show-download )
export PATCHIMAGE_SHOW_DOWNLOAD=TRUE
;;
--soundtrack )
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
;;
--only-soundtrack )
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
export ONLY_SOUNDTRACK=TRUE
;;
--override-szs )
export MKWIIMM_OVERRIDE_SZS=TRUE
;;
--version=* )
VERSION="${1/*=}"
case ${VERSION} in
EURv1 )
export REG_LETTER=P
;;
EURv2 )
export REG_LETTER=P
;;
USAv1 )
export REG_LETTER=E
;;
USAv2 )
export REG_LETTER=E
;;
JPNv1 )
export REG_LETTER=J
;;
* )
echo -e "unrecognized game version: ${VERSION}"
exit 27
;;
esac
;;
--sharesave )
export PATCHIMAGE_SHARE_SAVE=TRUE
;;
--game=* )
export GAME="${1/*=}"
;;
--list-games )
echo "${SUPPORTED_GAMES_ALL}"
exit 0
;;
--list-games-nsmb )
echo "${SUPPORTED_GAMES_NSMB}"
exit 0
;;
--list-games-mkwiimmfi )
echo "${SUPPORTED_GAMES_MKWIIMMFI}"
exit 0
;;
--list-games-tokyo )
echo "${SUPPORTED_GAMES_TOKYOMIRAGESESSIONSFE}"
exit 0
;;
--list-games-kirby )
echo "${SUPPORTED_GAMES_KIRBY}"
exit 0
;;
--list-games-pokemon )
echo "${SUPPORTED_GAMES_POKEMON}"
exit 0
;;
--list-games-3ds )
echo "${SUPPORTED_GAMES_3DS}"
exit 0
;;
--list-games-other )
echo "${SUPPORTED_GAMES_OTHER}"
exit 0
;;
--list-requirements )
echo "${REQUIREMENTS_ALL}"
exit 0
;;
--list-requirements-nsmb )
echo "${REQUIREMENTS_NSMB}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-mkwiimmfi )
echo "${REQUIREMENTS_MKWIIMMFI}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-tokyo )
echo "${REQUIREMENTS_TOKYOMIRAGESESSIONSFE}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-kirby )
echo "${REQUIREMENTS_KIRBY}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-pokemon )
echo "${REQUIREMENTS_POKEMON}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-3ds )
echo "${REQUIREMENTS_3DS}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-other )
echo "${REQUIREMENTS_OTHER}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--covers )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
;;
--only-covers=* )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
download_covers "${1/*=}"
exit 0
;;
--banner=* )
BANNER="${1/*=}"
BANNER_EXT="${BANNER//*./}"
if [[ ${BANNER_EXT} != "bnr" ]]; then
echo "given banner (${BANNER}) is not a .bnr file!"
exit 33
fi
;;
--download-banner )
export PATCHIMAGE_BANNER_DOWNLOAD=TRUE
;;
--xdelta=* )
export XDELTA_PATH="${1/*=}"
;;
--cpk=* )
export CPK_PATH="${1/*=}"
;;
--help | -h )
echo "${PATCHIMAGE_HELP}"
exit 0
;;
esac
shift
xcount=$((xcount+1))
done
}

View File

@ -1,182 +0,0 @@
#!/bin/bash
PATCHIMAGE_VERSION=7.6.0
PATCHIMAGE_RELEASE=2017/01/XX+
[[ -f ${HOME}/.patchimage.rc ]] && source "${HOME}"/.patchimage.rc
setup_tools () {
if [[ $(uname -m) == "x86_64" ]]; then
SUFFIX=64
else SUFFIX=32
fi
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}"
export MEGADL="${PATCHIMAGE_TOOLS_DIR}"/megadl."${SUFFIX}"
}
ask_game () {
echo "${SUPPORTED_GAMES_ALL}
Enter ID or Short Name for the Game you want to build (multiple separated by space):
"
read -er GAME
}
check_directories () {
if [[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR} && -w $(dirname "${PATCHIMAGE_RIIVOLUTION_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_RIIVOLUTION_DIR}" || PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_RIIVOLUTION_DIR} ]] && PATCHIMAGE_RIIVOLUTION_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_WBFS_DIR} && -w $(dirname "${PATCHIMAGE_WBFS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_WBFS_DIR}" || PATCHIMAGE_WBFS_DIR="${HOME}"
fi
[[ ! -w "${PATCHIMAGE_WBFS_DIR}" ]] && PATCHIMAGE_WBFS_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_GAME_DIR} && -w $(dirname "${PATCHIMAGE_GAME_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_GAME_DIR}" || PATCHIMAGE_GAME_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_GAME_DIR} ]] && PATCHIMAGE_GAME_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_3DS_DIR} && -w $(dirname "${PATCHIMAGE_3DS_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_3DS_DIR}" || PATCHIMAGE_3DS_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_3DS_DIR} ]] && PATCHIMAGE_3DS_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_ROM_DIR} && -w $(dirname "${PATCHIMAGE_ROM_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_ROM_DIR}" || PATCHIMAGE_ROM_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_ROM_DIR} ]] && PATCHIMAGE_ROM_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_AUDIO_DIR} && -w $(dirname "${PATCHIMAGE_AUDIO_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_AUDIO_DIR}" || PATCHIMAGE_AUDIO_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_AUDIO_DIR} ]] && PATCHIMAGE_AUDIO_DIR="${HOME}"
if [[ ! -d ${PATCHIMAGE_COVER_DIR} && -w $(dirname "${PATCHIMAGE_COVER_DIR}") ]]; then
mkdir -p "${PATCHIMAGE_COVER_DIR}" || PATCHIMAGE_COVER_DIR="${HOME}"
fi
[[ ! -w ${PATCHIMAGE_COVER_DIR} ]] && PATCHIMAGE_COVER_DIR="${HOME}"
}
check_input_image () {
x=0
if [[ ! ${IMAGE} ]]; then
WBFS0=$(find . -maxdepth 1 -name "${WBFS_MASK}".wbfs)
WBFS1=$(find "${PATCHIMAGE_WBFS_DIR}" -name "${WBFS_MASK}".wbfs)
ISO0=$(find . -maxdepth 1 -name "${WBFS_MASK}".iso)
ISO1=$(find "${PATCHIMAGE_WBFS_DIR}" -name "${WBFS_MASK}".iso)
if [[ -f ${WBFS0} ]]; then
x=1
IMAGE=${WBFS0}
elif [[ -f ${ISO0} ]]; then
x=2
IMAGE=${ISO0}
elif [[ -f ${WBFS1} ]]; then
x=3
IMAGE=${WBFS1}
elif [[ -f ${ISO1} ]]; then
x=4
IMAGE=${ISO1}
else
echo -e "please specify image to use with --iso=<path>"
exit 15
fi
fi
echo "*** >> status: ${x}"
IMAGE=$(readlink -m "${IMAGE}")
}
check_input_rom () {
x=5
if [[ ! ${ROM} ]]; then
ROM0=$(find . -maxdepth 1 -name "${ROM_MASK}")
ROM1=$(find "${PATCHIMAGE_3DS_DIR}" -name "${ROM_MASK}")
if [[ -f ${ROM0} ]]; then
x=6
ROM=${ROM0}
elif [[ -f ${ROM1} ]]; then
x=7
ROM=${ROM1}
else
if [[ ! ${HANS_MULTI_SOURCE} ]]; then
echo -e "error: could not find suitable ROM, specify using --rom"
exit 15
fi
fi
fi
echo "*** >> status: ${x}"
ROM=$(readlink -m "${ROM}")
}
unpack () {
if [[ ${UNP_EXTRA_ARGS} ]]; then
${UNP} "${1}" -- ${UNP_EXTRA_ARGS} >/dev/null || exit 63
else ${UNP} "${1}" >/dev/null || exit 63
fi
}
check_riivolution_patch () {
x=0
if [[ ! -d ${RIIVOLUTION_DIR} ]]; then
x=1
if [[ -f "${RIIVOLUTION_ZIP_CUSTOM}" ]]; then
echo "*** >> unpacking"
x=2
unpack "${RIIVOLUTION_ZIP_CUSTOM}"
elif [[ -f "${PWD}/${RIIVOLUTION_ZIP}" ]]; then
echo "*** >> unpacking"
x=2
unpack "${PWD}/${RIIVOLUTION_ZIP}"
elif [[ -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}" ]]; then
echo "*** >> unpacking"
x=3
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
elif [[ ${PATCHIMAGE_RIIVOLUTION_DOWNLOAD} == "TRUE" ]]; then
download_riivolution_patch
else
if [[ ${1} == --nofail ]]; then
echo -e "no zip archive found. Skipping to bare patch file detection"
else
echo -e "please specify zip/rar to use with --riivolution=<path>"
exit 21
fi
fi
fi
echo "*** >> status: ${x}"
}

View File

@ -1,133 +0,0 @@
#!/bin/bash
download_soundtrack () {
if [[ ${SOUNDTRACK_LINK} && ! -f ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP} ]]; then
wget -nv --no-check-certificate "${SOUNDTRACK_LINK}" \
-O "${PATCHIMAGE_AUDIO_DIR}"/"${SOUNDTRACK_ZIP}" || \
( rm "${PATCHIMAGE_AUDIO_DIR}"/"${SOUNDTRACK_ZIP}" && \
echo "downloading soundtrack failed." && exit 57 )
echo -e "\n >>> soundtrack saved to\n >>> ${PATCHIMAGE_AUDIO_DIR}/${SOUNDTRACK_ZIP}"
else
echo -e "no soundtrack for ${GAMENAME} available."
fi
}
download_banner () {
if [[ ${PATCHIMAGE_BANNER_DOWNLOAD} == "TRUE" ]]; then
if [[ ${CUSTOM_BANNER} ]]; then
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr ]]; then
wget -nv --no-check-certificate "${CUSTOM_BANNER}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp || \
rm -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp
fi
if [[ -f "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp ]]; then
mv "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
BANNER="${PATCHIMAGE_RIIVOLUTION_DIR}"/"${GAMEID}"-custom-banner.bnr
else echo "*** >> could not download custom banner"
fi
else
echo "*** >> no custom banner available"
fi
fi
}
download_riivolution_patch () {
x=4
case ${DOWNLOAD_LINK} in
*docs.google* | *drive.google* )
x=5
echo "*** >> downloading"
${GDOWN} "${DOWNLOAD_LINK}" \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp >/dev/null || \
( rm "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp && \
download_riivolution_failed && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
;;
*mega.nz* )
x=5
echo "*** >> downloading"
${MEGADL} \
--path="${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${DOWNLOAD_LINK}" >/dev/null || \
( rm "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp && \
download_riivolution_failed && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
;;
*romhacking* )
x=6
echo "can not download from Romhacking, download manually from:
${DOWNLOAD_LINK}
"
exit 21
;;
"" )
echo "no download link for ${GAMENAME} available."
download_riivolution_failed
exit 21
;;
* )
x=5
echo "*** >> downloading"
wget -nv --no-check-certificate "${DOWNLOAD_LINK}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp || \
( rm "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp && \
download_riivolution_failed && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
echo "*** >> unpacking"
unpack "${PATCHIMAGE_RIIVOLUTION_DIR}/${RIIVOLUTION_ZIP}"
;;
esac
}
download_covers () {
alt=$(echo "${1}" | sed s/./E/4)
for path in cover cover3D coverfull disc disccustom; do
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -q -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/EN/"${1}".png \
|| rm "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png
if [[ ! -f "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png ]]; then
wget -q -O "${PATCHIMAGE_COVER_DIR}"/"${1}"_"${path}".png \
http://art.gametdb.com/wii/"${path}"/US/"${alt}".png \
|| 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
}
download_riivolution_failed () {
echo -e "\nDownload failed!
You can try to download manualy from :
https://goaibox.com/sl/3suwkMVFZj
https://archive.org/download/new-super-mario-bros-wii-mod-archive/"
}

View File

@ -1,19 +0,0 @@
#!/bin/bash
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
}

View File

@ -1,25 +0,0 @@
#!/bin/bash
show_mkwiimm_db () {
ID=${1:4:2}
[[ ${ID} == [0-9][0-9] ]] && \
gawk -F : "/^${ID}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/mkwiimm.db \
|| echo "** Unknown **"
}
ask_input_image_mkwiimm () {
echo "Choose Mario Kart Wii Image to modify
ALL patch all images"
for image in "${PWD}"/RMC???.{iso,wbfs} "${PATCHIMAGE_WBFS_DIR}"/RMC???.{iso,wbfs}; do
[[ -f ${image} ]] && echo " ${image##*/} $(show_mkwiimm_db "${image##*/}")"
done
echo ""
}

View File

@ -1,63 +0,0 @@
#!/bin/bash
nsmbw_version () {
if [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232911 ]]; then
VERSION=EURv1
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_152101 ]]; then
VERSION=EURv2
export REG_LETTER=P
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_232303 ]]; then
VERSION=USAv1
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2010-01-05_143554 ]]; then
VERSION=USAv2
export REG_LETTER=E
elif [[ -f ${WORKDIR}/files/COPYDATE_LAST_2009-10-03_231655 ]]; then
VERSION=JPNv1
export REG_LETTER=J
elif [[ ! ${VERSION} ]]; then
echo -e "please specify your games version using --version={EURv1,EURv2,USAv1,USAv2,JPNv1}"
exit 27
fi
echo "*** >> status: ${VERSION}"
}
show_nsmb_db () {
ID1=${1:0:3}
ID2=${1:4:2}
gawk -F : "/^${ID1}\*${ID2}/"'{print $2}' \
< "${PATCHIMAGE_DATABASE_DIR}"/nsmbw.db || echo "** Unknown **"
}
ask_input_image_nsmb () {
echo "Choose New Super Mario Bros. Wii Image to modify
ALL patch all images"
for image in "${PWD}"/SCL???.{iso,wbfs} \
"${PWD}"/SMN???.{iso,wbfs} \
"${PWD}"/SLF???.{iso,wbfs} \
"${PWD}"/SFR???.{iso,wbfs} \
"${PWD}"/SLB???.{iso,wbfs} \
"${PWD}"/SMM???.{iso,wbfs} \
"${PWD}"/SMV???.{iso,wbfs} \
"${PWD}"/MRR???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SCL???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SMN???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SLF???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SFR???.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/SLB???.{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 ""
}

View File

@ -1,27 +0,0 @@
#!/bin/bash
check_wfc () {
ID=${1/.*}
if grep -q "${ID}" "${PATCHIMAGE_DATABASE_DIR}"/wfc.db; then
echo TRUE
else
echo FALSE
fi
}
ask_input_image_wiimmfi () {
echo "Choose Wii Game Image to wiimmfi"
for image in "${PWD}"/*.{iso,wbfs} \
"${PATCHIMAGE_WBFS_DIR}"/*.{iso,wbfs}; do
if [[ -f ${image} && ! ${image} == "*/RMC*" && $(check_wfc "${image##*/}") == TRUE ]]; then
echo " ${image##*/} $(show_titles_db "${image##*/}")"
fi
done
echo ""
}

View File

@ -1,258 +0,0 @@
#!/bin/bash
optparse () {
xcount=0
pcount=$#
while [[ $xcount -lt $pcount ]]; do
case ${1} in
--iso=* )
ISO_PATH="${1/*=}"
if [[ -f "${ISO_PATH}" ]]; then
IMAGE=$(readlink -m "${ISO_PATH}")
else
echo -e "ISO not found"
exit 15
fi
;;
--rom=* )
ROM_PATH="${1/*=}"
if [[ -f "${ROM_PATH}" ]]; then
ROM=$(readlink -m "${ROM_PATH}")
else
echo -e "ROM not found"
exit 15
fi
;;
--riivolution=* )
RIIVOLUTION="${1/*=}"
if [[ -f "${RIIVOLUTION}" ]]; then
RIIVOLUTION_ZIP_CUSTOM=$(readlink -m "${RIIVOLUTION}")
else
echo -e "Riivolution patch ${RIIVOLUTION} not found."
exit 21
fi
;;
--patch=* )
PATCH="${1/*=}"
if [[ -f "${PATCH}" ]]; then
PATCH=$(readlink -m "${PATCH}")
else
echo -e "IPS/PPF patch ${PATCH} not found."
exit 21
fi
;;
--customid=* )
CUSTOMID=${1/*=}
if [[ ${#CUSTOMID} != 6 ]]; then
echo -e "CustomID ${CUSTOMID} needs to have 6 digits"
exit 39
fi
;;
--download )
export PATCHIMAGE_RIIVOLUTION_DOWNLOAD=TRUE
;;
--show-download )
export PATCHIMAGE_SHOW_DOWNLOAD=TRUE
;;
--soundtrack )
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
;;
--only-soundtrack )
export PATCHIMAGE_SOUNDTRACK_DOWNLOAD=TRUE
export ONLY_SOUNDTRACK=TRUE
;;
--override-szs )
export MKWIIMM_OVERRIDE_SZS=TRUE
;;
--version=* )
VERSION="${1/*=}"
case ${VERSION} in
EURv1 )
export REG_LETTER=P
;;
EURv2 )
export REG_LETTER=P
;;
USAv1 )
export REG_LETTER=E
;;
USAv2 )
export REG_LETTER=E
;;
JPNv1 )
export REG_LETTER=J
;;
* )
echo -e "unrecognized game version: ${VERSION}"
exit 27
;;
esac
;;
--sharesave )
export PATCHIMAGE_SHARE_SAVE=TRUE
;;
--game=* )
export GAME="${1/*=}"
;;
--list-games )
echo "${SUPPORTED_GAMES_ALL}"
exit 0
;;
--list-games-nsmb )
echo "${SUPPORTED_GAMES_NSMB}"
exit 0
;;
--list-games-mkwiimmfi )
echo "${SUPPORTED_GAMES_MKWIIMMFI}"
exit 0
;;
--list-games-tokyo )
echo "${SUPPORTED_GAMES_TOKYOMIRAGESESSIONSFE}"
exit 0
;;
--list-games-kirby )
echo "${SUPPORTED_GAMES_KIRBY}"
exit 0
;;
--list-games-pokemon )
echo "${SUPPORTED_GAMES_POKEMON}"
exit 0
;;
--list-games-3ds )
echo "${SUPPORTED_GAMES_3DS}"
exit 0
;;
--list-games-other )
echo "${SUPPORTED_GAMES_OTHER}"
exit 0
;;
--list-requirements )
echo "${REQUIREMENTS_ALL}"
exit 0
;;
--list-requirements-nsmb )
echo "${REQUIREMENTS_NSMB}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-mkwiimmfi )
echo "${REQUIREMENTS_MKWIIMMFI}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-tokyo )
echo "${REQUIREMENTS_TOKYOMIRAGESESSIONSFE}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-kirby )
echo "${REQUIREMENTS_KIRBY}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-pokemon )
echo "${REQUIREMENTS_POKEMON}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-3ds )
echo "${REQUIREMENTS_3DS}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--list-requirements-other )
echo "${REQUIREMENTS_OTHER}"
echo "${REQUIREMENTS_FOOTER}"
exit 0
;;
--covers )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
;;
--only-covers=* )
export PATCHIMAGE_COVER_DOWNLOAD=TRUE
download_covers "${1/*=}"
exit 0
;;
--banner=* )
BANNER="${1/*=}"
BANNER_EXT="${BANNER//*./}"
if [[ ${BANNER_EXT} != "bnr" ]]; then
echo "given banner (${BANNER}) is not a .bnr file!"
exit 33
fi
;;
--download-banner )
export PATCHIMAGE_BANNER_DOWNLOAD=TRUE
;;
--xdelta=* )
if [[ -d ${1/*=} ]]; then
export XDELTA_PATH=$(readlink -m "${1/*=}")
else
echo "given directory ${1/*=} does no exist."
exit 75
fi
;;
--cpk=* )
if [[ -d ${1/*=} ]]; then
export CPK_PATH=$(readlink -m "${1/*=}")
else
echo "given directory ${1/*=} does no exist."
exit 75
fi
;;
--help | -h )
echo "${PATCHIMAGE_HELP}"
exit 0
;;
esac
shift
xcount=$((xcount+1))
done
}

View File

@ -1,237 +0,0 @@
#!/bin/bash
patchimage_riivolution () {
show_notes
rm -rf "${WORKDIR}"
if [[ ${PATCHIMAGE_SOUNDTRACK_DOWNLOAD} == TRUE ]]; then
echo -e "\n*** A) download_soundtrack"
download_soundtrack
if [[ ${ONLY_SOUNDTRACK} == TRUE ]]; then
exit 0
fi
fi
echo -e "\n*** 1) check_input_image"
check_input_image
echo "*** 2) check_riivolution_patch"
check_riivolution_patch
echo "*** 3) extract game"
${WIT} extract "${IMAGE}" "${WORKDIR}" --psel=DATA -q || exit 51
echo "*** 4) detect_game_version"
detect_game_version
rm -f "${GAMEID}".wbfs "${CUSTOMID}".wbfs
echo "*** 5) place_files"
place_files || exit 45
echo "*** 6) download_banner"
download_banner
echo "*** 7) apply_banner"
apply_banner
echo "*** 8) dolpatch"
dolpatch
if [[ ${CUSTOMID} ]]; then
GAMEID="${CUSTOMID}"
fi
if [[ ${PATCHIMAGE_SHARE_SAVE} == "TRUE" ]]; then
TMD_OPTS=""
else
TMD_OPTS="--tt-id=K"
fi
echo "*** 9) rebuild and store game"
"${WIT}" cp -o -q --disc-id="${GAMEID}" "${TMD_OPTS}" --name "${GAMENAME}" \
-B "${WORKDIR}" "${PATCHIMAGE_GAME_DIR}"/"${GAMEID}".wbfs || exit 51
echo "*** 10) remove workdir"
rm -rf "${WORKDIR}"
echo -e "\n >>> ${GAMENAME} saved as: ${PATCHIMAGE_GAME_DIR}/${GAMEID}.wbfs\n"
if [[ ${PATCHIMAGE_COVER_DOWNLOAD} == TRUE ]]; then
echo -e "*** Z) download_covers"
download_covers "${GAMEID}"
echo -e "\nCovers downloaded to ${PATCHIMAGE_COVER_DIR}"
fi
}
patchimage_mkwiimm () {
show_notes
echo -e "\n*** 1) check_input_image"
check_input_image
echo -e "\n*** 2) download_wiimm"
download_wiimm
echo -e "\n*** 3) patch_wiimm"
patch_wiimm
}
patchimage_generic () {
show_notes
echo -e "\n*** 1) check_input_image"
check_input_image_special
echo -e "\n*** 2) pi_action"
pi_action
}
patchimage_ips () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${IPS}" a "${PATCH}" "${GAMENAME}.${ext}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${IPS}" a "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${GAMENAME}.${ext}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_bps () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${BPS}" -decode -t "${GAMENAME}.${ext}" "${PATCH}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${BPS}" -decode -t "${GAMENAME}.${ext}" \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_ppf () {
show_notes
check_input_rom
check_riivolution_patch --nofail
if [[ -f ${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${PPF}" a "${PATCH}" "${GAMENAME}.${ext}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
ext="${ROM/*.}"
cp "${ROM}" "${GAMENAME}.${ext}"
"${PPF}" a "${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${GAMENAME}.${ext}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
}
patchimage_hans () {
show_notes
echo -e "\n*** 1) check_input_rom"
if [[ ${HANS_MULTI_SOURCE} ]]; then
check_input_rom_special
else check_input_rom
fi
rm -rf romfs/ romfs.bin "${ROMFS}"
echo "*** 2) check_hans_files"
check_hans_files
echo "*** 3) unpack_3dsrom"
unpack_3dsrom "${ROM}" || exit 51
if [[ ${HANS_DELTA} ]]; then
echo "*** 4) apply_delta"
if [[ -f ${PATCH} ]]; then
"${XD3}" -d -f -s romfs.bin \
"${PATCH}" "${ROMFS}" || exit 51
elif [[ -f ${PATCHIMAGE_RIIVOLUTION_DIR}/${PATCH} ]]; then
"${XD3}" -d -f -s romfs.bin \
"${PATCHIMAGE_RIIVOLUTION_DIR}"/"${PATCH}" \
"${ROMFS}" || exit 51
else
echo -e "error: patch (${PATCH}) could not be found"
exit 21
fi
echo "*** 5) storing game"
else
echo "*** 4) unpack_3dsromfs"
unpack_3dsromfs romfs.bin || exit 51
echo "*** 5) patch_romfs"
patch_romfs
echo "*** 6) repack_romfs"
repack_3dsromfs romfs/ "${ROMFS}" || exit 51
echo "*** 7) storing game"
fi
mv "${ROMFS}" "${PATCHIMAGE_ROM_DIR}"
echo "
*** succesfully created new romfs as \"${PATCHIMAGE_ROM_DIR}/${ROMFS}\"
"
[[ ${DATA} ]] && echo \
" >> for Hans Banners / Launchers, place all files from
$(readlink -m "${DATA}")
into the root of your sd card
"
if [[ ${HANS_DELTA} ]]; then
echo "*** 6) remove workdir"
else echo "*** 8) remove workdir"
fi
rm -rf romfs/ romfs.bin
}
patchimage_delta () {
show_notes
echo -e "\n*** 1) menu"
menu || exit 9
echo -e "\n*** 2) patch"
patch || exit 51
}
apply_banner () {
if [[ ${BANNER} != "" ]]; then
if [[ -f ${BANNER} ]]; then
cp "${BANNER}" "${BANNER_LOCATION}"
else
echo "specified banner ${BANNER} does not exist, not modifying"
fi
fi
}

View File

@ -18,7 +18,7 @@ NSMB9 RetroRemix New Super Mario Bros. Wii Retro Remix
NSMB10 WinterMoon Super Mario: Mushroom Adventure PLUS - Winter Moon
NSMB11 NSMBW3 NSMBW3: The Final Levels
NSMB12 Vacation Super Mario Vacation
NSMB13 Frozen Super Mario Bros. Frozen Editon
NSMB13 ASLM Awesomer Super Luigi Mini
NSMB14 Sykland Super Mario Skyland
NSMB15 RVLution RVLution Wii (NewSMB Mod)
NSMB16 Midi Midi's Super Mario Wii (Just A Little Adventure)
@ -35,8 +35,6 @@ NSMB26 RevisedSuperMarioBros Revised Super Mario Bros. Wii
NSMB27 MLGSuperLuigi MLG Super Luigi Bros. Wii
NSMB28 Cliff Cliff Super Mario Bros. Wii
NSMB29 Virtual Challenging Super Mario Bros. Wii: Virtual Special
NSMB30 NSLDM Newer Super Luigi Wii: Dark Moon
NSMB31 Alpine Newer Alpine Dream
NSMB99 NSMBWCharacters Customize Characters
@ -123,7 +121,7 @@ NSMB9 RetroRemix Retro Remix.rar
NSMB10 WinterMoon WinterMoon.rar
NSMB11 NSMBW3 NSMBW3_The final levels.zip
NSMB12 Vacation Super_Mario_Vacation_v1.00.zip
NSMB13 Frozen SMBFrozenEdition.rar
NSMB13 ASLM AwesomerSLM.zip
NSMB14 Sykland Skyland.zip
NSMB15 RVLution RVLution Wii.zip
NSMB16 Midi MSMBWii.zip
@ -136,12 +134,10 @@ NSMB22 NewSMBWOtherWorld Riivolution Other WorldR v1.02.zip
NSMB23 TheLegendOfYoshi The Legend Of Yoshi.zip
NSMB24 RemixedSuperMarioBros Remixed v1.5.zip
NSMB25 GhostlySuperGhostBoos GSGBW v1.0.2.zip
NSMB26 RevisedSuperMarioBros RSMBW Version 1.1.zip
NSMB26 RevisedSuperMarioBros RSMBW Version 1.0.zip
NSMB27 MLGSuperLuigi MLGLuigiWii.zip
NSMB28 Cliff Cliff_Super_Mario_Brothers_Wiiv1.1.1.zip
NSMB28 Cliff Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip
NSMB29 Virtual ChaSMBW_VrS_v0.2.zip
NSMB30 NSLDM Luigi_Dark_Moon_1.1.zip
NSMB31 Alpine Newer-Alpine-Dream-main.zip
NSMB99 NSMBWCharacters Alternative Character Files are supplied
"

View File

@ -177,7 +177,7 @@ patch_wiimm () {
XD="${PWD}"
if [[ ${ID} == ALL ]]; then
for ID in {06..34}; do
for ID in {06..32}; do
build_mkwiimm "${ID}"
done
else

View File

@ -1,125 +0,0 @@
#!/bin/bash
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://github.com/AlphaT12/Newer-Alpine-Dream/archive/refs/heads/main.zip"
RIIVOLUTION_ZIP="Newer-Alpine-Dream-main.zip"
RIIVOLUTION_DIR="Newer-Alpine-Dream-main/NewerAD"
GAMENAME="Newer Alpine Dream"
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}"/../riivolution/NewerAD.xml
GAME_TYPE=RIIVOLUTION
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"
show_notes () {
echo -e \
"************************************************
${GAMENAME}
11 levels with 8 classic levels, 1 tower level, 1 castle level, 1 secret hard level
By ALPHA_T
Source: https://github.com/AlphaT12/Newer-Alpine-Dream
Base Image: New Super Mario Bros. Wii (SMN?01)
Supported Versions: EURv1, EURv2, USAv1, USAv2, JPNv1
************************************************"
}
detect_game_version () {
nsmbw_version
GAMEID=SAD${REG_LETTER}12
}
place_files () {
NEW_DIRS=( "${WORKDIR}"/files/LevelSamples "${WORKDIR}"/files/NewerRes "${WORKDIR}"/files/Sound/new/sfx "${WORKDIR}"/files/Maps )
for dir in "${NEW_DIRS[@]}"; do
mkdir -p "${dir}"
done
case ${VERSION} in
EUR* )
LANGDIRS=( EngEU FraEU GerEU ItaEU SpaEU NedEU )
for dir in "${LANGDIRS[@]}"; do
cp -r "${RIIVOLUTION_DIR}"/{Font,Message}/ "${WORKDIR}"/files/EU/"${dir}"/
done
cp "${RIIVOLUTION_DIR}"/OthersP/* "${WORKDIR}"/files/EU/Layout/openingTitle/
;;
USAv* )
LANGDIRS=( FraUS EngUS SpaUS )
for dir in "${LANGDIRS[@]}"; do
cp -r "${RIIVOLUTION_DIR}"/{Font,Message}/ "${WORKDIR}"/files/US/"${dir}"/
done
cp "${RIIVOLUTION_DIR}"/OthersE/* "${WORKDIR}"/files/US/Layout/openingTitle/
;;
JPNv1 )
cp "${RIIVOLUTION_DIR}"/Font/* "${WORKDIR}"/files/JP/Font/
cp "${RIIVOLUTION_DIR}"/Message/* "${WORKDIR}"/files/JP/Message/
cp "${RIIVOLUTION_DIR}"/OthersJ/* "${WORKDIR}"/files/JP/Layout/openingTitle/
;;
esac
cp "${RIIVOLUTION_DIR}"/Tilesets/* "${WORKDIR}"/files/Stage/Texture/
cp "${RIIVOLUTION_DIR}"/TitleReplay/* "${WORKDIR}"/files/Replay/title/
cp "${RIIVOLUTION_DIR}"/BGs/* "${WORKDIR}"/files/Object/
cp "${RIIVOLUTION_DIR}"/SpriteTex/* "${WORKDIR}"/files/Object/
cp "${RIIVOLUTION_DIR}"/Layouts/* "${WORKDIR}"/files/Layout/
cp -r "${RIIVOLUTION_DIR}"/Music/*.er "${WORKDIR}"/files/Sound/new/
cp "${RIIVOLUTION_DIR}"/Music/sfx/* "${WORKDIR}"/files/Sound/new/sfx/
cp "${RIIVOLUTION_DIR}"/Music/stream/* "${WORKDIR}"/files/Sound/stream/
cp "${RIIVOLUTION_DIR}"/Music/rsar/* "${WORKDIR}"/files/Sound/
cp "${RIIVOLUTION_DIR}"/NewerRes/* "${WORKDIR}"/files/NewerRes/
cp "${RIIVOLUTION_DIR}"/LevelSamples/* "${WORKDIR}"/files/LevelSamples/
cp "${RIIVOLUTION_DIR}"/Others/charaChangeSelectContents.arc "${WORKDIR}"/files/Layout/charaChangeSelectContents/charaChangeSelectContents.arc
cp "${RIIVOLUTION_DIR}"/Others/characterChange.arc "${WORKDIR}"/files/Layout/characterChange/characterChange.arc
cp "${RIIVOLUTION_DIR}"/Others/continue.arc "${WORKDIR}"/files/Layout/continue/continue.arc
cp "${RIIVOLUTION_DIR}"/Others/controllerInformation.arc "${WORKDIR}"/files/Layout/controllerInformation/controllerInformation.arc
cp "${RIIVOLUTION_DIR}"/Others/corseSelectMenu.arc "${WORKDIR}"/files/Layout/corseSelectMenu/corseSelectMenu.arc
cp "${RIIVOLUTION_DIR}"/Others/corseSelectUIGuide.arc "${WORKDIR}"/files/Layout/corseSelectUIGuide/corseSelectUIGuide.arc
cp "${RIIVOLUTION_DIR}"/Others/dateFile.arc "${WORKDIR}"/files/Layout/dateFile/dateFile.arc
cp "${RIIVOLUTION_DIR}"/Others/dateFile_OLD.arc "${WORKDIR}"/files/Layout/dateFile/dateFile_OLD.arc
cp "${RIIVOLUTION_DIR}"/Others/easyPairing.arc "${WORKDIR}"/files/Layout/easyPairing/easyPairing.arc
cp "${RIIVOLUTION_DIR}"/Others/extensionControllerNunchuk.arc "${WORKDIR}"/files/Layout/extensionControllerNunchuk/extensionControllerNunchuk.arc
cp "${RIIVOLUTION_DIR}"/Others/extensionControllerYokomochi.arc "${WORKDIR}"/files/Layout/extensionControllerYokomochi/extensionControllerYokomochi.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectBase.arc "${WORKDIR}"/files/Layout/fileSelectBase/fileSelectBase.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectBase_OLD.arc "${WORKDIR}"/files/Layout/fileSelectBase/fileSelectBase_OLD.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectPlayer.arc "${WORKDIR}"/files/Layout/fileSelectPlayer/fileSelectPlayer.arc
cp "${RIIVOLUTION_DIR}"/Others/gameScene.arc "${WORKDIR}"/files/Layout/gameScene/gameScene.arc
cp "${RIIVOLUTION_DIR}"/Others/infoWindow.arc "${WORKDIR}"/files/Layout/infoWindow/infoWindow.arc
cp "${RIIVOLUTION_DIR}"/Others/miniGameCannon.arc "${WORKDIR}"/files/Layout/miniGameCannon/miniGameCannon.arc
cp "${RIIVOLUTION_DIR}"/Others/miniGameWire.arc "${WORKDIR}"/files/Layout/miniGameWire/miniGameWire.arc
cp "${RIIVOLUTION_DIR}"/Others/pauseMenu.arc "${WORKDIR}"/files/Layout/pauseMenu/pauseMenu.arc
cp "${RIIVOLUTION_DIR}"/Others/pointResultDateFile.arc "${WORKDIR}"/files/Layout/pointResultDateFile/pointResultDateFile.arc
cp "${RIIVOLUTION_DIR}"/Others/pointResultDateFileFree.arc "${WORKDIR}"/files/Layout/pointResultDateFileFree/pointResultDateFileFree.arc
cp "${RIIVOLUTION_DIR}"/Others/preGame.arc "${WORKDIR}"/files/Layout/preGame/preGame.arc
cp "${RIIVOLUTION_DIR}"/Others/select_cursor.arc "${WORKDIR}"/files/Layout/select_cursor/select_cursor.arc
cp "${RIIVOLUTION_DIR}"/Others/sequenceBG.arc "${WORKDIR}"/files/Layout/sequenceBG/sequenceBG.arc
cp "${RIIVOLUTION_DIR}"/Others/staffCredit.arc "${WORKDIR}"/files/Layout/staffCredit/staffCredit.arc
cp "${RIIVOLUTION_DIR}"/Others/stockItem.arc "${WORKDIR}"/files/Layout/stockItem/stockItem.arc
cp "${RIIVOLUTION_DIR}"/Others/stockItemShadow.arc "${WORKDIR}"/files/Layout/stockItemShadow/stockItemShadow.arc
cp "${RIIVOLUTION_DIR}"/Others/yesnoWindow.arc "${WORKDIR}"/files/Layout/yesnoWindow/yesnoWindow.arc
cp -r "${RIIVOLUTION_DIR}"/Maps/* "${WORKDIR}"/files/Maps/
cp "${RIIVOLUTION_DIR}"/Stages/* "${WORKDIR}"/files/Stage/
}
dolpatch () {
cp "${XML_FILE}" "${XML_FILE}".new
sed -e 's/80001800/803482C0/g' -i "${XML_FILE}".new
XML_FILE="${XML_FILE}".new
${WIT} dolpatch ${DOL} xml="${XML_FILE}" -s "${XML_SOURCE}" xml="${PATCHIMAGE_PATCH_DIR}/NewerSMBW-Loader.xml" -q
${WIT} dolpatch ${DOL} xml="${PATCHIMAGE_PATCH_DIR}/NSMBW_AP.xml" -q
}

View File

@ -0,0 +1,85 @@
#!/bin/bash
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
RIIVOLUTION_ZIP="AwesomerSLM.zip"
RIIVOLUTION_DIR="AwesomerSLM"
GAMENAME="Awesomer Super Luigi Mini"
XML_SOURCE="${RIIVOLUTION_DIR}"/AwesomerSLM
XML_FILE="${RIIVOLUTION_DIR}"/riivolution/ASLMriivo.xml
GAME_TYPE=RIIVOLUTION
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"
show_notes () {
echo -e \
"************************************************
${GAMENAME}
1: Custom Levels for World 1
2: World 1's map will be world 4's
3: Joietyfull64's NSMBU tilesets
4: Custom logo.
Source: http://rvlution.net/forums/viewtopic.php?f=53&t=1851
Base Image: New Super Mario Bros. Wii (SMN?01)
Supported Versions: EURv1, EURv2, USAv1, USAv2, JPNv1
************************************************"
}
detect_game_version () {
nsmbw_version
GAMEID=SMN${REG_LETTER}12
}
place_files () {
NEW_DIRS=( "${WORKDIR}"/files/EU/NedEU/Message "${WORKDIR}"/files/EU/PolEU/Message "${WORKDIR}"/files/Sample/)
for dir in "${NEW_DIRS[@]}"; do
mkdir -p "${dir}"
done
case ${VERSION} in
EUR* )
LANGDIRS=( EngEU FraEU GerEU ItaEU SpaEU NedEU PolEU )
for dir in "${LANGDIRS[@]}"; do
cp "${RIIVOLUTION_DIR}"/AwesomerSLM/MessageEN/Message/Message.arc "${WORKDIR}"/files/EU/"${dir}"/Message/Message.arc
done
;;
USAv* )
LANGDIRS=( FraUS EngUS SpaUS )
for dir in "${LANGDIRS[@]}"; do
cp "${RIIVOLUTION_DIR}"/AwesomerSLM/MessageEN/Message/Message.arc "${WORKDIR}"/files/US/"${dir}"/Message/Message.arc
done
cp -r "${RIIVOLUTION_DIR}"/AwesomerSLM/OpeningUS/openingTitle/ "${WORKDIR}"/files/US/Layout/
;;
JPNv1 )
cp "${RIIVOLUTION_DIR}"/AwesomerSLM/MessageEN/Message/Message.arc "${WORKDIR}"/files/JP/
;;
esac
cp -r "${RIIVOLUTION_DIR}"/AwesomerSLM/Stages/* "${WORKDIR}"/files/Stage/
cp "${RIIVOLUTION_DIR}"/AwesomerSLM/Sound/*.brstm "${WORKDIR}"/files/Sound/stream/
cp "${RIIVOLUTION_DIR}"/AwesomerSLM/Sound/BRSAR/* "${WORKDIR}"/files/Sound/
cp -r "${RIIVOLUTION_DIR}"/AwesomerSLM/Object/ "${WORKDIR}"/files/Object/
}
dolpatch () {
${WIT} dolpatch ${DOL} \
"802F148C=53756D6D53756E#7769696D6A3264" \
"802F118C=53756D6D53756E#7769696D6A3264" \
"802F0F8C=53756D6D53756E#7769696D6A3264" \
xml="${PATCHIMAGE_PATCH_DIR}/NSMBW_AP.xml" -q
}

View File

@ -2,12 +2,12 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="http://download1486.mediafire.com/i5mkopgtba3g/1ruj80uk898qrcg/Cliff_Super_Mario_Brothers_Wiiv1.1.1.zip"
RIIVOLUTION_ZIP="Cliff_Super_Mario_Brothers_Wiiv1.1.1.zip"
DOWNLOAD_LINK="http://www.mediafire.com/download/3j52g4j2jjdxg43/Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip"
RIIVOLUTION_ZIP="Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip"
RIIVOLUTION_DIR="Cliff"
GAMENAME="Cliff Super Mario Bros. Wii"
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}"/../XMLs/Cliff
XML_FILE="${RIIVOLUTION_DIR}"/../Cliff
GAME_TYPE=RIIVOLUTION
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"

View File

@ -1,79 +0,0 @@
#!/bin/bash
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://www.dropbox.com/s/hxf7crqqmyj75xm/SMBFrozenEdition.rar"
RIIVOLUTION_ZIP="SMBFrozenEdition.rar"
RIIVOLUTION_DIR="SMBFrozenEdition/FrozenEdition"
GAMENAME="Super Mario Bros. Frozen Editon"
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}"/../Riivolution/FrozenEditionE.xml
GAME_TYPE=RIIVOLUTION
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"
show_notes () {
echo -e \
"************************************************
${GAMENAME}
Source: http://rvlution.net/thread/4616-super-mario-bros-frozen-editon/
Base Image: New Super Mario Bros. Wii (SMN?01)
Supported Versions: EURv1, EURv2, USAv1, USAv2, JPNv1
************************************************"
}
detect_game_version () {
nsmbw_version
GAMEID=SFR${REG_LETTER}01
XML_FILE="${XML_FILE}"${REG_LETTER}.xml
}
place_files () {
case ${VERSION} in
EUR* )
LANGDIRS=( EngEU FraEU GerEU ItaEU SpaEU )
for dir in "${LANGDIRS[@]}"; do
cp "${RIIVOLUTION_DIR}"/MessageEN/Message.arc "${WORKDIR}"/files/EU/"${dir}"/Message/Message.arc
done
#cp "${RIIVOLUTION_DIR}"/OpeningP/openingTitle.arc "${WORKDIR}"/files/EU/Layout/openingTitle/
;;
USAv* )
LANGDIRS=( FraUS EngUS SpaUS )
for dir in "${LANGDIRS[@]}"; do
cp "${RIIVOLUTION_DIR}"/MessageEN/Message.arc "${WORKDIR}"/files/US/"${dir}"/Message/Message.arc
done
cp "${RIIVOLUTION_DIR}"/OpeningE/openingTitle.arc "${WORKDIR}"/files/US/Layout/openingTitle/
;;
JPNv1 )
cp "${RIIVOLUTION_DIR}"/MessageEN/Message.arc "${WORKDIR}"/files/JP/Message/Message.arc
cp "${RIIVOLUTION_DIR}"/OpeningJ/openingTitle.arc "${WORKDIR}"/files/JP/Layout/openingTitle/
;;
esac
cp -r "${RIIVOLUTION_DIR}"/Layout "${WORKDIR}"/files/
cp -r "${RIIVOLUTION_DIR}"/Object "${WORKDIR}"/files/
cp "${RIIVOLUTION_DIR}"/Sound/stream/*.brstm "${WORKDIR}"/files/Sound/stream/
cp "${RIIVOLUTION_DIR}"/Sound/*.brsar "${WORKDIR}"/files/Sound/
cp "${RIIVOLUTION_DIR}"/Stage/*.arc "${WORKDIR}"/files/Stage/
cp "${RIIVOLUTION_DIR}"/Stage/Texture/* "${WORKDIR}"/files/Stage/Texture/
cp "${RIIVOLUTION_DIR}"/WorldMap/* "${WORKDIR}"/files/WorldMap/
}
dolpatch() {
${WIT} dolpatch ${DOL} \
"802F148C=53756D6D53756E#7769696D6A3264" \
"802F118C=53756D6D53756E#7769696D6A3264" \
"802F0F8C=53756D6D53756E#7769696D6A3264" \
xml="${PATCHIMAGE_PATCH_DIR}/NSMBW_AP.xml" -q
}

View File

@ -2,7 +2,7 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="http://download858.mediafire.com/d8ceavb0izvg/vf7p9pu8bqxohuo/GSGBW+v1.0.2.zip"
DOWNLOAD_LINK="https://www.mediafire.com/?vf7p9pu8bqxohuo"
RIIVOLUTION_ZIP="GSGBW v1.0.2.zip"
RIIVOLUTION_DIR="GSGBW/Ghostly"
GAMENAME="Ghostly Super Ghost Boos. Wii"

View File

@ -1,137 +0,0 @@
#!/bin/bash
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://drive.google.com/open?id=0Bx9bufRDCntQOUhlbno1cmlSOGs"
RIIVOLUTION_ZIP="Luigi_Dark_Moon_1.1.zip"
RIIVOLUTION_DIR="DarkMoon"
GAMENAME="Newer Super Luigi Wii: Dark Moon"
GAME_TYPE=RIIVOLUTION
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}"/../riivolution/DarkMoon.xml
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"
show_notes () {
echo -e \
"************************************************
${GAMENAME}
Newer Super Luigi Wii: Dark Moon is a fan-made sequel to Newer Super Mario Bros. Wii.
Freshened up from their last adventure, Mario and the gang decide to explore a small remote location called Evershade Isles.
However, in the midst of their expedition, Mario goes missing! Looks like it's up to Luigi to save the day!
Features:
Luigi as the star of the show
Wario as a playable character in multiplayer
8 new unique levels
24 tricky star coins to collect
a shiny new map
various recolored objects
...and much more!
http://horizonwii.net/?page=post&id=3473
https://youtu.be/WuCgPhKuASM
Base Image: New Super Mario Bros. Wii (SMN?01)
Supported Versions: EURv1, EURv2, USAv1, USAv2, JPNv1
************************************************"
}
detect_game_version () {
nsmbw_version
GAMEID=SMN${REG_LETTER}ZB
}
place_files () {
NEW_DIRS=( "${WORKDIR}"/files/LevelSamples "${WORKDIR}"/files/NewerRes "${WORKDIR}"/files/Sound/new/sfx "${WORKDIR}"/files/Maps )
for dir in "${NEW_DIRS[@]}"; do
mkdir -p "${dir}"
done
case ${VERSION} in
EUR* )
LANGDIRS=( EngEU FraEU GerEU ItaEU SpaEU NedEU )
for dir in "${LANGDIRS[@]}"; do
cp -r "${RIIVOLUTION_DIR}"/{Font,Message}/ "${WORKDIR}"/files/EU/"${dir}"/
done
cp "${RIIVOLUTION_DIR}"/OthersP/* "${WORKDIR}"/files/EU/Layout/openingTitle/
;;
USAv* )
LANGDIRS=( FraUS EngUS SpaUS )
for dir in "${LANGDIRS[@]}"; do
cp -r "${RIIVOLUTION_DIR}"/{Font,Message}/ "${WORKDIR}"/files/US/"${dir}"/
done
cp "${RIIVOLUTION_DIR}"/OthersE/* "${WORKDIR}"/files/US/Layout/openingTitle/
;;
JPNv1 )
cp "${RIIVOLUTION_DIR}"/Font/* "${WORKDIR}"/files/JP/Font/
cp "${RIIVOLUTION_DIR}"/Message/* "${WORKDIR}"/files/JP/Message/
cp "${RIIVOLUTION_DIR}"/OthersJ/* "${WORKDIR}"/files/JP/Layout/openingTitle/
;;
esac
cp "${RIIVOLUTION_DIR}"/Tilesets/* "${WORKDIR}"/files/Stage/Texture/
cp "${RIIVOLUTION_DIR}"/TitleReplay/* "${WORKDIR}"/files/Replay/title/
cp "${RIIVOLUTION_DIR}"/BGs/* "${WORKDIR}"/files/Object/
cp "${RIIVOLUTION_DIR}"/SpriteTex/* "${WORKDIR}"/files/Object/
cp "${RIIVOLUTION_DIR}"/Layouts/* "${WORKDIR}"/files/Layout/
cp -r "${RIIVOLUTION_DIR}"/Music/*.er "${WORKDIR}"/files/Sound/new/
cp "${RIIVOLUTION_DIR}"/Music/sfx/* "${WORKDIR}"/files/Sound/new/sfx/
cp "${RIIVOLUTION_DIR}"/Music/stream/* "${WORKDIR}"/files/Sound/stream/
cp "${RIIVOLUTION_DIR}"/Music/rsar/* "${WORKDIR}"/files/Sound/
cp "${RIIVOLUTION_DIR}"/NewerRes/* "${WORKDIR}"/files/NewerRes/
cp "${RIIVOLUTION_DIR}"/LevelSamples/* "${WORKDIR}"/files/LevelSamples/
cp "${RIIVOLUTION_DIR}"/Others/charaChangeSelectContents.arc "${WORKDIR}"/files/Layout/charaChangeSelectContents/charaChangeSelectContents.arc
cp "${RIIVOLUTION_DIR}"/Others/characterChange.arc "${WORKDIR}"/files/Layout/characterChange/characterChange.arc
cp "${RIIVOLUTION_DIR}"/Others/continue.arc "${WORKDIR}"/files/Layout/continue/continue.arc
cp "${RIIVOLUTION_DIR}"/Others/controllerInformation.arc "${WORKDIR}"/files/Layout/controllerInformation/controllerInformation.arc
cp "${RIIVOLUTION_DIR}"/Others/corseSelectMenu.arc "${WORKDIR}"/files/Layout/corseSelectMenu/corseSelectMenu.arc
cp "${RIIVOLUTION_DIR}"/Others/corseSelectUIGuide.arc "${WORKDIR}"/files/Layout/corseSelectUIGuide/corseSelectUIGuide.arc
cp "${RIIVOLUTION_DIR}"/Others/dateFile.arc "${WORKDIR}"/files/Layout/dateFile/dateFile.arc
cp "${RIIVOLUTION_DIR}"/Others/dateFile_OLD.arc "${WORKDIR}"/files/Layout/dateFile/dateFile_OLD.arc
cp "${RIIVOLUTION_DIR}"/Others/easyPairing.arc "${WORKDIR}"/files/Layout/easyPairing/easyPairing.arc
cp "${RIIVOLUTION_DIR}"/Others/extensionControllerNunchuk.arc "${WORKDIR}"/files/Layout/extensionControllerNunchuk/extensionControllerNunchuk.arc
cp "${RIIVOLUTION_DIR}"/Others/extensionControllerYokomochi.arc "${WORKDIR}"/files/Layout/extensionControllerYokomochi/extensionControllerYokomochi.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectBase.arc "${WORKDIR}"/files/Layout/fileSelectBase/fileSelectBase.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectBase_OLD.arc "${WORKDIR}"/files/Layout/fileSelectBase/fileSelectBase_OLD.arc
cp "${RIIVOLUTION_DIR}"/Others/fileSelectPlayer.arc "${WORKDIR}"/files/Layout/fileSelectPlayer/fileSelectPlayer.arc
cp "${RIIVOLUTION_DIR}"/Others/gameScene.arc "${WORKDIR}"/files/Layout/gameScene/gameScene.arc
cp "${RIIVOLUTION_DIR}"/Others/infoWindow.arc "${WORKDIR}"/files/Layout/infoWindow/infoWindow.arc
cp "${RIIVOLUTION_DIR}"/Others/miniGameCannon.arc "${WORKDIR}"/files/Layout/miniGameCannon/miniGameCannon.arc
cp "${RIIVOLUTION_DIR}"/Others/miniGameWire.arc "${WORKDIR}"/files/Layout/miniGameWire/miniGameWire.arc
cp "${RIIVOLUTION_DIR}"/Others/pauseMenu.arc "${WORKDIR}"/files/Layout/pauseMenu/pauseMenu.arc
cp "${RIIVOLUTION_DIR}"/Others/pointResultDateFile.arc "${WORKDIR}"/files/Layout/pointResultDateFile/pointResultDateFile.arc
cp "${RIIVOLUTION_DIR}"/Others/pointResultDateFileFree.arc "${WORKDIR}"/files/Layout/pointResultDateFileFree/pointResultDateFileFree.arc
cp "${RIIVOLUTION_DIR}"/Others/preGame.arc "${WORKDIR}"/files/Layout/preGame/preGame.arc
cp "${RIIVOLUTION_DIR}"/Others/select_cursor.arc "${WORKDIR}"/files/Layout/select_cursor/select_cursor.arc
cp "${RIIVOLUTION_DIR}"/Others/sequenceBG.arc "${WORKDIR}"/files/Layout/sequenceBG/sequenceBG.arc
cp "${RIIVOLUTION_DIR}"/Others/staffCredit.arc "${WORKDIR}"/files/Layout/staffCredit/staffCredit.arc
cp "${RIIVOLUTION_DIR}"/Others/stockItem.arc "${WORKDIR}"/files/Layout/stockItem/stockItem.arc
cp "${RIIVOLUTION_DIR}"/Others/stockItemShadow.arc "${WORKDIR}"/files/Layout/stockItemShadow/stockItemShadow.arc
cp "${RIIVOLUTION_DIR}"/Others/yesnoWindow.arc "${WORKDIR}"/files/Layout/yesnoWindow/yesnoWindow.arc
cp -r "${RIIVOLUTION_DIR}"/Maps/* "${WORKDIR}"/files/Maps/
cp "${RIIVOLUTION_DIR}"/Stages/* "${WORKDIR}"/files/Stage/
}
dolpatch () {
cp "${XML_FILE}" "${XML_FILE}".new
sed -e 's/80001800/803482C0/g' -i "${XML_FILE}".new
XML_FILE="${XML_FILE}".new
${WIT} dolpatch ${DOL} xml="${XML_FILE}" -s "${XML_SOURCE}" \
xml="${PATCHIMAGE_PATCH_DIR}/NewerSMBW-Loader.xml" -q
${WIT} dolpatch ${DOL} xml="${PATCHIMAGE_PATCH_DIR}/NSMBW_AP.xml" -q
}

View File

@ -2,7 +2,7 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://www.dropbox.com/s/rw3iwa8vhj7o337/LSYB.zip"
DOWNLOAD_LINK="https://www.dropbox.com/s/rw3iwa8vhj7o337/LSYB.zip?dl=0"
RIIVOLUTION_ZIP="LSYB.zip"
RIIVOLUTION_DIR="LSYB"
GAMENAME="Luigis Super Yoshi Bros."

View File

@ -2,7 +2,7 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="http://download1334.mediafire.com/11ypp8a15gag/wsob4c27urgkl62/MLGLuigiWii.zip"
DOWNLOAD_LINK="http://www.mediafire.com/download/wsob4c27urgkl62/MLGLuigiWii.zip"
RIIVOLUTION_ZIP="MLGLuigiWii.zip"
RIIVOLUTION_DIR="MLGLuigiWii/MLGLuigi"
GAMENAME="MLG Super Luigi Wii"

View File

@ -39,7 +39,7 @@ detect_game_version () {
place_files () {
NEW_DIRS=( "${WORKDIR}"/files/LevelSamples "${WORKDIR}"/files/NewerRes "${WORKDIR}"/files/Maps "${WORKDIR}"/files/Sound/new )
NEW_DIRS=( "${WORKDIR}"/files/LevelSamples "${WORKDIR}"/files/NewerRes "${WORKDIR}"/files/Maps )
for dir in "${NEW_DIRS[@]}"; do
mkdir -p "${dir}"
done

View File

@ -2,9 +2,9 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://www.dropbox.com/s/0hrmxz3gh7b3b1q/RSMBW%20Version%201.1.zip"
RIIVOLUTION_ZIP="RSMBW Version 1.1.zip"
RIIVOLUTION_DIR="rsmbw"
DOWNLOAD_LINK="https://www.dropbox.com/s/pdxfqfvd19lema3/RSMBW%20Version%201.0.zip?dl=0"
RIIVOLUTION_ZIP="RSMBW Version 1.0.zip"
RIIVOLUTION_DIR="RSMBW Version 1.0/rsmbw"
GAMENAME="Revised Super Mario Bros. Wii"
XML_SOURCE="${RIIVOLUTION_DIR}/"
XML_FILE="${RIIVOLUTION_DIR}/../riivolution/RSMBW.xml"

View File

@ -2,9 +2,9 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://www.dropbox.com/s/t2u8soleg8qeix8/The%20Legend%20Of%20Yoshi.zip"
DOWNLOAD_LINK="https://www.dropbox.com/s/tfypq5j3t85v6dv/The%20Legend%20Of%20Yoshi.zip"
RIIVOLUTION_ZIP="The Legend Of Yoshi.zip"
RIIVOLUTION_DIR="TLOY (Riivolution) [P] [J] [E] (08-31-2016) [no custom logo]/The Legend Of Yoshi/tloy"
RIIVOLUTION_DIR="TLOY (Riivolution) [P] [J] [E] (05-28-2016) [no custom logo]/The Legend Of Yoshi/tloy"
GAMENAME="The Legend of Yoshi"
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}/../riivolution/TLOY ("

View File

@ -2,7 +2,7 @@
WORKDIR=nsmb.d
DOL=${WORKDIR}/sys/main.dol
DOWNLOAD_LINK="https://fs10n4.sendspace.com/dl/939b01a934c50dcb9d5f739180108e37/57c153d6055d64ea/cky4rn/ChaSMBW_VrS_v0.2.zip"
DOWNLOAD_LINK="https://www.sendspace.com/file/cky4rn"
RIIVOLUTION_ZIP="ChaSMBW_VrS_v0.2.zip"
RIIVOLUTION_DIR="VirtualChallenging"
GAMENAME="Challenging Super Mario Bros. Wii: Virtual Special"

View File

@ -1,6 +1,6 @@
#!/bin/bash
DOWNLOAD_LINK="http://download842.mediafire.com/610594k0d1dg/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
DOWNLOAD_LINK="http://www.mediafire.com/download/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
RIIVOLUTION_ZIP="Neo X and Y Files.rar"
RIIVOLUTION_DIR="Neo X and Y Files/Pokemon NeoXY1.4/Installation hub/data/"
GAMENAME="Pokemon Neo X"

View File

@ -1,6 +1,6 @@
#!/bin/bash
DOWNLOAD_LINK="http://download842.mediafire.com/610594k0d1dg/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
DOWNLOAD_LINK="http://www.mediafire.com/download/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
RIIVOLUTION_ZIP="Neo X and Y Files.rar"
RIIVOLUTION_DIR="Neo X and Y Files/Pokemon NeoXY1.4/Installation hub/data/"
GAMENAME="Pokemon Neo Y"

View File

@ -1,6 +1,6 @@
#!/bin/bash
DOWNLOAD_LINK="http://download2009.mediafire.com/kv9pjged8ueg/8tacxp6oz5cw6c8/Pokemon+Red+Ruby.rar"
DOWNLOAD_LINK="http://www.mediafire.com/download/8tacxp6oz5cw6c8/Pokemon+Red+Ruby.rar"
RIIVOLUTION_ZIP="Pokemon Red Ruby.rar"
RIIVOLUTION_DIR="Installation Files"
GAMENAME="Pokemon Red Ruby"

View File

@ -1,8 +1,8 @@
#!/bin/bash
DOWNLOAD_LINK="https://drive.google.com/uc?id=0B-zmEVN0Mas6Qm5jYXZkVy1QZjA&export=download"
RIIVOLUTION_ZIP="RRSSv2.1.zip"
RIIVOLUTION_DIR="RRSSv2.1"
DOWNLOAD_LINK="https://drive.google.com/uc?id=0BzJZMhlTQ-CPaUtiTlp4YjlEY3M&export=download"
RIIVOLUTION_ZIP="RRSSFiles 18-11-2015.zip"
RIIVOLUTION_DIR="RRSSFiles 18-11-2015"
GAMENAME="Pokemon Rising Ruby"
GAME_TYPE=HANS
@ -16,7 +16,7 @@ echo -e \
"************************************************
${GAMENAME}
Source: https://projectpokemon.org/forums/showthread.php?49883-Pok%E9mon-Rising-Ruby-and-Sinking-Sapphire
Source: https://twitter.com/Drayano60/status/662793363255656448
Base ROM: Pokemon Omega Ruby
Supported Versions: US, EU, JAP
************************************************"
@ -31,6 +31,6 @@ check_hans_files () {
patch_romfs () {
cp -r "${RIIVOLUTION_DIR}/Drop-In Files/Rising Ruby/Drop-It-In (CRO FOR LUMA3DS ONLY)/romfs/a/" romfs/
cp -r "${RIIVOLUTION_DIR}"/a romfs/
}

View File

@ -1,15 +1,14 @@
#!/bin/bash
DOWNLOAD_LINK="https://drive.google.com/uc?id=0B-zmEVN0Mas6Qm5jYXZkVy1QZjA&export=download"
RIIVOLUTION_ZIP="RRSSv2.1.zip"
RIIVOLUTION_DIR="RRSSv2.1"
DOWNLOAD_LINK="https://drive.google.com/uc?id=0BzJZMhlTQ-CPaUtiTlp4YjlEY3M&export=download"
RIIVOLUTION_ZIP="RRSSFiles 18-11-2015.zip"
RIIVOLUTION_DIR="RRSSFiles 18-11-2015"
GAMENAME="Pokemon Sinking Sapphire"
GAME_TYPE=HANS
ROM_MASK="*000400000011[cC]500*cxi"
ROMFS="SinkingSapphire.romfs"
DATA="${PATCHIMAGE_DATA_DIR}/Sinking Sapphire/"
DATA="${PATCHIMAGE_DATA_DIR}/SinkingSapphire/"
show_notes () {
@ -17,7 +16,7 @@ echo -e \
"************************************************
${GAMENAME}
Source: https://projectpokemon.org/forums/showthread.php?49883-Pok%E9mon-Rising-Ruby-and-Sinking-Sapphire
Source: https://twitter.com/Drayano60/status/662793363255656448
Base ROM: Pokemon Alpha Sapphire
Supported Versions: US, EU, JAP
************************************************"
@ -32,6 +31,6 @@ check_hans_files () {
patch_romfs () {
cp -r "${RIIVOLUTION_DIR}/Drop-In Files/Sinking Sapphire/Drop-It-In (CRO FOR LUMA3DS ONLY)/romfs/a/" romfs/
cp -r "${RIIVOLUTION_DIR}"/a romfs/
}

View File

@ -1,18 +1,10 @@
#!/bin/bash
GAMENAME="Tokyo Mirage Sessions #FE Restoration"
GAMENAME="Tokyo Mirage Sessions #FE Uncensored"
GAME_TYPE=DELTA
PATCH_FILES=( 000_map 010_character 030_etc 031_message 050_movie 999_etc_om 999_lua )
DOWNLOAD_LINKS=( "patch_000_map.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZM0ViV2ZlQkFjSk0&export=download"
"patch_010_character.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZSzZzNVd4ejZYalE&export=download"
"patch_030_etc.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZNEZfN1hqOHVYZ0E&export=download"
"patch_031_message.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZTDlRdzlkUno3ZXM&export=download"
"patch_050_movie.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZNU5kNlh2d1VRQzQ&export=download"
"patch_999_etc_om.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZN2VxTERFY2JPUFU"
"patch_999_lua.xdelta+https://drive.google.com/uc?id=0BxykxdPQq3oZUERRR0w2Nnl2YUk&export=download" )
show_notes () {
echo -e \
@ -32,107 +24,54 @@ menu () {
status=8
if [[ ${PATCHIMAGE_RIIVOLUTION_DOWNLOAD} != TRUE ]]; then
if [[ ! ${XDELTA_PATH} ]]; then
if [[ -d ${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration ]]; then
XDELTA_PATH=${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration
else
echo -e "\nEnter path to the directory containing the delta patches:\n"
read -er XDELTA_PATH || exit 75
fi
else status=9
fi
if [[ ! -d ${XDELTA_PATH} ]]; then
echo "PATH \"${XDELTA_PATH}\" does not exist!"
exit 21
fi
else
echo -e "\nChecking whether to download required files\nmaximum ~1.9 Gigabyte. This may take a while."
[[ ! -d ${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration ]] && \
mkdir ${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration
XDELTA_PATH="${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration"
for delta in ${DOWNLOAD_LINKS[@]}; do
DL_NAME=${delta/+*}
DL_LINK=${delta/*+}
if [[ ${DL_NAME} == patch_999_etc_om.xdelta ]]; then
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}" ]]; then
wget -nv "${DL_LINK}" \
-O "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp || \
( rm "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp && \
echo -e "\nDownload failed!" && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"
fi
else
if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}" ]]; then
${GDOWN} "${DL_LINK}" \
"${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp || \
( rm "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp && \
echo -e "\nDownload failed!" && exit 57 )
mv "${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"__tmp \
"${PATCHIMAGE_RIIVOLUTION_DIR}/TMSFE_Restoration/${DL_NAME}"
fi
fi
done
if [[ ! ${XDELTA_PATH} ]]; then
echo -e "\nEnter path to the directory containing the delta patches:\n"
read -er XDELTA_PATH || exit 75
else status=9
fi
for file in ${PATCH_FILES[@]}; do
if [[ ! -f ${XDELTA_PATH}/patch_${file}.xdelta ]]; then
echo "Patch file patch_${file}.xdelta does not exist!"
exit 75
fi
done
if [[ ! ${CPK_PATH} ]]; then
echo -e "\nEnter path to the directory containing the game files (cpk):\n"
read -er CPK_PATH || exit 75
else status=9
fi
if [[ ! -d ${CPK_PATH} ]]; then
if [[ ! -d ${XDELTA_PATH} ]]; then
echo "PATH \"${XDELTA_PATH}\" does not exist!"
exit 21
elif [[ ! -f ${XDELTA_PATH}/patch_000_map.xdelta ]]; then
echo "PATH \"${XDELTA_PATH}\" does not contain the xdelta patches!"
exit 21
elif [[ ! -d ${CPK_PATH} ]]; then
echo "PATH \"${CPK_PATH}\" does not exist!"
exit 15
elif [[ ! -f ${CPK_PATH}/pack_000_map.cpk ]]; then
echo "PATH \"${CPK_PATH}\" does not contain the game files (cpk)!"
exit 15
fi
[[ -f ${CPK_PATH}/pack_000_map.cpk ]] && CPK_PATH=${CPK_PATH}
[[ -f ${CPK_PATH}/vol/content/Pack/pack_000_map.cpk ]] && CPK_PATH=${CPK_PATH}/vol/content/Pack/
for file in ${PATCH_FILES[@]}; do
if [[ ! -f ${CPK_PATH}/pack_${file}.cpk ]]; then
echo "Original file pack_${file}.cpk does not exist!"
exit 75
fi
done
echo ">>> status: ${status}"
}
patch () {
cd "${CURDIR}"
BUILD_DIR="${CURDIR}"/TMSxFE-Restoration-Build
if [[ -d ${BUILD_DIR} ]]; then
if [[ -d ${PWD}/TMSxFE-Uncensored ]]; then
echo -e "\nremoving old files"
rm -rf "${BUILD_DIR}"
rm -rf "${PWD}"/TMSxFE-Uncensored
fi
all=${#PATCH_FILES[@]}
echo -e "\n> copying cpk files"
mkdir "${BUILD_DIR}"
mkdir "${PWD}"/TMSxFE-Uncensored
cur=0
for file in "${PATCH_FILES[@]}"; do
cur=$((cur+1))
echo ">> [${cur}/${all}] pack_${file}.cpk"
cp "${CPK_PATH}"/pack_"${file}".cpk \
"${BUILD_DIR}"
"${PWD}"/TMSxFE-Uncensored
done
cur=0
@ -140,17 +79,17 @@ patch () {
for patch in "${PATCH_FILES[@]}"; do
cur=$((cur+1))
echo ">> [${cur}/${all}] pack_${patch}.cpk"
"${XD3}" -d -f -s "${BUILD_DIR}"/pack_"${patch}".cpk \
"${XD3}" -d -f -s "${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk \
"${XDELTA_PATH}"/patch_"${patch}".xdelta \
"${BUILD_DIR}"/pack_"${patch}".cpk_new || exit 51
"${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk_new || exit 51
mv "${BUILD_DIR}"/pack_"${patch}".cpk_new \
"${BUILD_DIR}"/pack_"${patch}".cpk
mv "${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk_new \
"${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk
done
echo -e "\n< Done patching
<< Find your modified cpk files in:
\n\t${BUILD_DIR}
\n\t${PWD}/TMSxFE-Uncensored
Copy your complete dump (content, code, meta folders) to your SD-Card in

View File

@ -54,7 +54,7 @@ while (-s $FILENAME < 100000) { # only if the file isn't the download yet
}
sub execute_command() {
$COMMAND="wget -nv --load-cookie $TEMP/cookie.txt --save-cookie $TEMP/cookie.txt \"$URL\"";
$COMMAND="wget --load-cookie $TEMP/cookie.txt --save-cookie $TEMP/cookie.txt \"$URL\"";
$COMMAND.=" -O \"$FILENAME\"" if $FILENAME ne '';
`$COMMAND`;
return 1;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.