Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Updated Solarus Engine



  • Hello,
    I've modified the solarus.sh script to install the updated 1.5.3 version of the Solarus engine. I've also added the updated versions of the games that came with the original script, and the Book of Mudora game that couldn't be played with the 1.4.5 version of the engine.

    #!/usr/bin/env bash
    
    # This file is part of The RetroPie Project
    #
    # The RetroPie Project is the legal property of its developers, whose names are
    # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
    #
    # See the LICENSE.md file at the top-level directory of this distribution and
    # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
    #
    
    rp_module_id="solarus"
    rp_module_desc="solarus - An Open Source Zelda LttP Engine"
    rp_module_licence="GPL3 https://raw.githubusercontent.com/solarus-games/solarus/dev/license.txt"
    rp_module_section="opt"
    rp_module_flags="noinstclean !aarch64"
    
    function depends_solarus() {
        getDepends cmake libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libluajit-5.1-dev libphysfs-dev libopenal-dev libmodplug-dev libvorbis-dev zip unzip qttools5-dev-tools qtbase5-dev
    }
    
    function sources_solarus() {
        downloadAndExtract "http://www.solarus-games.org/downloads/solarus/solarus-1.5.3-src.tar.gz" "$md_build" --strip-components 1
        downloadAndExtract "http://www.zelda-solarus.com/downloads/zsdx/zsdx-1.11.0.tar.gz" "$md_build"
        downloadAndExtract "http://www.zelda-solarus.com/downloads/zsxd/zsxd-1.11.0.tar.gz" "$md_build"
        downloadAndExtract "http://www.zelda-solarus.com/downloads/zelda-roth-se/zelda-roth-se-1.1.0.tar.gz" "$md_build"
    }
    
    function build_solarus() {
        mkdir build
        cd build
        cmake .. -DCMAKE_INSTALL_PREFIX="$md_inst"
        make
        cd ../zsdx-1.11.0
        cmake . -DCMAKE_INSTALL_PREFIX="$md_inst"
        make
        cd ../zsxd-1.11.0
        cmake . -DCMAKE_INSTALL_PREFIX="$md_inst"
        make
        cd ../zelda-roth-se-1.1.0
        cmake . -DCMAKE_INSTALL_PREFIX="$md_inst"
        make
        cd ..
        git clone --recursive https://github.com/wrightmat/zbom.git
        cd zbom
        cmake . -DCMAKE_INSTALL_PREFIX="$md_inst"
        make
        md_ret_require=(
            "$md_build/build/solarus-run"
            "$md_build/zsdx-1.11.0/data.solarus"
            "$md_build/zsxd-1.11.0/data.solarus"
            "$md_build/zelda-roth-se-1.1.0/data.solarus"
            "$md_build/zbom/data.solarus"
        )
    }
    
    function install_solarus() {
        cd build
        make install
        cd ../zsdx-1.11.0/
        make install
        cd ../zsxd-1.11.0/
        make install
        cd ../zelda-roth-se-1.1.0/
        make install
        cd ../zbom/
        make install
    }
    
    function configure_solarus() {
        addPort "$md_id" "zsdx" "Solarus Engine - Zelda Mystery of Solarus DX" "LD_LIBRARY_PATH=$md_inst/lib $md_inst/bin/solarus-run $md_inst/share/solarus/zsdx/"
        addPort "$md_id" "zsxd" "Solarus Engine - Zelda Mystery of Solarus XD" "LD_LIBRARY_PATH=$md_inst/lib $md_inst/bin/solarus-run $md_inst/share/solarus/zsxd/"
        addPort "$md_id" "zelda_roth_se" "Solarus Engine - Zelda Return of the Hylian SE" "LD_LIBRARY_PATH=$md_inst/lib $md_inst/bin/solarus-run $md_inst/share/solarus/zelda_roth_se/"
        addPort "$md_id" "zbom" "Solarus Engine - Zelda Book of Mudora" "LD_LIBRARY_PATH=$md_inst/lib $md_inst/bin/solarus-run $md_inst/share/solarus/zbom/"
        # symlink the library so it can be found on all platforms
        ln -sf "$md_inst"/lib/*/libsolarus.so "$md_inst/lib"
        ln -sf "$md_inst"/lib/*/libsolarus.so.1 "$md_inst/lib"
        moveConfigDir "$home/.solarus" "$md_conf_root/solarus"
    
        chown -R $user:$user "$md_inst"/share/solarus/*/data.solarus
    }
    

    You can replace this script with the standard one located in /home/pi/RetroPie-Setup/scriptmodules/ports and use it with retropie_setup.sh. Of course, to update the engine and install the new versions of the games you have to select the "update from source" option.



  • It appears the site no longer uses .tar.gz for its packages, so this script is out of date. Any chance you will be updating it with 1.6.0 and the new locations?



  • @Mootikins I've been working on this nowadays, however recently I got a bit busy so haven't been able to finish. Hopefully is done this weekend.

    See a post I made describing it a bit: https://retropie.org.uk/forum/post/191750



  • @hhromic I'm back home so I can work on it. Should I update my script or just wait for yours?



  • @saccublenda I'm working on the scriptmodule in current RetroPie. I'm more than updating it because I'm also changing how it behaves. So I would wait for mine. I currently have relatives visiting so I've been having a hard time finding spare time :( But they are leaving soon.

    In particular the important changes I'm implementing are:

    • Solarus now uses single .solarus files for the quests in addition to folders, therefore we can use Solarus as a system with its own rom directory that runs these files directly from EmulationStation.
    • For the above, the Solarus team designer already created art assets for two included EmulationStation themes: Carbon and Simple.
    • The scriptmodule will offer a simple menu to install these assets until (and if) we merge them into the official theme repositories.
    • Because of the above, the scriptmodule will no longer install quests but the user is responsible for downloading them from the Website and place them in the new solarus rom folder. This is a very easy and legal operation anyway. Also, this is easier to maintain and more importantly, does not force RetroPie to install copyrighted material from the scriptmodule.
    • Solarus 1.6 now supports GLES accelerated rendering on RPI, the scriptmodule properly configures the source build to take advantage for this.
    • Also the scriptmodule generates a helper launcher script to automatically set fullscreen and disable the mouse cursor.
    • Also an option to set a joypad buttons combo to quit the engine at any moment will be available (similar to HOTKEY+START in RetroArch)

    The branch in my fork where I'm working on this is here (not fully updated as of this writing): https://github.com/hhromic/RetroPie-Setup/tree/solarus

    Once I have the fully completed new scriptmodule I will open a forum thread with instructions to test it and provide feedback before submitting to RetroPie.

    Thanks for your patience guys!



  • @hhromic Great news, looking forward to see your script.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.