Compare commits

...

74 Commits

Author SHA1 Message Date
Christopher Roy Bratusek
2441e6c37e Merge remote-tracking branch 'github/master' 2023-10-01 10:51:40 +02:00
Chris 'Nano' Bratusek
1b6293b7a7
Merge pull request #3 from alberic89/alpine
Add Newer Alpine Dream
2023-08-19 19:18:52 +02:00
Chris 'Nano' Bratusek
f50f4813d4
Merge pull request #4 from alberic89/downloader-help
Show two links if the download of riivolution patch failed
2023-08-19 19:18:41 +02:00
Chris 'Nano' Bratusek
3eb195d2f0
Merge pull request #2 from alberic89/master-1
NewerFallingLeaf : Create dir before try to copy in
2023-08-19 19:16:43 +02:00
alberic89
545ce0c22d
Show two links if the download of riivolution patch failed 2023-08-19 14:40:16 +02:00
alberic89
94706261d4
Add Newer Alpine Dream
Newer Alpine Dream is a short mod based on Newer.
I have also add a missing luigi dark moon entrie.
2023-08-19 12:53:01 +02:00
alberic89
8e55981f44
Do this cleaner 2023-08-17 18:54:49 +02:00
alberic89
9ea14210b3
Create dir before try to copy in 2023-08-17 15:43:55 +02:00
Christopher Roy Bratusek
75b0d947a3 update ChangeLog 2019-08-14 21:28:00 +02:00
Christopher Roy Bratusek
a77f06222e update README.GAMEIDS 2019-08-14 21:25:01 +02:00
Christopher Roy Bratusek
087e7a83be update MKWiimm database 2019-08-14 21:22:08 +02:00
Christopher Roy Bratusek
b6ac97e6ba update titles.db 2019-08-14 21:21:56 +02:00
Christopher Roy Bratusek
6a451756e6 support MKWiimm 2017-05; dos2unix 2017-10-21 19:49:34 +02:00
Christopher Roy Bratusek
d63f12f518 update ChangeLog 2017-10-21 19:42:42 +02:00
Christopher Roy Bratusek
b8c0a52575 add Newer Super Luigi Wii: Dark Moon to game list 2017-10-21 19:37:59 +02:00
Christopher Roy Bratusek
535bdd88aa Merge branch 'master' into 'master'
added Newer Super Luigi Wii: Dark Moon

See merge request Nanolx/patchimage!1
2017-10-21 17:33:55 +00:00
lordofpeace
091f235d76 update database 2017-10-21 14:23:32 +02:00
lordofpeace
7f3011f278 added Newer Super Luigi: Dark Moon 2017-10-21 14:17:59 +02:00
Christopher Roy Bratusek
1de7ef1ea7 update overrides, too 2017-01-10 17:38:01 +01:00
Christopher Roy Bratusek
c8edfbf026 bump version to 7.6.0 (in-dev) 2017-01-07 20:54:26 +01:00
Christopher Roy Bratusek
a163f4ebba update title database 2017-01-07 20:53:51 +01:00
Christopher Roy Bratusek
2ecf5600f0 update ChangeLog 2017-01-07 20:50:49 +01:00
Christopher Roy Bratusek
bc21e40923 update Pokemon Rising Ruby/Sinking Sapphire to 2.1 2017-01-07 20:48:59 +01:00
Christopher Roy Bratusek
e3bebfc006 update wit to 2.40a, update szs to 1.53a 2017-01-07 19:45:36 +01:00
Christopher Roy Bratusek
6dbed7a4fd support MKWiimm 2016-10 2017-01-07 19:22:39 +01:00
Christopher Roy Bratusek
5e8700986e debian/changelog 2016-09-27 18:11:13 +02:00
Christopher Roy Bratusek
ee78c060db fixup previous commit 2016-09-27 18:03:34 +02:00
Christopher Roy Bratusek
23ad9ccc41 ::game updates:
- Pokemon Rising Ruby: support version 2.0
- Pokemon Sinking Sapphire: support version 2.0
2016-09-27 17:58:12 +02:00
Christopher Roy Bratusek
91eaacf7bf ChangeLog 2016-09-09 20:14:54 +02:00
Christopher Roy Bratusek
284b0e2a74 replace two if -e with if -f 2016-09-09 20:07:46 +02:00
Christopher Roy Bratusek
ce424c9a51 bump version 2016-09-09 20:06:23 +02:00
Christopher Roy Bratusek
b7c33d51cb add support for Super Mario Bros. Frozen Editon (SFR?01) 2016-09-09 20:05:31 +02:00
Christopher Roy Bratusek
0f0e924e4e bump version 2016-09-03 11:33:24 +02:00
Christopher Roy Bratusek
e3d985a6a6 rewrite ChangeLog 2016-09-03 11:30:49 +02:00
Christopher Roy Bratusek
1e5499665e ChangeLog 2016-09-01 19:20:03 +02:00
Christopher Roy Bratusek
599ab40d45 - update The Legend of Yoshi to version 2016-08-31 2016-09-01 18:41:37 +02:00
Christopher Roy Bratusek
000dc4c29a minor link change 2016-09-01 18:41:20 +02:00
Christopher Roy Bratusek
01457363d4 wget -q for cover downloader 2016-08-31 18:59:29 +02:00
Christopher Roy Bratusek
b435615ec5 - update Revised Super Mario Bros. Wii to version 1.1 2016-08-31 18:58:06 +02:00
Christopher Roy Bratusek
eb18c1c807 wget -q for cover downloader 2016-08-31 18:57:56 +02:00
Christopher Roy Bratusek
9cad927973 use CURDIR for Tokyo Mirage Sessions FE so that it does not get deleted in batch mode 2016-08-29 22:06:56 +02:00
Christopher Roy Bratusek
3a10c2ea2c - update Cliff Super Mario Bros. Wii to version 1.1.1 2016-08-29 21:50:12 +02:00
Christopher Roy Bratusek
2e3da07726 fixup Tokyo Mirage Sessions FE patcher 2016-08-29 21:42:38 +02:00
Christopher Roy Bratusek
1a87ed90c7 minor internal changes and fixes to Tokyo Mirage Sessions FE patcher, fixup ChangeLog 2016-08-29 21:25:32 +02:00
Christopher Roy Bratusek
92a34b4fb5 bump version 2016-08-29 21:06:48 +02:00
Christopher Roy Bratusek
bd039d5e99 minor fix 2016-08-29 21:06:29 +02:00
Christopher Roy Bratusek
7cc29b4d0c - improved 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
    - if you want to re-download the files regardless, simply use --download
      this will trigger re-download (unlike for Riivolution archives, where
      --download will not re-download if the file[s] were found)
  - 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
