├── config ├── fppconfig.tar.gz └── legacy │ ├── 2.2-fppconfig.tar.gz │ ├── 2.15-fppconfig.tar.gz │ └── 2.25-fppconfig.tar.gz ├── .gitignore ├── faster-project-plus.desktop ├── create_appimage.sh └── setup_appimage /config/fppconfig.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jlambert360/FPM-AppImage/HEAD/config/fppconfig.tar.gz -------------------------------------------------------------------------------- /config/legacy/2.2-fppconfig.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jlambert360/FPM-AppImage/HEAD/config/legacy/2.2-fppconfig.tar.gz -------------------------------------------------------------------------------- /config/legacy/2.15-fppconfig.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jlambert360/FPM-AppImage/HEAD/config/legacy/2.15-fppconfig.tar.gz -------------------------------------------------------------------------------- /config/legacy/2.25-fppconfig.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jlambert360/FPM-AppImage/HEAD/config/legacy/2.25-fppconfig.tar.gz -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Ishiiruka/* 2 | FasterProjectPlus*/* 3 | bin/* 4 | other_distros/* 5 | Tools/linuxdeploy-update-plugin 6 | Tools/linuxdeploy 7 | Tools/appimageupdatetool 8 | AppDir/* 9 | Launcher/* 10 | Launcher.tar.gz 11 | sd.raw 12 | -------------------------------------------------------------------------------- /faster-project-plus.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | GenericName=Wii/GameCube Emulator 4 | Comment=Ishiiruka fork for SSBPM 5 | Categories=Emulator;Game; 6 | Icon=ishiiruka 7 | Keywords=ProjectM;Project M;ProjectPlus;Project Plus;Project+ 8 | Name=Faster Project Plus 9 | Exec=ishiiruka 10 | -------------------------------------------------------------------------------- /create_appimage.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | cd Ishiiruka 6 | 7 | ZSYNC_STRING="gh-releases-zsync|jlambert360|FPM-AppImage|latest|Faster_Project_Plus-x86-64.AppImage.zsync" 8 | 9 | LINUXDEPLOY_PATH="https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous" 10 | LINUXDEPLOY_FILE="linuxdeploy-x86_64.AppImage" 11 | LINUXDEPLOY_URL="${LINUXDEPLOY_PATH}/${LINUXDEPLOY_FILE}" 12 | 13 | UPDATEPLUG_PATH="https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous" 14 | UPDATEPLUG_FILE="linuxdeploy-plugin-appimage-x86_64.AppImage" 15 | UPDATEPLUG_URL="${UPDATEPLUG_PATH}/${UPDATEPLUG_FILE}" 16 | 17 | UPDATETOOL_PATH="https://github.com/AppImage/AppImageUpdate/releases/download/continuous" 18 | UPDATETOOL_FILE="appimageupdatetool-x86_64.AppImage" 19 | UPDATETOOL_URL="${UPDATETOOL_PATH}/${UPDATETOOL_FILE}" 20 | 21 | APPDIR_BIN="./build/AppDir/usr/bin" 22 | 23 | # Grab various appimage binaries from GitHub if we don't have them 24 | if [ ! -e ./Tools/${LINUXDEPLOY_FILE} ]; then 25 | wget ${LINUXDEPLOY_URL} -O ./Tools/${LINUXDEPLOY_FILE} 26 | chmod +x ./Tools/${LINUXDEPLOY_FILE} 27 | fi 28 | if [ ! -e ./Tools/${UPDATEPLUG_FILE} ]; then 29 | wget ${UPDATEPLUG_URL} -O ./Tools/${UPDATEPLUG_FILE} 30 | chmod +x ./Tools/${UPDATEPLUG_FILE} 31 | fi 32 | if [ ! -e ./Tools/${UPDATETOOL_FILE} ]; then 33 | wget ${UPDATETOOL_URL} -O ./Tools/${UPDATETOOL_FILE} 34 | chmod +x ./Tools/${UPDATETOOL_FILE} 35 | fi 36 | 37 | pwd; 38 | ./Tools/${LINUXDEPLOY_FILE} --appdir=./build/AppDir --executable ./build/Binaries/ishiiruka -d ./build/faster-project-plus.desktop -i ./Data/ishiiruka.svg 39 | 40 | # Add the Sys dir to the AppDir for packaging 41 | cp -r ./Data/Sys/ ${APPDIR_BIN} 42 | 43 | # Package up the update tool within the AppImage 44 | cp ./Tools/${UPDATETOOL_FILE} ${APPDIR_BIN} 45 | 46 | # Bake an AppImage with the update metadata 47 | export UPDATE_INFORMATION="${ZSYNC_STRING}"; 48 | export VERSION="2.29" 49 | ./Tools/${UPDATEPLUG_FILE} --appdir=./build/AppDir/; 50 | 51 | mv Faster_Project_Plus-$VERSION-x86_64.AppImage Faster_Project_Plus-x86-64.AppImage 52 | mv Faster_Project_Plus-$VERSION-x86_64.AppImage.zsync Faster_Project_Plus-x86-64.AppImage.zsync 53 | 54 | -------------------------------------------------------------------------------- /setup_appimage: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # --- Stops the script if errors are encountered. --- 3 | set -e 4 | 5 | # --- Attempts to determine the number of cores in the CPU. --- 6 | # Source: https://gist.github.com/jj1bdx/5746298 7 | # Linux and similar... 8 | CPUS=$(getconf _NPROCESSORS_ONLN 2>/dev/null) 9 | # FreeBSD and similar... 10 | [ -z "$CPUS" ] && CPUS=$(getconf NPROCESSORS_ONLN) 11 | # Solaris and similar... 12 | [ -z "$CPUS" ] && CPUS=$(ksh93 -c 'getconf NPROCESSORS_ONLN') 13 | # Give up... 14 | [ -z "$CPUS" ] && CPUS=1 15 | # --- 16 | 17 | # --- define custom config links here! 18 | FPPVERSION="" # name of FPP version, used in folder name 19 | COMMITHASH="" # full commit hash 20 | GITCLONELINK="" # Version of Ishiiruka 21 | CONFIGLINK="" # Packed configs, can be found under config/ or config/legacy/ 22 | # --- 23 | 24 | # --- delete all "FasterProjectPlus" folders filled with incomplete installations 25 | echo "" 26 | echo "Attempting to delete incomplete installations of FPP..." 27 | for f in FasterProjectPlus*; do 28 | if [ -d "${f}" ] && [ ! -d "$f/bin" ]; then 29 | echo "Found incomplete installation at $f/, deleting." 30 | rm -rf "$f" # is incomplete if bin/ doesn't exist 31 | fi 32 | done 33 | # --- 34 | 35 | rm -rf FasterProjectPlus*/ 36 | echo "Deleted all FPP folders!" 37 | # --- 38 | 39 | UBPATCH=1 40 | ARPATCH=0 41 | # --- 42 | 43 | FPPVERSION="2.29" 44 | CONFIGNAME="fppconfig" 45 | COMMITHASH="81e0a8f8a53f429b341d440ddb2d2b7802b66d52" 46 | CONFIGLINK="https://github.com/jlambert360/FPM-Installer/raw/master/config/$CONFIGNAME.tar.gz" 47 | GITCLONELINK="https://github.com/jlambert360/Ishiiruka" 48 | SdCardLink="https://github.com/jlambert360/FPM-AppImage/releases/download/v$FPPVERSION/ProjectPlusSd$FPPVERSION.tar.gz" 49 | echo "Installing version $FPPVERSION!" 50 | 51 | # Set FOLDERNAME based on FPP version 52 | FOLDERNAME="FasterProjectPlus-${FPPVERSION}" 53 | 54 | # --- check for previously installed version, ask if overwrite is wanted 55 | if [ -d "$FOLDERNAME" ]; then 56 | echo " 57 | FPP Folder with same version found! Would you like to overwrite? (y/N)" 58 | read -r RESP 59 | if [ "$RESP" = "y" ] || [ "$RESP" = "Y" ]; then 60 | echo "Are you sure? This action is not reversible! (y/N)" 61 | read -r RESP 62 | if [ "$RESP" = "y" ] || [ "$RESP" = "Y" ] ; then 63 | rm -r "$FOLDERNAME" 64 | echo "Deleted!" 65 | else 66 | echo "Quitting!" 67 | exit 68 | fi 69 | else 70 | echo "Quitting!" 71 | exit 72 | fi 73 | fi 74 | # --- 75 | 76 | 77 | # --- prompt to install adapter support 78 | # sudo rm -f /etc/udev/rules.d/51-gcadapter.rules # remove even if doesn't exist 79 | # echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666"' | sudo tee /etc/udev/rules.d/51-gcadapter.rules > /dev/null # pipe to write-protected file, remove STDOUT 80 | # sudo udevadm control --reload-rules 81 | # echo "Rules added!" 82 | SHORTCUTBOOL=1 83 | echo "Desktop shortcut queued!" 84 | 85 | echo "Using $CPUS thread(s)!" 86 | # # --- 87 | 88 | # --- enter folder, download and extract needed files 89 | # echo "" 90 | # if [ -d "$FOLDERNAME" ] 91 | # then 92 | # cd "$FOLDERNAME" 93 | # else 94 | # mkdir "$FOLDERNAME" && cd "$FOLDERNAME" 95 | # fi 96 | 97 | if [ -d "./Binaries" ] 98 | then 99 | echo "Removing binaries already found" 100 | rm ./Binaries -r 101 | fi 102 | echo "Extracting config files..." 103 | tar -xzf "./config/$CONFIGNAME.tar.gz" --checkpoint-action='exec=printf "%d/72980480 records extracted.\r" $TAR_CHECKPOINT' --totals 104 | 105 | if [ -d "./Ishiiruka" ] 106 | then 107 | echo "Ishiiruka dir found source files already accquired" 108 | rm ./Ishiiruka -r 109 | fi 110 | echo "" 111 | echo "Downloading source tarball..." 112 | curl -LO# "$GITCLONELINK/archive/$COMMITHASH.tar.gz" 113 | echo "Extracting source..." 114 | tar -xzf "$COMMITHASH.tar.gz" --checkpoint-action='exec=printf "%d/12130 records extracted.\r" $TAR_CHECKPOINT' --totals 115 | rm "$COMMITHASH.tar.gz" 116 | echo "" #spacing 117 | mv "Ishiiruka-$COMMITHASH" Ishiiruka 118 | cd Ishiiruka 119 | 120 | 121 | 122 | # --- Patch tarball to display correct hash to other netplay clients 123 | echo "Patching tarball..." 124 | sed -i "s|\${GIT_EXECUTABLE} rev-parse HEAD|echo ${COMMITHASH}|g" CMakeLists.txt # --set scm_rev_str everywhere to actual commit hash when downloaded 125 | sed -i "s|\${GIT_EXECUTABLE} describe --always --long --dirty|echo FM v$FPPVERSION|g" CMakeLists.txt # ensures compatibility w/ netplay 126 | sed -i "s|\${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD|echo HEAD|g" CMakeLists.txt 127 | # --- 128 | 129 | # --- Patch DiscExtractor.h 130 | echo "Patching DiscExtractor.h" 131 | sed -i "s|#include |#include \n#include |g" Source/Core/DiscIO/DiscExtractor.h 132 | # --- 133 | 134 | # --- Set compiler to ggc-8 for Arch 135 | if [ "$ARPATCH" -eq 1 ]; then 136 | echo "Setting compiler to gcc-8 for Arch based distros" 137 | # Set C compiler and C++ compiler to GCC8 138 | export CC="gcc-8" 139 | export CXX="g++-8" 140 | else 141 | echo "Skipping patch for Arch based distros" 142 | fi 143 | # --- 144 | 145 | # --- Patch wxWidgets3 for Ubuntu 20.04 146 | if [ "$UBPATCH" -eq 1 ]; then 147 | echo "Patching wxWidgets3 for Ubuntu 20.04 based distros" 148 | sed -i "s| OR NOT X11_Xinerama_FOUND||g" Externals/wxWidgets3/CMakeLists.txt 149 | sed -i "s|needs Xinerama and|needs|g" Externals/wxWidgets3/CMakeLists.txt 150 | sed -i "s|\t\t\${X11_Xinerama_LIB}||g" Externals/wxWidgets3/CMakeLists.txt 151 | else 152 | echo "Skipping patch for Ubuntu 20.04 based distros" 153 | fi 154 | # --- 155 | 156 | 157 | # --- move wx files into source 158 | cp Externals/wxWidgets3/include/wx Source/Core/ -r 159 | cp Externals/wxWidgets3/wx/* Source/Core/wx/ 160 | # --- 161 | 162 | # --- move necessary config files into the build folder 163 | echo "Adding FPP config files..." 164 | mkdir build 165 | cd build 166 | mv ../../Binaries . 167 | cp ../Data/ishiiruka.png Binaries/ 168 | # --- 169 | 170 | # --- cmake and compile 171 | echo "cmaking..." 172 | if [ ! -z "${IN_NIX_SHELL++}" ]; then 173 | cmake .. -DLINUX_LOCAL_DEV=true -DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib}/lib/glib-2.0/include -DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2}/lib/gtk-2.0/include -DGTK2_INCLUDE_DIRS=${gtk2}/lib/gtk-2.0 -DENABLE_LTO=True -DCMAKE_INSTALL_PREFIX=/usr 174 | else 175 | cmake .. -DLINUX_LOCAL_DEV=true -DCMAKE_INSTALL_PREFIX=/usr -DVERSION_TAG="$FPPVERSION" 176 | fi 177 | echo "Compiling..." 178 | make -j $CPUS -s BUILD_TAG=$FPPVERSION 179 | touch ./Binaries/portable.txt 180 | 181 | cp ../../faster-project-plus.desktop ../Data/ishiiruka.desktop; 182 | cp ../../faster-project-plus.desktop .; 183 | 184 | if [ -d "./AppDir/" ] 185 | then 186 | # Delete the AppDir folder to prevent build issues 187 | rm -rf ./AppDir/ 188 | fi 189 | # Build the AppDir directory for this image 190 | mkdir -p AppDir 191 | 192 | make install DESTDIR=AppDir; 193 | # --- 194 | 195 | # # --- Download the sd card tarball, extract it, move it to proper folder, and delete tarball 196 | # # credit to https://superuser.com/a/1517096 superuser.com user Zibri 197 | # echo "Downloading sd card" 198 | # url=$(curl -Lqs0 "$SdCardLink" | grep "href.*download.*media.*"| grep "$SdCardFileName" | cut -d '"' -f 2) 199 | 200 | # echo "Attempting with Axel"; 201 | # if [ -x "$(command -v axel)" ]; then 202 | # axel "$url" -a -n $CPUS; 203 | # elif [ -x "$(command -v aria2c)" ]; then 204 | # echo "Axel command failed, dependency may be missing, attempting with aria2c"; 205 | # aria2c -x$CPUS "$url" 206 | # else 207 | # echo "Axel and Aria2c command failed, dependency may be missing, reverting to slowest way possible"; 208 | # wget "$url" 209 | # fi 210 | 211 | # echo "Extracting sd card" 212 | # tar -xzf "$SdCardFileName" --checkpoint-action='exec=printf "%d/2147491840 records extracted.\r" $TAR_CHECKPOINT' --totals 213 | # mv "sd.raw" "Binaries/User/Wii/sd.raw" 214 | # rm "$SdCardFileName" 215 | # # --- 216 | 217 | # --- Delete created files and old symlinks, isolate Binaries to their own folder 218 | # echo "Cleaning up..." 219 | # cd ../.. 220 | # mv Ishiiruka/build/Binaries/ bin/ 221 | # rm -rf Ishiiruka # -f required to remove git history 222 | # rm -f ../launch-faster-project-plus # -f required if shortcuts do not exist 223 | # rm -f ../launch-fpp 224 | # --- 225 | 226 | # # --- Get Main path and Set Up path variables for config/Dolphin.ini 227 | # echo "Setting config paths" 228 | # MainDir=$(pwd)"/bin" 229 | # LauncherDir=$MainDir"/Launcher" 230 | # GamesDir=$MainDir"/Games" 231 | # SDPath=$MainDir"/User/Wii/sd.raw" 232 | # IsoPath=$GamesDir"/RSBE01.iso" 233 | # ConfigPath=$MainDir"/User/Config/Dolphin.ini" 234 | # # --- 235 | 236 | # # --- Set LauncherDir, GamesDir, SdCardPath, and Default ISO path in config/Dolphin.ini 237 | # sed -i -e "s|LauncherDir|$LauncherDir|" $ConfigPath 238 | # sed -i -e "s|GamesPath|$GamesDir|" $ConfigPath 239 | # sed -i -e "s|SDPath|$SDPath|" $ConfigPath 240 | # sed -i -e "s|ISODirPath|$IsoPath|" $ConfigPath 241 | # # --- 242 | 243 | # # --- create symlink to newly compiled dolphin-emu. if queued, create shortcut. 244 | # echo "Creating shortcuts..." 245 | # ln -s "$FOLDERNAME/bin/ishiiruka" ../launch-fpp 246 | # if [ "$SHORTCUTBOOL" -eq 1 ] && [ -d ~/.local/share/applications ]; then 247 | # rm -f ~/.local/share/applications/faster-project-plus-$FPPVERSION.desktop # remove old shortcut 248 | # rm -f ~/Desktop/faster-project-plus-$FPPVERSION.desktop 249 | # touch ~/.local/share/applications/faster-project-plus-$FPPVERSION.desktop # fixes very rare tee bug? 250 | # EXEPATH="$(pwd)/bin" 251 | # FPPNAME="Faster Project Plus $FPPVERSION" 252 | # echo "[Desktop Entry] 253 | # Type=Application 254 | # GenericName=Wii/GameCube Emulator 255 | # Comment=Ishiiruka fork for SSBPM 256 | # Categories=Emulator;Game; 257 | # Icon=$EXEPATH/ishiiruka.png 258 | # Keywords=ProjectM;Project M;ProjectPlus;Project Plus;Project+ 259 | # Version=$FPPVERSION 260 | # Name=Faster Project Plus 261 | # Exec=$EXEPATH/ishiiruka" | tee ~/.local/share/applications/faster-project-plus-$FPPVERSION.desktop > /dev/null 262 | # cp ~/.local/share/applications/faster-project-plus-$FPPVERSION.desktop ~/Desktop 263 | # chmod +x ~/Desktop/faster-project-plus-$FPPVERSION.desktop 264 | # else 265 | # echo ".local folder not found, skipping desktop shortcut." 266 | # fi 267 | # --- 268 | 269 | #echo "" 270 | #echo "***************************************************************************************************" 271 | #echo "Done! Run ./launch-fpp to run the latest installed version!" 272 | #echo "Alternatively, go to Application > Games or your desktop and select the desired version." 273 | #echo "Make sure to unplug and replug your adapter before opening Dolphin if adapter rules were installed!" 274 | #echo "***************************************************************************************************" 275 | --------------------------------------------------------------------------------