diff --git a/wiki-rtd/docs/wiki_development/general/add-system.md b/wiki-rtd/docs/wiki_development/general/add-system.md index 962a574..72f235f 100644 --- a/wiki-rtd/docs/wiki_development/general/add-system.md +++ b/wiki-rtd/docs/wiki_development/general/add-system.md @@ -6,7 +6,7 @@ This is a WIP document to show how the Ruffle emulator was added RetroDeck. From Article assumes that the defaults path for RetroDECK are -That you have looked at [the build local](build-locally.md) document as this continues from that introduction. +That you have looked at [the build local](build-locally.md){:target="_blank"} document as this continues from that introduction. ## Preparation @@ -24,44 +24,47 @@ How well do you know the emulator you are looking to add to RetroDECK. ### Clone RetroDeck -- Fork and clone the main [RetroDeck project.](https://github.com/XargonWan/RetroDECK/fork) +- Fork and clone the main [RetroDeck project.](https://github.com/XargonWan/RetroDECK/fork){:target="_blank"} - Adding an emulator would be classed as a **new feature** so create a branch based of the label feat, ie: `feat/new_emulator_name` -- An example for **ruffle** can be seen [here](https://github.com/monkeyx-net/RetroDECK_UK/tree/feat/ruffle) -- Initial testing can be done via the [debug mode](/wiki_development/general/debug-mode/#retrodeck-in-debug-mode) +- An example for **ruffle** can be seen [here](https://github.com/monkeyx-net/RetroDECK_UK/tree/feat/ruffle){:target="_blank"} +- Initial testing can be done via the [debug mode](/wiki_development/general/debug-mode/#retrodeck-in-debug-mode){:target="_blank"} - You will be able to manually run via emulator and test functionality - To get the emulator added to the manifest an example of ruffle is shown below as simple example manifest ### Editing the manifest file ```bash linenums="1" - # Ruffle - START + +# Ruffle - START - name: ruffle buildsystem: simple build-commands: - - mkdir -p "${FLATPAK_DEST}/share/ruffle" - - mv -f ruffle "${FLATPAK_DEST}/share/ruffle/" - - chmod +x "${FLATPAK_DEST}/share/ruffle/ruffle" + - cp -p ruffle "${FLATPAK_DEST}/bin/" + - chmod +x "${FLATPAK_DEST}/bin/ruffle" sources: - type: archive + strip-components: 0 url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-07-02/ruffle-nightly-2024_07_02-linux-x86_64.tar.gz sha256: a410ce8956723a0043d1744ef9b519debc978faa2b5868953acc548e44586d15 - # Ruffle - END +# Ruffle - END + ``` - Please note lines 1 and 14 as remarks/labels having these help with logging and fund the emulator within the file. - Line 3 is a label - Lines 4 indicates a simple build type, the simple build type is just executing the given `build-commands`, ie downloading and copying files rather than compiling and building the project. The preference is to compile and build emulators to support the Flatpak process in producing increased compatibly and customisation. Ruffle is a rust project and under constant development. It is hoped to make this a compiled project in the future. - A simple project is also a good starting point to Flatpak builds. - - Lines 5 to 8 shows the build process kinked to the downloaded ruffle file. + - Lines 5 to 7 shows the build process kinked to the downloaded ruffle file. - Lines 10-12 are defining the sources: - - type: `archive`, this means that the archive is download and extracted without any explicit manifest action, `file` type source instead would just download the file without extracting it. + - type: `archive`, this means that the archive is download and extracted without any explicit manifest action, `file` type source instead would just download the file without extracting it. + - Please note the strip-component: 0 that was required as ruffle has no folder structure as part of the archive . See the [flatpak-builder-command-reference.html](https://docs.flatpak.org/en/latest/flatpak-builder-command-reference.html){:target="_blank"} for more. - url: obviously the url to download - sha256: the sha256sum of the file, this is mandatory > **NOTE:** In some rare cases we might don't know the sha (or even the url) in advance, for example when an emulator is having only one release on GitHub that is being kept updated without a release history. -[This guide](wiki-rtd/docs/wiki_development/general/automate-emulator-with-placeholders.md) is explaining how to use the placeholders instead of urls or sha in case the this data cannot be foreseen. +[This guide](automate-emulator-with-placeholders.md){:target="_blank"} is explaining how to use the placeholders instead of urls or sha in case the this data cannot be foreseen. Fort his purpose we have implemented an automation to get that data from the repository itself to being used only as a final resource as we prefer to control the version of each module for proper troubleshooting and version control. ### Build the RetroDECK Flatpak @@ -72,7 +75,7 @@ Move you new yml code to just after key dependencies in the manifest. So that yo Not even ES-DE should be needed to test the additional emulator. In fact it will not show up in ES-DE. See [here for more.](#add-emulatorsystem-to-es-de) -Build using [self hosted runner](build-locally/#build-locally-installed-github-runner) is the recommended method. Can also build via a [bash script](build-locally/#build-locally-via-bash-script) +Build using [self hosted runner](build-locally/#build-locally-installed-github-runner){:target="_blank"} is the recommended method. Can also build via a [bash script](build-locally/#build-locally-via-bash-script){:target="_blank"} If you run via self hosted it easier to track the build and any issues/errors are logged. Other than human error with the code the most frequent issue is with sha256 issues due to issue with download or a version change. So there sha256 no longer matches. @@ -131,7 +134,7 @@ There are two files in that folder and the relevant ruffle sections are shown be ``` -In the rules file I added an entry for the ruffle-wrapper.sh and added the remark to make it easier to compare for differences when merges are made from ES-De source project. A wrapper script was required as ruffle has most options set from cli switches. The wrapper script is documented [below.](emu-configs) +In the rules file I added an entry for the ruffle-wrapper.sh and added the remark to make it easier to compare for differences when merges are made from ES-De source project. A wrapper script was required as ruffle has most options set from cli switches. `es_find_rules.xml` ```xml @@ -150,10 +153,16 @@ In the rules file I added an entry for the ruffle-wrapper.sh and added the