ChangeLog /home/test/TMSFE
    you were previously required to set the cpk path to
ChangeLog /home/test/TMSFE/vol/content/Pack
    now using
ChangeLog /home/test/TMSFE
    will work, too, as the script will look for the sub directory
ChangeLog vol/content/Pack
    on it's own
2016-08-29 21:04:38 +02:00
Christopher Roy Bratusek
c1972d75e5 - use 'wget -nv' instead of 'wget -q' 2016-08-29 21:04:14 +02:00
Christopher Roy Bratusek
e249c66b66 fix typo 2016-08-29 20:38:54 +02:00
Christopher Roy Bratusek
9ffc16833a README 2016-08-29 16:43:27 +02:00
Christopher Roy Bratusek
98985ef95b update ask_input_image_nsmb 2016-08-28 21:03:53 +02:00
Christopher Roy Bratusek
d9268d3e5a bump version 2016-08-28 10:38:14 +02:00
Christopher Roy Bratusek
608fa16c76 string changes 2016-08-27 21:18:10 +02:00
Christopher Roy Bratusek
4af2bb098f - update Cliff Super Mario Bros. to version 1.1 2016-08-27 19:46:17 +02:00
Christopher Roy Bratusek
3df05a86af - fixed that character mods were not applicable to Cliff Super Mario Bros. Wii
- drop support for Awesomer Super Luigi Mini (broken and offline)
- minor string changes
2016-08-27 19:35:33 +02:00
Christopher Roy Bratusek
5d73de6308 ChangeLog 2016-08-27 15:05:37 +02:00
Christopher Roy Bratusek
bda5666039 ChangeLog 2016-08-27 15:01:04 +02:00
Christopher Roy Bratusek
fd6e202fbd bump version to 7.3.1, ChangeLog 2016-08-27 14:59:22 +02:00
Christopher Roy Bratusek
13316d3eda remove temporary files when download failes 2016-08-27 14:56:24 +02:00
Christopher Roy Bratusek
6a18fc7da2 fix issue with relative paths 2016-08-27 14:53:33 +02:00
Christopher Roy Bratusek
a2926cfc92 bump version 2016-08-27 11:04:14 +02:00
Christopher Roy Bratusek
a97a82dde8 proper mega.nz downloader function 2016-08-27 11:02:45 +02:00
Christopher Roy Bratusek
bc9387258e bump version and export MEGADL var 2016-08-27 11:01:15 +02:00
Christopher Roy Bratusek
e1e117d432 don't stop download upon mega.nz links 2016-08-27 11:00:59 +02:00
Christopher Roy Bratusek
88b2261bfc update Bravely Second Uncensored Links to proper format 2016-08-27 11:00:13 +02:00
Christopher Roy Bratusek
f298b72ea0 add megadl 2016-08-27 11:00:10 +02:00
Christopher Roy Bratusek
6b4d4a655f make downloader don't stop upon sendspace 2016-08-27 10:51:55 +02:00
Christopher Roy Bratusek
3550d72af2 - 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
2016-08-27 10:49:46 +02:00
Christopher Roy Bratusek
aecbf473f1 - 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
2016-08-27 10:46:53 +02:00
Christopher Roy Bratusek
57ac5f406c update Cliff Super Mario Bros. to version 1.0.5 2016-08-25 22:23:19 +02:00
Christopher Roy Bratusek
6741ea536a ChangeLog 2016-08-24 18:48:33 +02:00
Christopher Roy Bratusek
e2a569f9c0 bump version 2016-08-24 18:47:36 +02:00
Christopher Roy Bratusek
d124fbdeee modularize common.sh 2016-08-24 18:41:53 +02:00
Christopher Roy Bratusek
4e8870b478 debian 2016-08-23 19:58:03 +02:00
52 changed files with 10871 additions and 10335 deletions

