RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Suggestions for ports #2

    Scheduled Pinned Locked Moved Ideas and Development
    portsgamesscripts
    367 Posts 26 Posters 125.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sleve_mcdichael @quicksilver
      last edited by sleve_mcdichael

      @quicksilver said in Suggestions for ports #2:

      supertuxkart

      [ -f "$md_inst/supertuxkart" ]] && rm -rf "$md_inst/"*
      

      What is this for? It looks like it's leftover from the Minecraft scriptmodule you adapted(?) this from, where it looks like it is meant to remove a previous compiled version, which now won't be replaced because the install module has been changed to use an apt package instead. This seems like a pretty unique situation, is this really applicable here?

      Also taking a hint from the official supertux (sans "kart") module, there is:

      function _update_hook_supertux() {
          # to show as installed in retropie-setup 4.x
          hasPackage supertux && mkdir -p "$md_inst"
      }
      

      We should probably add a similar function to, as it says, "show as installed in retropie-setup."

      Do we really need to mess about with $md_inst/supertuxkart.sh? In the Minecraft module, this script does more than just launch the game. Can we just make the addPort command "XINIT:/usr/games/supertuxkart" and do away with the extra script in $md_inst?

      You can add moveConfigDir for network backup of saves and configs:

      moveConfigDir "$home/.config/supertuxkart" "$md_conf_root/supertuxkart"
      

      If this is for Pi 4 only you'll want to change the module flags:

      rp_module_flags="!all rpi4"
      

      ...or something else that might allow higher-end devices too (I'm not fluent in module flags. For example I don't even know what "mali" is. But why would this not run on x86?)

      I haven't tested this yet. Can probably try tomorrow. Does it run well on RPi4?

      #!/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="supertuxkart"
      rp_module_desc="SuperTuxKart - a free kart-racing game inspired by the Mario Kart series"
      rp_module_licence="GPL3 https://sourceforge.net/p/supertuxkart/code/HEAD/tree/main/trunk/COPYING?format=raw"
      rp_module_section="exp"
      rp_module_flags="!all rpi4"
      
      function _update_hook_supertuxkart() {
          # to show as installed in retropie-setup 4.x
          hasPackage supertuxkart && mkdir -p "$md_inst"
      }
      
      function depends_supertuxkart() {
          getDepends xorg
      }
      
      function install_bin_supertuxkart() {
          aptInstall supertuxkart
      }
      
      function remove_supertuxkart() {
          aptRemove supertuxkart
      }
      
      function configure_supertuxkart() {
          addPort "$md_id" "supertuxkart" "SuperTuxKart" "XINIT:/usr/games/supertuxkart"
          moveConfigDir "$home/.config/supertuxkart" "$md_conf_root/supertuxkart"
      }
      
      quicksilverQ S 2 Replies Last reply Reply Quote 0
      • quicksilverQ
        quicksilver @sleve_mcdichael
        last edited by

        @sleve_mcdichael I'm still trying to decipher what all the different functions do so it's certainly possible my first attempt at a script module has things that don't make sense. So I appreciate your feedback!

        I would assume that the game would run on x86 as that's probably it's native environment. However I don't have a way to test that. Performance is good on my pi 4.

        ExarKunIvE 1 Reply Last reply Reply Quote 0
        • ExarKunIvE
          ExarKunIv @quicksilver
          last edited by

          @quicksilver im in the same boat with the flags, all i know that if a x86 flag is there it will not install on the Pi. that is all i have figured out, lol

          RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
          RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
          Maintainer of RetroPie-Extra .

          R 1 Reply Last reply Reply Quote 0
          • R
            retropi19 @ExarKunIv
            last edited by retropi19

            @exarkuniv thanks for adding my scripts
            Will you add also the log2ram as a script or to be installed automatic with your extras??

            Also can you add george box86 scripts?

            git clone --branch emulator https://github.com/GeorgeMcMullen/rp-box86wine /home/pi/RetroPie-Setup/ext/rp-box86wineemu/

            Rpi3B+ USB 2.0 Boot HDD Hitachi 40GB 5400rpm

            Rpi4 4GB rev1.4 USB 3.0 Boot HDD Hitachi 160GB 7200rpm

            1 Reply Last reply Reply Quote 0
            • S
              sleve_mcdichael
              last edited by sleve_mcdichael

              Well I'm somewhat fluent, I guess. I don't know what all the different individual flags mean but I know basically how the function works.

              For starters, the exclamation point ("!") is a negator symbol, it means "not." You can exclude certain platforms this way. "!mali !x86" for example means "not mali, and not x86; anything else is okay." As I said before I'm not sure what "mali" is; "!x86" would be used in cases like Minecraft: Pi Edition where the software is based entirely around ARM architecture and would not work on a PC, not because it doesn't have the resources, but because it doesn't speak the language.

              Alternatively, you can restrict it to certain platforms, for example "!all rpi4"; !all disables it everywhere and then rpi4 re-enables it on RPi4 only.

              "" (or, simply not setting an rp_module_flags= variable) will enable a module on all platforms, while using "!all" will disable it, everywhere.

              It doesn't make much sense to just copy the flags from another module that's using different software; if you don't know what ones to use, start with either "" or "!all" and then either disable or enable it on individual platforms as you are able to test.

              It looks like we can see the system.sh function get_platform() for a list of the platforms and their flags.

              1 Reply Last reply Reply Quote 1
              • S
                sleve_mcdichael
                last edited by

                Oh. It's 500 MB large. This might take a little while... :)

                1 Reply Last reply Reply Quote 0
                • S
                  sleve_mcdichael @sleve_mcdichael
                  last edited by sleve_mcdichael

                  @sleve_mcdichael said in Suggestions for ports #2:

                  function _update_hook_supertuxkart() {
                      # to show as installed in retropie-setup 4.x
                      hasPackage supertuxkart && mkdir -p "$md_inst"
                  }
                  

                  This doesn't appear to be necessary, I commented it out before installing and it still shows as "installed," with the $md_inst dir and retropie.pkg created inside of it.

                  1 Reply Last reply Reply Quote 0
                  • S
                    sleve_mcdichael
                    last edited by

                    SuperTuxKart, the module worked fine, even if the game itself was a bit dodgy on my hardware. First, it gives me a warning about "OpenGL version appears to be too old (requires 3.1 or better)", but it runs anyway. Full gamepad support out the box. Track Oliver's Math Class ran at a smooth 45-60 fps for the entire race (staying near the high end most of the time) on the default "level 3" graphic settings.

                    But it went downhill from there. Framerate got pretty bad on Cocoa Temple, range 11-27 fps. Turning video settings to "custom" and disabling literally everything (well, the one thing that was still left from the minimal "level 1" settings) improved that slightly, but still pretty bad (12-35). Most of the race is spent in the lower-mid range of those spreads.

                    It spiked my temperature pretty quickly too, not enough to throttle it but it got within about 6C, even higher than N64 does, and I only played it for a few minutes.

                    Looks like it could be a great game if the system can handle it, but it might still be a bit too meaty for RPi4.

                    These next are not likely performance-related:

                    Sometimes when I finish (well, fail) a race in "story" mode, it will kick me back to the Race Settings screen and then I'll be back in "single-player."

                    One time I paused it and walked away for a few minutes & when I came back the gamepad wouldn't respond, only the keyboard.

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      sleve_mcdichael @sleve_mcdichael
                      last edited by sleve_mcdichael

                      I ended up removing it. The 600-some-odd MB of supertuxkart-data et al did not go with it.

                      Investigating, it seems autoremove is only invoked in the getDepends function* in helpers.sh, and not in aptRemove.

                      I see it's also used in a couple other places in scriptmodules/supplementary so I would imagine it's okay but I would still ask, @mitu, is this "safe" to put in a "regular" scriptmodule, and the right way to do this?

                      function remove_supertuxkart() {
                          aptRemove supertuxkart
                          apt-get autoremove -y
                      }
                      

                      *(and even then, I guess only if you invoke it with ./retropie_packages.sh {package} depends remove because xorg and it's depends were not removed, either. But at least they're not 600MB.)

                      1 Reply Last reply Reply Quote 0
                      • D
                        Drdave79 @ExarKunIv
                        last edited by

                        @ExarKunIv Anyone else install Shadow Warrior and the keyboard doesn't respond? All of my other games under ports work fine. But SW either freezes or has no controllability. It actually works ok under DOS GAMES though. I just have a problem with the scroll lock. So I'd rather have it working under ports.

                        Thank you.

                        ectoE ExarKunIvE 2 Replies Last reply Reply Quote 0
                        • ectoE
                          ecto @Drdave79
                          last edited by ecto

                          @Drdave79 Make sure, that you don't enable fullscreen mode. For some reason this happens because the game looses focus. It should work in windowed mode.
                          You probably have to either delete (careful: make a backup) sw.cfg(or whatever it's called) or edit it's content to enable windowed mode. I don't remember where it's stored, though. Sorry.

                          D 1 Reply Last reply Reply Quote 0
                          • ExarKunIvE
                            ExarKunIv @Drdave79
                            last edited by

                            @Drdave79 @ecto is correct on that, but i will go back and take a better look.

                            RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                            RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                            Maintainer of RetroPie-Extra .

                            D 1 Reply Last reply Reply Quote 0
                            • D
                              Drdave79 @ecto
                              last edited by Drdave79

                              @ecto Deleting the .cfg file didn't do anything. These are the only options for screen mode in the .cfg file

                              ;ScreenMode
                              ; - Chained - 0
                              ; - Vesa 2.0 - 1
                              ; - Screen Buffered - 2
                              ; - Tseng optimized - 3
                              ; - Paradise optimized - 4
                              ; - S3 optimized - 5
                              ; - RedBlue Stereo - 7
                              ; - Crystal Eyes - 6
                              ;
                              ;ScreenWidth passed to engine
                              ;
                              ;ScreenHeight passed to engine
                              ;
                              ;
                              ScreenMode = 1
                              ScreenWidth = 640
                              ScreenHeight = 480

                              1 Reply Last reply Reply Quote 0
                              • D
                                Drdave79 @ExarKunIv
                                last edited by

                                @ExarKunIv I tried a different copy of the game and got the following error on launch:

                                There was a problem initializing the Build engine: Failed to load PALETTE.DAT!

                                The other version loads at least, but frozen on game menu.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  sleve_mcdichael
                                  last edited by sleve_mcdichael

                                  Looking at Shadow Warrior. It's Doom/Duke Nukem with ninjas? Yes, please!

                                  Is it normal to have no background music if I don't have the hq ogg music files? I get sound FX but no bgm. I've tried withtimidity as in the install script, with libfluidsynth-dev as in the repo's instructions, with both, and with neither.

                                  Music works fine if the ogg tracks exist in the roms/ports/shadowwarrior dir in zero-padded 2-digit lowercase format e.g. track02.ogg-track14.ogg (you have to rename the capitalized Track##.ogg files if you got them from the GOG version.)

                                  Expansion packs may be enabled, as described here: https://retropie.org.uk/forum/topic/20369/jsfw-source-port-for-shadow-warrior-now-available

                                  Using the GOG "Classic Complete" version as a reference:

                                  Make an account on gog.com, "buy" Shadow Warrior Classic Complete (it's free), download the offline backup version to your PC. The .exe is a self-extracting archive. Run it and extract to the location of your choice (click on "options" to change the install location.)

                                  For Wanton Destruction: copy the file WT.GRP from the install folder to your Shadow Warrior data dir on your Pi (roms/ports/shadowwarrior). Launch the expansion with "$md_inst/sw -gWT.GRP" (no space after -g) and select episode "Code of Honor (registered version)" in the in-game menu.

                                  For Twin Dragon: in the install folder, in the dragon subfolder, zip up all *.MAP *.VOC *.ART and *.ANM files into a dragon.zip. If you just copy the whole folder onto your Pi, you can do it there with the 7z command:

                                  cd /{install dir}/dragon
                                  7z a dragon.zip *.MAP *.VOC *.ART *.ANM
                                  

                                  Then, move the dragon.zip file into your data dir, launch with "$md_inst/sw -gdragon.zip" and select the registered-version episode.

                                  @Drdave79 said in Suggestions for ports #2:

                                  There was a problem initializing the Build engine: Failed to load PALETTE.DAT!

                                  I got the same error when loading the "Special Edition" CD-ROM files (from...sources.) Fortunately, the "Classic Complete" edition is free on GOG and that version's files seem to work (but see above, no music until I add the hq ogg tracks -- I wonder if this is specific to this version since it is distributed with the HQ tracks already? I haven't tried any other sources, yet. There's another CD-ROM in "that place" that I can try, but I won't have a lot of time for tinkering for the next week or so.)

                                  @ExarKunIv I have some questions about the install script and make params if you can answer them, or can refer me to someone who can. I see it is a recent addition to the RP-Extra repo, did you write this script or import it from somewhere else?

                                  Is timidity necessary? It is not mentioned in the build instructions on the repo. libfluidsynth-dev, however, is (though optional). Is this a substitution, or...? I'm not getting any MIDI background music with either, or both, but the ogg tracks work fine (see above -- may be related to the specific version I'm using but likely won't be able to test this anytime soon.)

                                  (freepats isn't mentioned upstream either, but I already had that one installed from other ports, and I didn't mess around trying it without.)

                                  What is OPTOPT="-march=armv8-a+crc -mtune=cortex-a53"? I didn't understand this part so I tried compiling without it, and it still works (I think so, anyway, but I've only played the first levels for a few minutes.) What was its purpose?

                                  (After more searching, it looks like these are setting it to build for a specific target architecture. Is this right? Won't it break if they are using it on another platform?)

                                  D 1 Reply Last reply Reply Quote 0
                                  • D
                                    Drdave79 @sleve_mcdichael
                                    last edited by Drdave79

                                    @sleve_mcdichael That's the version I'm trying. The one from GOG. Freezes every time I launch it from ports. I copied the entire folder too.

                                    Secondly, I copied the 13 track files to the shadowwarrior folder and renamed them with a lowercase t. Still no music. In fact, music is grayed out in the shadowwarrior menu.

                                    S 1 Reply Last reply Reply Quote 0
                                    • S
                                      sleve_mcdichael @Drdave79
                                      last edited by

                                      @Drdave79 in my testing so far, I've actually built it straight from the repo without using the scriptmodule, yet. I see it is using XINIT: yet it doesn't install X (xorg). Does this even do anything, then? I've just been launching it with ./sw. Try removing XINIT: from your emulator command in emulators.cfg?

                                      D 1 Reply Last reply Reply Quote 0
                                      • D
                                        Drdave79 @sleve_mcdichael
                                        last edited by Drdave79

                                        @sleve_mcdichael Did a search in the emulators.cfg file. No XINIT found. I did the initial engine install from retropie extra ports.

                                        I'd be fine playing it under the MS-DOS section, but scroll lock keeps turning on messing up the controls and my compact keyboard doesn't have a scroll lock key.

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          sleve_mcdichael @Drdave79
                                          last edited by

                                          @Drdave79 what is your /opt/retropie/configs/ports/sw/emulators.cfg? Is it not:

                                          sw = "XINIT: /opt/retropie/ports/shadowwarrior/sw"
                                          default = "sw"
                                          

                                          ? I just mean remove the XINIT:{space} from the first line so it reads:

                                          sw = "/opt/retropie/ports/shadowwarrior/sw"
                                          
                                          D ExarKunIvE 2 Replies Last reply Reply Quote 0
                                          • D
                                            Drdave79 @sleve_mcdichael
                                            last edited by

                                            @sleve_mcdichael said in Suggestions for ports #2:

                                            sw = "/opt/retropie/ports/shadowwarrior/sw"

                                            THAT DID IT! I was looking at the wrong file. Both game and music are working now under ports. Thank you SO much @sleve_mcdichael !!

                                            D 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.