#!/bin/bash GAME_TYPE="WII_GENERIC" GAME_NAME="New Super Mario Bros. Wii" ITEMS_BASE="http://riivolution.nanolx.org/nsmbw_characters" show_notes () { echo -e \ "************************************************ ${GAME_NAME} Custom New Super Mario Bros. Wii Source: Various Base Image: New Super Mario Bros. Wii (SMN?01) Supported Versions: EUR, JAP, USA ************************************************" } check_input_image_special () { check_input_image_nsmb ask_input_image_nsmb ${IMAGE%/*} echo -e "type SMN???.wbfs:\n" read ID if [[ ! -f ${IMAGE%/*}/${ID} ]]; then echo "wrong id from user-input given." exit 75 fi } pi_action () { check_input_image_special if [[ -f ${HOME}/.patchimage.choice ]]; then echo "Your choices from last time can be re-used." echo "y (yes) or n (no)" read choice if [[ ${choice} == y ]]; then source ${HOME}/.patchimage.choice fi fi if [[ ${choosenplayers[@]} == "" ]]; then echo -e "Choose a Player to add to the game\n" gawk -F \: '{print $1 "\t\t" $2 "\t\t" $3}' < ${PATCHIMAGE_SCRIPT_DIR}/nsmbw_characters.db echo -e "\ntype ???.arc (only one per slot (second column) possible, space separated)" read PLAYERS for player in ${PLAYERS[@]}; do if [[ ! -f ${PATCHIMAGE_RIIVOLUTION_DIR}/nsmbw_player_${player} ]]; then wget -O ${PATCHIMAGE_RIIVOLUTION_DIR}/nsmbw_player_${player} \ ${ITEMS_BASE}/${player} &>/dev/null \ || (echo "download of ${player} failed." \ && rm ${PATCHIMAGE_RIIVOLUTION_DIR}/${player} \ && exit 57) fi slot=$(gawk -F \: "/^${player}/"'{print $2}' ${PATCHIMAGE_SCRIPT_DIR}/nsmbw_characters.db) choosenplayers=( ${choosenplayers[@]} ${player}:${slot} ) done echo ${choosenplayers[@]} echo "choosenplayers=( ${choosenplayers[@]} )" > ${HOME}/.patchimage.choice fi rm -rf workdir echo -e "\n*** 3) extracting image" ${WIT} extract ${IMAGE%/*}/${ID} --psel=data -d workdir -q || exit 51 for backup in Mario.arc Luigi.arc Kinopio.arc koopa.arc; do if [[ ! -f "${PATCHIMAGE_RIIVOLUTION_DIR}/${backup}" ]]; then echo "*** 4) first run, backing up original: ${backup}" cp workdir/files/Object/${backup} "${PATCHIMAGE_RIIVOLUTION_DIR}" else echo "*** 4) restoring original: ${backup}" cp "${PATCHIMAGE_RIIVOLUTION_DIR}"/${backup} workdir/files/Object/ fi done echo "*** 5) replacing characters" for player in ${choosenplayers[@]}; do cp "${PATCHIMAGE_RIIVOLUTION_DIR}"/nsmbw_player_${player/:*} \ workdir/files/Object/${player/*:} done echo "*** 6) rebuilding game" echo " (storing game in ${PATCHIMAGE_GAME_DIR}/${ID})" ${WIT} cp -o -q -B workdir ${PATCHIMAGE_GAME_DIR}/${ID} || exit 51 rm -rf workdir }