View File

@ -1,3 +1,101 @@
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"
@echo "nothing to do, use 'make install'"
install:
mkdir -p $(DESTDIR)/usr/bin/
@ -28,3 +28,4 @@ uninstall:
fi
clean:
@echo "nothing to"

3
README
View File

@ -60,6 +60,9 @@ 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,8 +14,10 @@ b) SMN?01.wbfs
MRR?01 New Super Mario Bros. Wii Retro Remix
SCL?01 Cliff Super Mario Bros. Wii
SFL?01 NSMBW3: The Final Levels
SFR?01 Super Mario Bros. Frozen Editon
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
@ -24,7 +26,6 @@ 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
@ -39,7 +40,6 @@ 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,6 +81,15 @@ 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,9 +20,18 @@
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.v2.7z
27:Wiimms MKW-Fun 2015-03:download.wiimm.de/mkw-fun/mkw-fun-2015-03.v3.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.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
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

View File

@ -1,5 +1,8 @@
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
@ -9,7 +12,6 @@ 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
@ -23,6 +25,7 @@ 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:ASLM:nsmbw/awesomersuperluigi.sh
NSMB13:Frozen:nsmbw/frozen.sh
NSMB14:Sykland:nsmbw/skyland.sh
NSMB15:RVLution:nsmbw/rvlution.sh
NSMB16:Midi:nsmbw/midissupermariowii.sh
@ -27,6 +27,8 @@ 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,3 +1,27 @@
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 (git)
3.0 (quilt)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -40,242 +40,23 @@ export PATCHIMAGE_COVER_DIR="${basedir}"
export PATCHIMAGE_ROM_DIR="${basedir}"
export PATCHIMAGE_3DS_DIR="${basedir}"
source "${PATCHIMAGE_SCRIPT_DIR}/common.sh"
source "${PATCHIMAGE_SCRIPT_DIR}/messages.sh"
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
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..12} NSMB{14..29})
NEW_GAME=(${NEW_GAME[@]} NSMB{1..31})
;;
PKMN_ALL )
@ -322,6 +103,7 @@ for game in ${GAME[@]}; do
continue
fi
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
cd "${BUILD_DIR}"
@ -361,5 +143,4 @@ 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="mega:///#!N0QEHLRB!g_Wy5dngt4xgVXtk1BhQaqSSRj0phjP6xMp776OSEo8"
DOWNLOAD_LINK="https://mega.nz/#!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="mega:///#!9sx1QKRQ!A6qzCkvY9HmPGu4VIy1TiikTRgbE-vUho99LOYWxA84"
DOWNLOAD_LINK="https://mega.nz/#!9sx1QKRQ!A6qzCkvY9HmPGu4VIy1TiikTRgbE-vUho99LOYWxA84"
RIIVOLUTION_ZIP="Bravely_Second_Uncensored_USA_MINI_Asia81.rar"
RIIVOLUTION_DIR="Bravely_Second_Uncensored_USA_MINI_Asia81/ExtractedRomFS"
;;

View File

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

182
scripts/common/common.sh Normal file
View File

@ -0,0 +1,182 @@
#!/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

@ -0,0 +1,133 @@
#!/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

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

@ -0,0 +1,25 @@
#!/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

@ -0,0 +1,63 @@
#!/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

@ -0,0 +1,27 @@
#!/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

