riibalanced-patcher/patch_iso.sh

322 lines
17 KiB
Bash
Raw Normal View History

2022-06-01 00:16:09 -06:00
#!/bin/bash
# This patcher is NOT OFFICIAL AND DOES NOT COME WITH ANY WARRANTY.
echo
echo ====================================
echo Riibalanced ISO Patcher
echo ====================================
echo
# check for riibalanced files ---------------------------------------------------
if [[ ! -d "./V5/" ]]; then
echo "ERROR: The Riibalanced patch files do not exist. Please download the zip file from the Riibalanced Discord, and extract the contents so that the folder 'V5' is in the same directory as 'patch_iso.sh'"
echo
echo "Like this:"
echo "/your/current/directory"
echo "├── patch_iso.sh
└── V5
   ├── Mario Kart Riibalanced V5.cover.png
   ├── Mario Kart Riibalanced V5.json
   ├── Mario Kart Riibalanced V5.png
   ├── readme.txt
   ├── Riibalanced
   ├── Riibalanced Extras
   └── riivolution
"
exit 3;
fi
2022-06-04 16:45:51 -06:00
# check if correct programs are installed ---------------------------------------
2022-06-01 00:16:09 -06:00
2022-06-04 16:26:37 -06:00
# curl ------
type curl
2022-06-01 00:16:09 -06:00
ERROR="$?"
if [[ ERROR -ne 0 ]]; then
echo
2022-06-04 16:26:37 -06:00
echo "You must install 'curl' in order for this script to work correctly."
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "Try running 'xcode-select --install'."
else
echo "Please consult your system's package manager."
2022-06-04 16:27:25 -06:00
fi
2022-06-01 00:16:09 -06:00
exit 0
fi
# wit -------
type wit
ERROR="$?"
echo
if [[ ERROR -ne 0 ]]; then
echo "In order for the patcher to work, Wiimm's ISO Tools (https://wit.wiimm.de/) must be installed. By answering yes, you allow this script to download and install the software. Don't worry! This is completely safe. This program is developed by the same person who created Wiimmfi. The patcher cannot continue if wit is not installed."
printf "Would you like to install wit? [y/n] "
while read -r key; do
case $key in
n) echo "ERROR: Without wit, the patcher cannot continue."; exit 1 ;;
y) break ;;
esac
printf "Would you like to install wit? [y/n] "
done
arch=$(uname -m)
2022-06-04 17:06:01 -06:00
if [[ "$OSTYPE" == "linux"* ]]; then
2022-06-01 00:16:09 -06:00
if [[ $arch == x86_64* ]]; then
2022-06-04 16:26:37 -06:00
curl https://wit.wiimm.de/download/wit-v3.04a-r8427-x86_64.tar.gz > wit.tar.gz
2022-06-01 00:16:09 -06:00
elif [[ $arch == i*86 ]]; then
2022-06-04 16:26:37 -06:00
curl https://wit.wiimm.de/download/wit-v3.04a-r8427-i386.tar.gz > wit.tar.gz
2022-06-01 00:16:09 -06:00
else
echo "ERROR: Your system's architecture ($arch) does not support Wiimm's ISO Tools. Please refer to wit's website for more information on how to install the tools. https://wit.wiimm.de/"
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
2022-06-04 16:26:37 -06:00
curl https://wit.wiimm.de/download/wit-v3.04a-r8427-mac.tar.gz > wit.tar.gz
2022-06-01 00:16:09 -06:00
elif [[ "$OSTYPE" == "cygwin" ]]; then
2022-06-05 01:31:46 -06:00
if [[ $arch == x86_64* ]]; then
2022-06-05 01:53:51 -06:00
curl https://wit.wiimm.de/download/wit-v3.04a-r8427-cygwin64.zip > wit.zip
2022-06-05 01:31:46 -06:00
elif [[ $arch == i*86 ]]; then
2022-06-05 01:53:51 -06:00
curl https://wit.wiimm.de/download/wit-v3.04a-r8427-cygwin32.zip > wit.zip
2022-06-05 01:31:46 -06:00
else
echo "ERROR: Your system's architecture ($arch) does not support Wiimm's ISO Tools. Please refer to wit's website for more information on how to install the tools. https://wit.wiimm.de/"
fi
export CYGWIN='yes'
2022-06-01 00:16:09 -06:00
else
echo "Riibalanced Patcher: Your operating system ($OSTYPE) does not support Wiimm's ISO Tools. Please refer to wit's website for more information on how to install the tools. https://wit.wiimm.de/"
exit 2;
fi
2022-06-05 01:31:46 -06:00
if [[ $CYGWIN ]]; then
2022-06-05 01:53:51 -06:00
powershell -command "Expand-Archive -Force .\wit.zip ."
cd wit-v*/
2022-06-05 01:31:46 -06:00
if [[ $(id -u) == 197108 ]]; then
./install.sh
else
echo "ERROR: Please run Cygwin as Administrator to install wit."
exit 9
fi
else
2022-06-05 01:53:51 -06:00
tar -xvf wit.tar.gz
cd wit-v*/
2022-06-05 01:31:46 -06:00
if [[ $(id -u) == 0 ]]; then
./install.sh
else
echo "You will now be prompted to enter your password for sudo in order for wit to install."
sudo ./install.sh
fi
fi
cd ..
rm -rf wit-v*/
2022-06-01 00:16:09 -06:00
# check if wit is installed now
type wit
ERROR="$?"
echo
if [[ ERROR -ne 0 ]]; then
2022-06-05 01:31:46 -06:00
echo "ERROR: wit still does not seem to be installed. Try running 'sudo ./patch_iso.sh' or use another privledge escalator and make sure that '/usr/local/bin' is on your PATH by running 'echo \$PATH'."
2022-06-01 00:16:09 -06:00
exit 4
fi
fi
2022-06-04 16:45:51 -06:00
# check for image ---------------------------------------------------------------
2022-06-01 00:16:09 -06:00
if [[ ! $1 ]]; then
echo "ERROR: Please start this script with the path to the Mario Kart Wii ISO image to start the patch."
echo "example: ./patch_iso.sh image/RMCE01.wbfs"
exit 7
fi
# check if image exists ---------------------------------------------------------
if [[ ! -f "$1" ]]; then
echo "ERROR: The file specified does not exist."
exit 8
2022-06-01 00:16:09 -06:00
fi
2022-06-04 16:45:51 -06:00
# check for previous image extraction -------------------------------------------
2022-06-01 00:16:09 -06:00
if [[ -d "./RMCE01/" ]]; then
echo "The output directory for the image extraction exists (./RMCE01) and will be DELETED to get a fresh extraction."
echo "Press [ENTER] to DELETE this directory and patch the image. Otherwise, press ^C now."
read
rm -rf ./RMCE01
fi
2022-06-04 16:45:51 -06:00
# start extract -----------------------------------------------------------------
2022-06-01 00:16:09 -06:00
wit extract $1 RMCE01
ERROR="$?"
if [[ ERROR -ne 0 ]]; then
echo "ERROR: wit has returned non-zero exit code $ERROR. Please check that your disc image is authentic and valid."
2022-06-01 00:16:09 -06:00
exit $ERROR
fi
2022-06-04 16:45:51 -06:00
# start patch -------------------------------------------------------------------
2022-06-01 00:16:09 -06:00
2022-06-04 16:45:51 -06:00
echo "Extraction seems to be complete. Patching..."
2022-06-01 00:16:09 -06:00
#set -x
cp V5/Riibalanced/Core/StaticRU.rel RMCE01/DATA/files/rel/StaticR.rel
cp V5/Riibalanced/Core/MainU.dol RMCE01/DATA/sys/main.dol
cp V5/Riibalanced/Tracks/* RMCE01/DATA/files/Race/Course/
cp V5/Riibalanced/Textures/* RMCE01/DATA/files/Race/Kart/
cp V5/Riibalanced/Menus/* RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Award.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Event.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Font.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Globe.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Present.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Race.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/Title.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/MenuMulti.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/MenuOther.szs RMCE01/DATA/files/Scene/UI/
#cp V5/Riibalanced/Menus/MenuSingle.szs RMCE01/DATA/files/Scene/UI/
#music folder skipped to copy manually
cp V5/Riibalanced/Ghosts/ghost1_* RMCE01/DATA/files/Race/TimeAttack/ghost1/
cp V5/Riibalanced/Ghosts/ghost2_* RMCE01/DATA/files/Race/TimeAttack/ghost2/
cp V5/Riibalanced/Music/RKart/revo_kart.brsar RMCE01/DATA/files/sound/revo_kart.brsar
cp V5/Riibalanced/Core/Common.szs RMCE01/DATA/files/Race/Common.szs
#skipping trailer thp since its identical
#there are no remaining thps in the menus folder
#using menusingle inside the menu folder for now since it doesnt exist in the languages folder
#cp V5/Riibalanced/Menus/MenuSingle.szs RMCE01/DATA/files/Scene/UI/
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_E.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_I.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_F.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_G.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_S.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_J.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_K.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_U.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_M.szs
cp V5/Riibalanced/Languages/Title_E.szs RMCE01/DATA/files/Scene/UI/Title_Q.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_E.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_I.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_F.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_G.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_S.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_U.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_M.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_J.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_K.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Race_Q.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_E.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_I.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_F.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_G.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_S.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_U.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_M.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_J.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_K.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/Globe_Q.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_E.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_I.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_F.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_G.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_S.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_U.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_M.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_J.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_K.szs
cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuMulti_Q.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_E.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_I.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_F.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_G.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_S.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_U.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_M.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_J.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_K.szs
#cp V5/Riibalanced/Languages/Race_E.szs RMCE01/DATA/files/Scene/UI/MenuSingle_Q.szs
#Copy all the music here
cp V5/Riibalanced/Music/n_block_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/n_block_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/n_circuit32_f.brstm RMCE01/DATA/files/sound/strm/n_Circuit32_f.brstm
cp V5/Riibalanced/Music/n_circuit32_n.brstm RMCE01/DATA/files/sound/strm/n_Circuit32_n.brstm
cp V5/Riibalanced/Music/n_daisy32_f.brstm RMCE01/DATA/files/sound/strm/n_Daisy32_f.brstm
cp V5/Riibalanced/Music/n_daisy32_n.brstm RMCE01/DATA/files/sound/strm/n_Daisy32_n.brstm
cp V5/Riibalanced/Music/n_farm_f.brstm RMCE01/DATA/files/sound/strm/n_Farm_F.brstm
cp V5/Riibalanced/Music/n_farm_n.brstm RMCE01/DATA/files/sound/strm/n_Farm_n.brstm
cp V5/Riibalanced/Music/n_kinoko_f.brstm RMCE01/DATA/files/sound/strm/n_Kinoko_F.brstm
cp V5/Riibalanced/Music/n_kinoko_n.brstm RMCE01/DATA/files/sound/strm/n_Kinoko_n.brstm
cp V5/Riibalanced/Music/n_maple_f.brstm RMCE01/DATA/files/sound/strm/n_maple_F.brstm
cp V5/Riibalanced/Music/n_maple_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/n_rainbow32_f.brstm RMCE01/DATA/files/sound/strm/n_Rainbow32_f.brstm
cp V5/Riibalanced/Music/n_rainbow32_n.brstm RMCE01/DATA/files/sound/strm/n_Rainbow32_n.brstm
cp V5/Riibalanced/Music/n_shopping32_f.brstm RMCE01/DATA/files/sound/strm/n_Shopping32_f.brstm
cp V5/Riibalanced/Music/n_shopping32_n.brstm RMCE01/DATA/files/sound/strm/n_Shopping32_n.brstm
cp V5/Riibalanced/Music/n_skate_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/n_skate_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/n_snowboard32_f.brstm RMCE01/DATA/files/sound/strm/n_Snowboard32_F.brstm
cp V5/Riibalanced/Music/n_snowboard32_n.brstm RMCE01/DATA/files/sound/strm/n_Snowboard32_n.brstm
cp V5/Riibalanced/Music/r_64_battle_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_64_battle_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_64_jungle32_f.brstm RMCE01/DATA/files/sound/strm/r_64_Jungle32_f.brstm
cp V5/Riibalanced/Music/r_64_kuppa32_f.brstm RMCE01/DATA/files/sound/strm/r_64_Kuppa32_f.brstm
cp V5/Riibalanced/Music/r_64_kuppa32_n.brstm RMCE01/DATA/files/sound/strm/r_64_Kuppa32_n.brstm
cp V5/Riibalanced/Music/r_64_sherbet32_f.brstm RMCE01/DATA/files/sound/strm/r_64_Sherbet32_f.brstm
cp V5/Riibalanced/Music/r_64_sherbet32_n.brstm RMCE01/DATA/files/sound/strm/r_64_Sherbet32_n.brstm
cp V5/Riibalanced/Music/r_agb_battle_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_agb_battle_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_agb_kuppa32_f.brstm RMCE01/DATA/files/sound/strm/r_AGB_Kuppa32_f.brstm
cp V5/Riibalanced/Music/r_agb_kuppa32_n.brstm RMCE01/DATA/files/sound/strm/r_AGB_Kuppa32_n.brstm
cp V5/Riibalanced/Music/r_DS_battle_F.brstm RMCE01/DATA/files/sound/strm/r_ds_battle_F.brstm
cp V5/Riibalanced/Music/r_DS_battle_n.brstm RMCE01/DATA/files/sound/strm/r_ds_battle_n.brstm
cp V5/Riibalanced/Music/r_ds_desert32_f.brstm RMCE01/DATA/files/sound/strm/r_DS_Desert32_f.brstm
cp V5/Riibalanced/Music/r_ds_desert32_n.brstm RMCE01/DATA/files/sound/strm/r_DS_Desert32_n.brstm
cp V5/Riibalanced/Music/r_ds_garden32_f.brstm RMCE01/DATA/files/sound/strm/r_DS_Garden32_f.brstm
cp V5/Riibalanced/Music/r_ds_garden32_n.brstm RMCE01/DATA/files/sound/strm/r_DS_Garden32_n.brstm
cp V5/Riibalanced/Music/r_ds_jungle32_f.brstm RMCE01/DATA/files/sound/strm/r_DS_Jungle32_f.brstm
cp V5/Riibalanced/Music/r_ds_jungle32_n.brstm RMCE01/DATA/files/sound/strm/r_DS_Jungle32_n.brstm
cp V5/Riibalanced/Music/r_ds_town32_f.brstm RMCE01/DATA/files/sound/strm/r_DS_Town32_f.brstm
cp V5/Riibalanced/Music/r_ds_town32_n.brstm RMCE01/DATA/files/sound/strm/r_DS_Town32_n.brstm
cp V5/Riibalanced/Music/r_GC_Battle32_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_GC_Battle32_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_gc_beach32_f.brstm RMCE01/DATA/files/sound/strm/r_GC_Beach32_f.brstm
cp V5/Riibalanced/Music/r_gc_beach32_n.brstm RMCE01/DATA/files/sound/strm/r_GC_Beach32_n.brstm
cp V5/Riibalanced/Music/r_gc_mountain32_f.brstm RMCE01/DATA/files/sound/strm/r_GC_Mountain32_f.brstm
cp V5/Riibalanced/Music/r_gc_mountain32_n.brstm RMCE01/DATA/files/sound/strm/r_GC_Mountain32_n.brstm
cp V5/Riibalanced/Music/r_gc_stadium32_f.brstm RMCE01/DATA/files/sound/strm/r_GC_Stadium32_f.brstm
cp V5/Riibalanced/Music/r_gc_stadium32_n.brstm RMCE01/DATA/files/sound/strm/r_GC_Stadium32_n.brstm
cp V5/Riibalanced/Music/r_sfc_battle_F.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_sfc_battle_n.brstm RMCE01/DATA/files/sound/strm/
cp V5/Riibalanced/Music/r_sfc_circuit32_f.brstm RMCE01/DATA/files/sound/strm/r_SFC_Circuit32_f.brstm
cp V5/Riibalanced/Music/r_sfc_circuit32_n.brstm RMCE01/DATA/files/sound/strm/r_SFC_Circuit32_n.brstm
cp V5/Riibalanced/Music/r_sfc_obake32_f.brstm RMCE01/DATA/files/sound/strm/r_SFC_Obake32_f.brstm
cp V5/Riibalanced/Music/r_sfc_obake32_n.brstm RMCE01/DATA/files/sound/strm/r_SFC_Obake32_n.brstm
cp V5/Riibalanced/Music/STRM_N_FACTORY_N.brstm RMCE01/DATA/files/sound/strm/
#set +x
echo
echo "Patch complete. wit will now compile the resulting disc image."
2022-06-04 16:45:51 -06:00
# overwrite check ---------------------------------------------------------------
2022-06-01 00:16:09 -06:00
if [[ -f "./riibalanced.wbfs" ]]; then
echo "The file 'riibalanced.wbfs' exists in this directory."
printf "Would you like to overwrite this file? Answering 'n' will move the file to 'riibalanced.wbfs.old' before continuing. [y/n] "
while read -r key; do
case $key in
n) mv riibalanced.wbfs riibalanced.wbfs.old ; echo "Moved 'riibalanced.wbfs' to 'riibalanced.wbfs.old'"; break ;;
y) rm riibalanced.wbfs ; break ;;
esac
printf "\n"
printf "Would you like to overwrite this file? Answering 'n' will move the file to 'riibalanced.wbfs.old' before continuing. [y/n] "
done
fi
2022-06-04 16:45:51 -06:00
# build -------------------------------------------------------------------------
2022-06-01 00:16:09 -06:00
wit mix RMCE01/ -B --dest riibalanced.wbfs
wit edit riibalanced.wbfs --name MarioKartRiibalanced
rm -rf RMCE01/
echo "The patch is now complete. The resulting file is 'riibalanced.wbfs'. Enjoy!"