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

    I.K.E.M.E.N GO on Raspberry Pi 4 [Now with an Install Guide!]

    Scheduled Pinned Locked Moved Ideas and Development
    golangikemenikemen gomugentutorial
    151 Posts 19 Posters 53.2k 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.
    • SuperFromNDS
      SuperFromND
      last edited by

      So I didn't really bring it up before, but I was having some odd issues with inputs, but only with my specific controller (a Rock Candy Xbox 360 pad). Turns out that wasn't an IKEMEN bug at all, but rather a driver issue. Simply updating xpad (the default driver in RetroPie for controllers) allows you to fully use and remap the controller correctly!

      (Oh, quick side note; don't try to compile IKEMEN GO right this moment at the time of this post; some commits that shouldn't have been pushed yet were pushed, and as a result the game crashes on startup due to the game trying to read a nonexistent parameter in save/config.json; this should be fixed shortly after this post's publication!)

      ▲▼▲▼▲▼▲▼▲▼
      IKEMEN Go
      SRB2Kart
      ▼▲▼▲▼▲▼▲▼▲

      SuperFromNDS 2 Replies Last reply Reply Quote 0
      • SuperFromNDS
        SuperFromND @SuperFromND
        last edited by

        @superfromnd said in I.K.E.M.E.N GO on Raspberry Pi 4:

        this should be fixed shortly after this post's publication!

        Okay so uh, clearly it hasn't haha. At the very least, I figured out the cause and a temporary, if extremely clunky, workaround: pop open the file /home/pi/RetroPie/ports/ikemen-go/external/script/options.lua and find this line:

        if itemname == 'gamespeed' then return config.GameSpeed .. '%' end
        

        and change it to this:

        if itemname == 'gamespeed' then return '100%' end
        

        Note that, as you can probably see, doing this will break the "Game Speed" option in the options menu.

        ▲▼▲▼▲▼▲▼▲▼
        IKEMEN Go
        SRB2Kart
        ▼▲▼▲▼▲▼▲▼▲

        1 Reply Last reply Reply Quote 0
        • SuperFromNDS
          SuperFromND @SuperFromND
          last edited by

          UPDATE: Glad to report this is no longer the case! The game now works when compiling from source once again. :)

          @superfromnd said in [I.K.E.M.E.N GO on Raspberry Pi 4]

          (Oh, quick side note; don't try to compile IKEMEN GO right this moment at the time of this post; some commits that shouldn't have been pushed yet were pushed, and as a result the game crashes on startup due to the game trying to read a nonexistent parameter in save/config.json; this should be fixed shortly after this post's publication!)

          ▲▼▲▼▲▼▲▼▲▼
          IKEMEN Go
          SRB2Kart
          ▼▲▼▲▼▲▼▲▼▲

          1 Reply Last reply Reply Quote 0
          • M
            MrRussellgro
            last edited by

            Hey, so I want to get this for my RetroPie console, but how do I get it to work? Do I just download it from the Ports section from the online menu?

            SuperFromNDS 1 Reply Last reply Reply Quote 0
            • SuperFromNDS
              SuperFromND @MrRussellgro
              last edited by SuperFromND

              @mrrussellgro said in I.K.E.M.E.N GO on Raspberry Pi 4:

              Hey, so I want to get this for my RetroPie console, but how do I get it to work? Do I just download it from the Ports section from the online menu?

              It's not currently included in RetroPie, so you'll have to manually add it to the Ports section in RetroPie's setup menu in order to install it. Here's a guide on how to do that:

              What You'll Need

              • Some form of FTP client. I use and highly recommend WinSCP, though I've also heard Cyberduck is pretty good.
              • This .sh file. If you see the script's text but don't get prompted for a download (which is the case in Chrome), just press Ctrl + S to save it as a file.

              Installation

              • If you haven't already done so, update RetroPie-Setup to the latest version and enable SSH.
              • Using your FTP client, connect to your Raspberry Pi.
              • Navigate to the directory /home/pi/RetroPie-Setup/scriptmodules/ports. In WinSCP, you can simply copy-and-paste the above text into the address bar and it will take you straight to it. You should see a bunch of .sh files.
              • Drag and drop ikemen-go.sh into this directory.
              • Once that's done being transferred, now you can start RetroPie-Setup and navigate over to Ports and, if you did this correctly, IKEMEN GO should be installable from there.

              Installation should take somewhere between 15 to 30 minutes on a fresh image.
              Usage notes / documentation pertaining to IKEMEN GO are currently available here.

              ▲▼▲▼▲▼▲▼▲▼
              IKEMEN Go
              SRB2Kart
              ▼▲▼▲▼▲▼▲▼▲

              M T 2 Replies Last reply Reply Quote 0
              • M
                MrRussellgro @SuperFromND
                last edited by

                @superfromnd So I followed your steps, though I used a USB transfer to my Pi, but it won't launch the game. Anything I'm doing wrong?

                SuperFromNDS 1 Reply Last reply Reply Quote 0
                • SuperFromNDS
                  SuperFromND @MrRussellgro
                  last edited by

                  @mrrussellgro A few things might have gone wrong!

                  • Are you running on a Pi 4?
                  • Are you using a Buster-based version of RetroPie (4.6 or later)?
                  • Check the file /dev/shm/runcommand.log for any errors or issues.

                  ▲▼▲▼▲▼▲▼▲▼
                  IKEMEN Go
                  SRB2Kart
                  ▼▲▼▲▼▲▼▲▼▲

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    MrRussellgro @SuperFromND
                    last edited by

                    @superfromnd said in I.K.E.M.E.N GO on Raspberry Pi 4:

                    @mrrussellgro A few things might have gone wrong!

                    • Are you running on a Pi 4?
                    • Are you using a Buster-based version of RetroPie (4.6 or later)?
                    • Check the file /dev/shm/runcommand.log for any errors or issues.
                    1. I'm on Raspberry Pi 4.
                    2. I believe I have version 4.7.12 of RetroPie. I might have to look again.
                    SuperFromNDS 1 Reply Last reply Reply Quote 0
                    • SuperFromNDS
                      SuperFromND @MrRussellgro
                      last edited by

                      @mrrussellgro Hm, is there anything in /dev/shm/runcommand.log? What about /opt/retropie/ports/ikemen-go/Ikemen.log?

                      ▲▼▲▼▲▼▲▼▲▼
                      IKEMEN Go
                      SRB2Kart
                      ▼▲▼▲▼▲▼▲▼▲

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        MrRussellgro @SuperFromND
                        last edited by

                        @superfromnd So how can I look into those?

                        SuperFromNDS 1 Reply Last reply Reply Quote 0
                        • SuperFromNDS
                          SuperFromND @MrRussellgro
                          last edited by

                          @mrrussellgro Assuming SSH is enabled, you should be able to view them just by using an FTP client and navigating to /dev/shm; the runcommand.log file should be there after attempting to run IKEMEN GO from EmulationStation.

                          Since you mentioned using USB transfer, did you by chance place ikemen-go.sh directly into a ROM folder instead of your RetroPie-Setup scriptmodules folder by mistake? I don't believe that USB transfer is able to identify and transfer a scriptmodule into the RetroPie-Setup menu (though I could be wrong).

                          ▲▼▲▼▲▼▲▼▲▼
                          IKEMEN Go
                          SRB2Kart
                          ▼▲▼▲▼▲▼▲▼▲

                          M 1 Reply Last reply Reply Quote 1
                          • T
                            TheSnackist @SuperFromND
                            last edited by

                            @superfromnd I take it there is no way this will work on a RPi 3b? with the price of Raspberry Pis I guess I have no excuse not to get a Pi 4

                            SuperFromNDS 1 Reply Last reply Reply Quote 0
                            • SuperFromNDS
                              SuperFromND @TheSnackist
                              last edited by

                              @thesnackist I haven't tested on a Pi 3, admittedly! Though I wouldn't be surprised if something is missing on the Pi 3 that was added in the Pi 4's hardware when it switched to the A72 CPU.

                              ▲▼▲▼▲▼▲▼▲▼
                              IKEMEN Go
                              SRB2Kart
                              ▼▲▼▲▼▲▼▲▼▲

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                TheSnackist @SuperFromND
                                last edited by

                                @superfromnd gonna give it another go tonight, maybe I will have better luck (last time it was having trouble reaching GitHub for some reason...)

                                1 Reply Last reply Reply Quote 0
                                • M
                                  MrRussellgro @SuperFromND
                                  last edited by

                                  @superfromnd I will have to look into the roms folder and tell you if I have it installed there.

                                  1 Reply Last reply Reply Quote 0
                                  • SuperFromNDS
                                    SuperFromND
                                    last edited by

                                    Status update: one of the dependencies for IKEMEN GO, specifically this one, was updated and now explicitly requires Golang version 1.14 or newer. Problem: Best I can tell, Raspbian Buster has no native package for any Go version above 1.11. For the time being this effectively breaks the scriptmodule, but the upcoming Raspbian Bullseye should fix this, as it updates the Golang package to v1.15. Still out of date, but well within the range that can compile IKEMEN GO.

                                    There's also the option of manually compiling the latest version of Golang to use in the scriptmodule, but I don't think any modules in RetroPie do anything like this yet, so I have no idea how to go about doing that. (If any veteran scriptmodule devs are reading this and I happen to be wrong, let me know!)

                                    ▲▼▲▼▲▼▲▼▲▼
                                    IKEMEN Go
                                    SRB2Kart
                                    ▼▲▼▲▼▲▼▲▼▲

                                    1 Reply Last reply Reply Quote 0
                                    • SuperFromNDS
                                      SuperFromND
                                      last edited by

                                      Update again! Turns out there actually is precedence for manually installing non-package dependencies in RetroPie (thank you @mitu for pointing this out), and it happens to be a version of Golang too!

                                      I wasn't sure if there was any particular reason the script installs v1.8, so to be safe, I made a duplicate of the golang.sh module that installs Golang v1.17 and then updated the IKEMEN GO scriptmodule to use it. Unfortunately, I'm running into a little problem with this setup: when trying to compile, I'm getting an error:

                                      # Excerpt of scriptmodule code
                                      function build_ikemen-go() {
                                          local goroot="$(_get_goroot_golang-1.17)" # Resolves to /opt/retropie/supplementary/golang-1.17
                                          export GOPATH="$md_build"
                                          export GOROOT="$goroot"
                                      
                                          "$goroot/bin/go" clean -modcache
                                          make TAGS='-tags al_cmpt' linux
                                          # (etc.)
                                      }
                                      
                                      # Result when ran
                                      $GOPATH/go.mod exists but should not
                                      

                                      Apparently, you can't have GOPATH set to a location with a Go module file contained within it. I went with that path because the module that used Golang in RetroPie, scraper, also uses $md_build as GOPATH. "But no problem", I thought, "I'll just remove the GOPATH variable declaration and let Go figure it out". So I tried that, but it also resulted in a failed compile:

                                      # Excerpt of scriptmodule code
                                      function build_ikemen-go() {
                                          local goroot="$(_get_goroot_golang-1.17)" # Resolves to /opt/retropie/supplementary/golang-1.17
                                          export GOROOT="$goroot"
                                      
                                          "$goroot/bin/go" clean -modcache
                                          make TAGS='-tags al_cmpt' linux
                                          # (etc.)
                                      }
                                      
                                      # Result when ran
                                      ...
                                      go: downloading github.com/hajimehoshi/go-mp3 v0.3.0
                                      go: downloading github.com/hajimehoshi/oto v0.7.1
                                      go: downloading github.com/pkg/errors v0.9.1
                                      go: downloading github.com/jfreymuth/vorbis v1.0.0
                                      /opt/retropie/supplementary/golang-1.17/src/net/dnsclient.go:11:2: non-standard import "golang.org/x/net/dns/dnsmessage" in standard package "net"
                                      make: *** [Makefile:32: Ikemen_GO] Error 1
                                      

                                      So I looked up the non-standard import error, and according to Stackoverflow, the solution to this error is setting GOPATH to $HOME/go. Sounds good, except for one small problem: $HOME/go is the default path that Go uses when no GOPATH is specified. In other words, we're already using $HOME/go as GOPATH here!

                                      I'm sure I'm probably missing something; any Go-savvy folks who can help out here?

                                      ▲▼▲▼▲▼▲▼▲▼
                                      IKEMEN Go
                                      SRB2Kart
                                      ▼▲▼▲▼▲▼▲▼▲

                                      1 Reply Last reply Reply Quote 0
                                      • SuperFromNDS
                                        SuperFromND
                                        last edited by SuperFromND

                                        Alright, I figured out how to make it work after some trial and error. I ended up abandoning the Makefiles that IKEMEN GO's source code supplies in order to get it to always use Go 1.17, and that seems to have fixed the problem.

                                        If you want to give this scriptmodule a try, here's the updated instructions on how to do so (I'll assume you have some level of savviness with RetroPie already):

                                        • Step 0: Make sure you've updated RetroPie-Setup, and possibly also made a backup if you want to be safe.
                                        • Step 1: Download ikemen_go.sh and place it in /home/pi/RetroPie-Setup/scriptmodules/ports.
                                        • Step 2: Download golang-1.17.sh and place it in /home/pi/RetroPie-Setup/scriptmodules/supplementary.
                                        • Step 3: Start RetroPie-Setup, navigate to Manage Packages, then Experimental packages, then scroll down to ikemen-go. From there, install it. Give it about 20-40 minutes to install.
                                        • Step 4: Exit RetroPie-Setup and restart EmulationStation. If done correctly, IKEMEN GO should be available via the Ports screen, ready to launch.

                                        ▲▼▲▼▲▼▲▼▲▼
                                        IKEMEN Go
                                        SRB2Kart
                                        ▼▲▼▲▼▲▼▲▼▲

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          MrRussellgro
                                          last edited by

                                          So I dragged my from from the game on the PC version, but the screenpack is still stuck on the default one. I even changed the config file.

                                          SuperFromNDS 1 Reply Last reply Reply Quote 0
                                          • SuperFromNDS
                                            SuperFromND @MrRussellgro
                                            last edited by

                                            @mrrussellgro At a wild guess, it might be that either save/config.json or the screenpack itself is pointing to files using non-case-sensitive filenames. Works well enough on Windows which is case insensitive, but not so much on Linux.

                                            ▲▼▲▼▲▼▲▼▲▼
                                            IKEMEN Go
                                            SRB2Kart
                                            ▼▲▼▲▼▲▼▲▼▲

                                            M 2 Replies 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.