@ -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 ASLM Awesomer Super Luigi Mini
NSMB13 Frozen Super Mario Bros. Frozen Editon
NSMB14 Sykland Super Mario Skyland
NSMB15 RVLution RVLution Wii (NewSMB Mod)
NSMB16 Midi Midi's Super Mario Wii (Just A Little Adventure)
@ -35,6 +35,8 @@ 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
@ -121,7 +123,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 ASLM AwesomerSLM.zip
NSMB13 Frozen SMBFrozenEdition.rar
NSMB14 Sykland Skyland.zip
NSMB15 RVLution RVLution Wii.zip
NSMB16 Midi MSMBWii.zip
@ -134,10 +136,12 @@ 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.0.zip
NSMB26 RevisedSuperMarioBros RSMBW Version 1.1.zip
NSMB27 MLGSuperLuigi MLGLuigiWii.zip
NSMB28 Cliff Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip
NSMB28 Cliff Cliff_Super_Mario_Brothers_Wiiv1.1.1.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
"

258
scripts/common/optparse.sh Normal file
View File

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

237
scripts/common/patcher.sh Normal file
View File

@ -0,0 +1,237 @@
#!/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

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

View File

@ -0,0 +1,125 @@
#!/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

@ -1,85 +0,0 @@
#!/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://www.mediafire.com/download/3j52g4j2jjdxg43/Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip"
RIIVOLUTION_ZIP="Cliff_Super_Mario_Brothers_Wiiv1.0.4.zip"
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"
RIIVOLUTION_DIR="Cliff"
GAMENAME="Cliff Super Mario Bros. Wii"
XML_SOURCE="${RIIVOLUTION_DIR}"
XML_FILE="${RIIVOLUTION_DIR}"/../Cliff
XML_FILE="${RIIVOLUTION_DIR}"/../XMLs/Cliff
GAME_TYPE=RIIVOLUTION
BANNER_LOCATION=${WORKDIR}/files/opening.bnr
WBFS_MASK="SMN[PEJ]01"

79
scripts/nsmbw/frozen.sh Normal file
View File

@ -0,0 +1,79 @@
#!/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="https://www.mediafire.com/?vf7p9pu8bqxohuo"
DOWNLOAD_LINK="http://download858.mediafire.com/d8ceavb0izvg/vf7p9pu8bqxohuo/GSGBW+v1.0.2.zip"
RIIVOLUTION_ZIP="GSGBW v1.0.2.zip"
RIIVOLUTION_DIR="GSGBW/Ghostly"
GAMENAME="Ghostly Super Ghost Boos. Wii"

View File

