name: Rust on: push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: jobs: rustfmt_check: name: Code Formatting runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Rust Toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt target: x86_64-unknown-linux-gnu - name: Check Formatting run: cargo fmt --all -- --check checker: name: Check, Clippy, Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Rust Toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt, clippy target: x86_64-unknown-linux-gnu - uses: Swatinem/rust-cache@v2 name: Rust Cache with: prefix-key: "checker-2" - name: Clippy run: cargo clippy --all-targets --all-features --target=x86_64-unknown-linux-gnu -- -D warnings - name: TUI Test uses: ClementTsang/cargo-action@v0.0.3 with: command: test directory: training_mod_tui plugin: name: Plugin NRO runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@nightly with: target: x86_64-unknown-linux-gnu - uses: Swatinem/rust-cache@v2 name: Rust Cache with: prefix-key: "plugin" cache-all-crates: true - name: Install Skyline run: | cargo install cargo-skyline cargo-skyline skyline update-std - name: Build release NRO id: build_release run: cargo-skyline skyline build --release - name: Upload plugin artifact uses: actions/upload-artifact@v3 with: name: plugin path: target/aarch64-skyline-switch/release/libtraining_modpack.nro plugin_outside_training_mode: name: Plugin NRO (Outside Training Mode) if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@nightly with: target: x86_64-unknown-linux-gnu - uses: Swatinem/rust-cache@v2 name: Rust Cache with: prefix-key: "plugin" cache-all-crates: true - name: Install Skyline run: | cargo install cargo-skyline cargo-skyline skyline update-std - name: Build outside_training_mode NRO run: cargo-skyline skyline build --release --features outside_training_mode - name: Upload plugin (outside training mode) artifact uses: actions/upload-artifact@v3 with: name: plugin_outside_training_mode path: target/aarch64-skyline-switch/release/libtraining_modpack.nro upload: name: Upload Beta Release runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' needs: - plugin steps: - name: Download all artifacts uses: actions/download-artifact@v3 - name: Prepare zip id: prepare_zip env: SMASH_PLUGIN_DIR: atmosphere/contents/01006A800016E000/romfs/skyline/plugins run: | mkdir -p ${{env.SMASH_PLUGIN_DIR}} cp plugin/libtraining_modpack.nro ${{env.SMASH_PLUGIN_DIR}}/libtraining_modpack.nro wget https://github.com/ultimate-research/params-hook-plugin/releases/download/v13.0.1/libparam_hook.nro wget https://github.com/ultimate-research/nro-hook-plugin/releases/download/v0.4.0/libnro_hook.nro wget https://github.com/jugeeya/nn-hid-hook/releases/download/beta/libnn_hid_hook.nro cp libparam_hook.nro ${{env.SMASH_PLUGIN_DIR}}/libparam_hook.nro cp libnro_hook.nro ${{env.SMASH_PLUGIN_DIR}}/libnro_hook.nro cp libnn_hid_hook.nro ${{env.SMASH_PLUGIN_DIR}}/libnn_hid_hook.nro zip -r training_modpack_beta.zip atmosphere - name: Delete Release uses: dev-drprasad/delete-tag-and-release@v0.2.1 with: tag_name: beta delete_release: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Update Release uses: meeDamian/github-release@2.0 with: token: ${{ secrets.GITHUB_TOKEN }} prerelease: true allow_override: true gzip: false tag: beta commitish: main name: beta body: > Beta built off of the latest code in the repository. # Changelog You can find the changelog here: https://github.com/jugeeya/UltimateTrainingModpack#beta-changelog ## Installation *For fuller instructions, please join the [Discord](https://discord.gg/xUZWJ5BWe7) and visit the #setup-and-download channel.* The Training Modpack requires the following prerequisite packages: * Skyline: https://github.com/skyline-dev/skyline/releases * This is a generic code mod loader for Nintendo Switch games that the Training Modpack uses. To install the Training Modpack, download the .zip file from the [latest release page](https://github.com/jugeeya/UltimateTrainingModpack/releases/latest). Extract the files from the .zip file using the file explorer on Windows or Mac, or a program such as 7-zip (windows) or unzip (Linux). ### Installation on Nintendo Switch * Atmosphere: https://github.com/Atmosphere-NX/Atmosphere/releases * This is the custom firmware that is required for any hacked Switch. One great guide for installation here can be found at https://switch.homebrew.guide/. 1) Transfer the extracted contents of the TrainingModpack .zip (`atmosphere` folder) onto the root of your SD card, merging the `/atmosphere` folder with the one on your SD card. 2) Similarly, transfer the extracted contents of the Skyline .zip (`exefs` folder) into `sd:/atmosphere/contents/01006A800016E000`. 3) No files need to be manually deleted when upgrading from a previous version. 4) The The SD card should have the below files at these locations. ``` SD Card Root └── atmosphere/ └── contents/ └── 01006A800016E000/ ├── exefs/ │ ├── subsdk9 │ └── main.npdm └── romfs/ └── skyline/ └── plugins/ ├── libnn_hid_hook.nro ├── libnro_hook.nro ├── libparam_hook.nro └── libtraining_modpack.nro ``` ### Installation on Ryujinx Emulator on PC Exact same process as above, but the filepaths are in Ryujinx's mod paths. 1) Extract the contents of the TrainingModpack .zip (`atmosphere` folder). Within that folder, you'll have a `contents` folder. Paste the `contents` folder inside atmosphere into `%AppData%/Ryujinx/mods/`. 2) Similarly, extracted contents of the Skyline .zip (`exefs` folder) into into `%AppData%/Ryujinx/mods/contents/01006a800016e000`. 3) No files need to be manually deleted when upgrading from a previous version. 4) The Ryujinx mods folder should have the files below at these locations. ``` %AppData% └── Ryujinx/ └── mods/ └── contents/ └── 01006A800016E000/ ├── exefs/ │ ├── subsdk9 │ └── main.npdm └── romfs/ └── skyline/ └── plugins/ ├── libnn_hid_hook.nro ├── libnro_hook.nro ├── libparam_hook.nro └── libtraining_modpack.nro ``` files: > training_modpack_beta.zip - name: Upload zip as artifact uses: actions/upload-artifact@v3 with: name: full_build path: training_modpack_beta.zip