@ -0,0 +1,137 @@
#!/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?dl=0"
DOWNLOAD_LINK="https://www.dropbox.com/s/rw3iwa8vhj7o337/LSYB.zip"
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://www.mediafire.com/download/wsob4c27urgkl62/MLGLuigiWii.zip"
DOWNLOAD_LINK="http://download1334.mediafire.com/11ypp8a15gag/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 )
NEW_DIRS=( "${WORKDIR}"/files/LevelSamples "${WORKDIR}"/files/NewerRes "${WORKDIR}"/files/Maps "${WORKDIR}"/files/Sound/new )
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/pdxfqfvd19lema3/RSMBW%20Version%201.0.zip?dl=0"
RIIVOLUTION_ZIP="RSMBW Version 1.0.zip"
RIIVOLUTION_DIR="RSMBW Version 1.0/rsmbw"
DOWNLOAD_LINK="https://www.dropbox.com/s/0hrmxz3gh7b3b1q/RSMBW%20Version%201.1.zip"
RIIVOLUTION_ZIP="RSMBW Version 1.1.zip"
RIIVOLUTION_DIR="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/tfypq5j3t85v6dv/The%20Legend%20Of%20Yoshi.zip"
DOWNLOAD_LINK="https://www.dropbox.com/s/t2u8soleg8qeix8/The%20Legend%20Of%20Yoshi.zip"
RIIVOLUTION_ZIP="The Legend Of Yoshi.zip"
RIIVOLUTION_DIR="TLOY (Riivolution) [P] [J] [E] (05-28-2016) [no custom logo]/The Legend Of Yoshi/tloy"
RIIVOLUTION_DIR="TLOY (Riivolution) [P] [J] [E] (08-31-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://www.sendspace.com/file/cky4rn"
DOWNLOAD_LINK="https://fs10n4.sendspace.com/dl/939b01a934c50dcb9d5f739180108e37/57c153d6055d64ea/cky4rn/ChaSMBW_VrS_v0.2.zip"
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://www.mediafire.com/download/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
DOWNLOAD_LINK="http://download842.mediafire.com/610594k0d1dg/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://www.mediafire.com/download/nd9z16t5nb92743/Neo+X+and+Y+Files.rar"
DOWNLOAD_LINK="http://download842.mediafire.com/610594k0d1dg/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://www.mediafire.com/download/8tacxp6oz5cw6c8/Pokemon+Red+Ruby.rar"
DOWNLOAD_LINK="http://download2009.mediafire.com/kv9pjged8ueg/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=0BzJZMhlTQ-CPaUtiTlp4YjlEY3M&export=download"
RIIVOLUTION_ZIP="RRSSFiles 18-11-2015.zip"
RIIVOLUTION_DIR="RRSSFiles 18-11-2015"
DOWNLOAD_LINK="https://drive.google.com/uc?id=0B-zmEVN0Mas6Qm5jYXZkVy1QZjA&export=download"
RIIVOLUTION_ZIP="RRSSv2.1.zip"
RIIVOLUTION_DIR="RRSSv2.1"
GAMENAME="Pokemon Rising Ruby"
GAME_TYPE=HANS
@ -16,7 +16,7 @@ echo -e \
"************************************************
${GAMENAME}
Source: https://twitter.com/Drayano60/status/662793363255656448
Source: https://projectpokemon.org/forums/showthread.php?49883-Pok%E9mon-Rising-Ruby-and-Sinking-Sapphire
Base ROM: Pokemon Omega Ruby
Supported Versions: US, EU, JAP
************************************************"
@ -31,6 +31,6 @@ check_hans_files () {
patch_romfs () {
cp -r "${RIIVOLUTION_DIR}"/a romfs/
cp -r "${RIIVOLUTION_DIR}/Drop-In Files/Rising Ruby/Drop-It-In (CRO FOR LUMA3DS ONLY)/romfs/a/" romfs/
}

View File

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

View File

@ -1,10 +1,18 @@
#!/bin/bash
GAMENAME="Tokyo Mirage Sessions #FE Uncensored"
GAMENAME="Tokyo Mirage Sessions #FE Restoration"
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 \
@ -24,54 +32,107 @@ menu () {
status=8
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
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
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 ${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
if [[ ! -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 () {
if [[ -d ${PWD}/TMSxFE-Uncensored ]]; then
cd "${CURDIR}"
BUILD_DIR="${CURDIR}"/TMSxFE-Restoration-Build
if [[ -d ${BUILD_DIR} ]]; then
echo -e "\nremoving old files"
rm -rf "${PWD}"/TMSxFE-Uncensored
rm -rf "${BUILD_DIR}"
fi
all=${#PATCH_FILES[@]}
echo -e "\n> copying cpk files"
mkdir "${PWD}"/TMSxFE-Uncensored
mkdir "${BUILD_DIR}"
cur=0
for file in "${PATCH_FILES[@]}"; do
cur=$((cur+1))
echo ">> [${cur}/${all}] pack_${file}.cpk"
cp "${CPK_PATH}"/pack_"${file}".cpk \
"${PWD}"/TMSxFE-Uncensored
"${BUILD_DIR}"
done
cur=0
@ -79,17 +140,17 @@ patch () {
for patch in "${PATCH_FILES[@]}"; do
cur=$((cur+1))
echo ">> [${cur}/${all}] pack_${patch}.cpk"
"${XD3}" -d -f -s "${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk \
"${XD3}" -d -f -s "${BUILD_DIR}"/pack_"${patch}".cpk \
"${XDELTA_PATH}"/patch_"${patch}".xdelta \
"${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk_new || exit 51
"${BUILD_DIR}"/pack_"${patch}".cpk_new || exit 51
mv "${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk_new \
"${PWD}"/TMSxFE-Uncensored/pack_"${patch}".cpk
mv "${BUILD_DIR}"/pack_"${patch}".cpk_new \
"${BUILD_DIR}"/pack_"${patch}".cpk
done
echo -e "\n< Done patching
<< Find your modified cpk files in:
\n\t${PWD}/TMSxFE-Uncensored
\n\t${BUILD_DIR}
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 --load-cookie $TEMP/cookie.txt --save-cookie $TEMP/cookie.txt \"$URL\"";
$COMMAND="wget -nv --load-cookie $TEMP/cookie.txt --save-cookie $TEMP/cookie.txt \"$URL\"";
$COMMAND.=" -O \"$FILENAME\"" if $FILENAME ne '';
`$COMMAND`;
return 1;

BIN
tools/megadl.32 Executable file

Binary file not shown.

BIN
tools/megadl.64 Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.