I.K.E.M.E.N GO on Raspberry Pi 4 [Now with an Install Guide!]
-
@retro-devil2 Rather late on this reply, sorry! The .sh file doesn't take any arguments; if you want to supply arguments to IKEMEN Go, you'll have to modify the script directly:
#!/bin/bash export MESA_GL_VERSION_OVERRIDE=2.1 xset -dpms s off s noblank xterm -g 1x1+0-0 -e 'cd $md_inst && ./Ikemen_GO -r big' #<== this part!
-
@superfromnd
Hello again so
-we tried pvp . Could be slow net but didn't work.
-We are gonna try and implant this with qjoypad soon. That way most controllers work with it .
-Thanks for input on screenpack adding . So you can only have one ikemen go installed to launch ? Example i want mvc and regular ikemen . And both to appear in retropie . -
@retro-devil2 said in I.K.E.M.E.N GO on Raspberry Pi 4:
-Thanks for input on screenpack adding . So you can only have one ikemen go installed to launch ? Example i want mvc and regular ikemen . And both to appear in retropie .
At the moment yes, you can only configure the script to launch one at a time. Theoretically it should be possible to have a bunch of them installed at once and then launch individual ones using either RetroPie's runcommand settings or the
-motif
argument (perhaps passing motif names to the argument the same way runcommand passes ROM names to an emulator?), but that would result in storing ALL of the games merged with eachother, with the motifs picking out which characters and what menu layouts to use. While this would work, it's not exactly elegant for managing multiple games as you'd have to know exactly which games use what, and the possibility of conflicting file names is a very real possibility (a lot of MUGEN content, namely screenpacks, have a really bad tendency to overwrite existing core files instead of placing them in a subdirectory).Another idea I had was having a script that created a temporary symlink to a folder containing a game's content that would be deleted once the game was closed, though I don't know if this would work because of permissions shenanagains on Linux. This would be somewhat similar to how RetroPie handles DOSbox, which has a similar problem with how its file system works.
-
@superfromnd
So i don't know how you'd do it atm. . .
But a lot of syste s accepts zips so retropie does as well. You could make each one a zip . All be it that sounds crazy -
-
Hey folks, I just updated the
ikemen-go.sh
setup script to account for a change in IKEMEN GO's Makefile that resulted in the screenpack not being able to download.Make sure to grab the updated script before you try to install or update!
-
@SuperFromND Thanks for the updated script. I can confirm that it builds fine but when trying to load HyperDBZ it throws the following error:
Error while loading the config file. json: cannot unmarshal string into Go struct field configSettings.FontShaderVer of type unit
The game was working fine with verion 0.97. I see the latest release 0.98.2 (from 6 days ago) introduced a number of 'breaking changes' that may be the cause for this?
https://github.com/Windblade-GR01/Ikemen-GO/releases
Any ideas?
-
@janderclander14 This may sound weird, but try deleting/renaming
config.json
and then relaunching the game. -
@SuperFromND Great, that did the trick, thanks! Performance seems to be improved from version 0.97. The game no longer lags after a while : )
-
Wall of text incoming!
So for a little while, I've been thinking over how to set it up so that you can install multiple MUGEN/IKEMEN fullgames, as that's the primary advantage the Box86 + Wine MUGEN method has over IKEMEN. Just so all of us are on the same page, let me provide a quick and dirty overview of the whole situation:
The Problem[s]
RetroPie's file structure is as such: the directory
/home/pi/RetroPie/roms/[system_name]
is used for storing game data (mostly ROM files for emulators as the name implies, but in the case of source ports like DOOM or Quake 3 it stores their game data), while the actual executables are stored in a separate location:/opt/retropie/ports/[game_name]
. The reason for this, best I can tell, is to ensure the user doesn't accidentally delete an executable while managing their games. This isn't a problem for most of RetroPie's supported programs (read: emulators and source ports), as most of them can be supplied a single file from any directory without problem, or have a command line argument/setting file that can be used to point to a specific directory containing multiple files if need be.IKEMEN however, being a game engine, has a very different expectation when it comes to file structure. The engine expects there to be several folders in the same directory as itself, several files within those folders, and much content relies on relative-paths and failsafes of said relative-paths that all rely on files being exactly where they are in relation to the executable itself. IKEMEN needs to be in the right place, and the files need to be in the right place as well.
With that knowledge, this presents a problem: IKEMEN's file structure expects both game data and executable to be all in the same location, but RetroPie wants game data and executables in separate locations. Furthermore,
/opt/retropie/ports/
is set to be read-only by RetroPie for security reasons, so if IKEMEN is installed into that directory, the game crashes due to not being able to write anything there, and obviously the user couldn't do anything with the engine without somesudo
-flavored bruteforcing (not to mention not being able to see the folder via Samba shares, a common way of getting game files onto RetroPie). I wanted to be able to have users add stuff or install a fullgame, but also maintain RetroPie's file structure so that an IKEMEN installation shell-script could be added officially.My first workaround for this discrepency was fairly simple: by moving the aeformentioned data folders to
/home/pi/RetroPie/roms/ports/ikemen-go/[various folders like chars, data, sound, etc]
and setting up some symlinks in/opt/retropie/ports
to point to there, I was able to get IKEMEN to conform to RetroPie's file structure while still allowing for a user to easily customize the game's files. This works, but it has a few problems.The main problem: with this setup, you can only have one IKEMEN-engine game installed at a time. This is seen as a deal-breaker for many, with some instead opting for the hacky solution of copying over fullgames verbatim (.exes and all), and then running the original executables using a combination of Box86 and Wine. While this does work, this method probably won't ever be officially incorporated into RetroPie due to its janky nature and conflicting with RetroPie's file structure ethos.
That's not the only problem, either: since we're creating fixed symlinks, this also poses a problem for any IKEMEN fullgame that happens to use non-standard folders (Famicom Fighters is an example of one that does), either in addition to or replacing the standard ones. Since IKEMEN is only able to look in its own directory (which is what the symlinks work around), any files or folders that didn't have a symlink already created will not be found by IKEMEN, leading to a crash or otherwise undesirable behavior. Sure, you could ask the user to manually create those symlinks, or try to automatically generate those symlinks at runtime using scripting (which would probably just cause headaches for security), but ultimately it's still a wonky solution to a problem that really shouldn't have to exist.
My Idea for a Solution
I've pondered for some time on an elegant way to alleviate all of this, and I think I've devised a solution that makes sense and solves all of this jank. Here's what the new file structure would look like:
-
/home/pi/RetroPie/roms/ports/ikemen-go/ would now contain a bunch of subfolders, with each one of those subfolders containing the files of a fullgame. These subfolders would ideally have short and simple names:
black-heart
,gensokyo-reloaded
,hyper-dbz
, etc. This is similar to how some other source ports function in RetroPie, such as Daphne or ScummVM. -
/home/pi/RetroPie/roms/ikemen-go/, a new directory, would contain dummy ".igo" files - blank files whose names would correspond to the subfolders in the above directory. This would have the side-effect of allowing for a dedicated MUGEN/IKEMEN section in EmulationStation, instead of just being an option in the Ports menu.
-
/opt/retropie/ports/ikemen-go would contain the IKEMEN executable and a script file,
ikemen-go.sh
, that would handle launching these different fullgames.
In order for my idea to work, one small addition would have to be made to IKEMEN: the addition of a new argument to change IKEMEN's working directory. Essentially, this would tell IKEMEN to act as if it was being ran from the directory provided in the argument; this is something that's not currently possible (the
-motif
argument comes somewhat close), but theoretically it shouldn't be too hard to add (gotta love FOSS!) and wouldn't interfere with normal IKEMEN usage. I'll submit a feature request to the IKEMEN Github (which has moved to an organization on Github since last post, I should mention) and see if this can get added.Assuming the above issue gets fufilled, the order of operations would go something like this:
- We launch a game from EmulationStation. As an example, let's use
black-heart
. The file we're launching is calledblack-heart.igo
, and is stored in/home/pi/RetroPie/roms/ikemen-go/
. - Runcommand.sh is told we're launching from system
ikemen-go
with a %ROM% value ofblack-heart.igo
. Using %BASENAME%, the extension gets stripped, leaving us withblack-heart
. Runcommand passes %BASENAME% to theikemen-go.sh
script file in/opt/retropie/ports/ikemen-go
. - That script would then take the %BASENAME% value and format it into this new argument, giving us something like
"/home/pi/RetroPie/roms/ports/ikemen-go/black-heart"
. - The script would then launch IKEMEN with that newly-formatted argument:
./Ikemen_GO -dir “/home/pi/RetroPie/ports/ikemen-go/black-heart”
- IKEMEN would see the
-dir
argument and set its working directory to/home/pi/RetroPie/ports/ikemen-go/black-heart
, and from there, load The Black Heart as if it was launched from that directory to begin with. - Optionally, you could make a small script to read the subfolder names in
/home/pi/RetroPie/roms/ports/ikemen-go/*
and automatically generate the .igo files if they aren't present, meaning all a user would have to do is create a folder (or possibly multiple folders), drag in the fullgame's contents, and run the script.
I tried to make a diagram to describe the above in a more intuitive way, but it came out looking more like the ramblings of a scientist gone mad: here it is anyways!
So yeah, that's my plan for this. I'll keep you folks updated as this wild chicanery continues.
TL;DR: Gonna request a feature to IKEMEN that would potentially allow multi-fullgame launching in RetroPie if it gets added.
-
-
Oh, one more quick thing (adding this as a separate reply so that those watching this thread get a notification for this):
I've decided it would be wise to update the original post at the top of this thread to reflect the current status of IKEMEN GO on the Pi 4, since it's almost entirely out-of-date. I've archived the original post on Wayback and will be including a link to this archive as a footer note. It should save newcomers some confused scrolling around to get this up and running. :)
EDIT: The post has been updated! It now includes a tutorial on how to install IKEMEN, configuration, and the like, which should be SUPER useful in the long run for newcomers.
-
-
Hey folks! So in the couple months since the last post, it seems like something changed on IKEMEN's side that broke both RPi4 compilation and my scriptmodule (as they changed their build system).
As a temporary fix, I've forked the repositories for 0.98.2 and updated the module to point to those forks instead. Same links as usual for the modules, and sorry for the inconvenience!
-
-
Thank you very much for this project, @SuperFromND! I have a couple of questions, if you will. And, before we start, I'm running this in a RPi4/8.
-
I'm trying to run Card Sagas Wars, which is a game with, apparently, LOTS of modifications to the folder structure. It doesn't work out of the box. Would there be any way to make it work?
-
I'm trying to set up gamepads to work with the game, but both my XInput and DirectInput pads aren't detected by the base game. Any ideas?
Thank you in advance for all the help!
-
-
Hey, quick heads-up: I just renamed the repository that I use to host version 0.98.2 of IKEMEN Go (since the most recent versions refuse to build under RetroPie right now); if you got the scriptmodule before today and suddenly start having issues with building from source, re-download the module. Same link as always!
-
@Larkas Apologies for taking forever to reply to this, my motivation for running stuff on RetroPie took a bit of a blow a while back. But I'll still try and help out!
-
It absolutely could be done, but just not with how I currently have full-games set up to run. One day I want to rewrite it to simply set the working directory to one containing a fullgame's files and run
Ikemen_GO
there, thus allowing pretty much every fullgame to run regardless of file structures or anything. -
IKEMEN in general has kinda spotty gamepad support right now, but the Xinput pads should at least be supported, strange. I've used no less than three unique Xinput controllers with my Pi running IKEMEN and all of them work just fine, so I can't really hazard a guess as to what your issue might be. :<
-
-
Hello! It's been quite a while since I've touched RetroPie or this project, but I'm currently looking into making a complete refactor into how the scripts work in order to allow multiple full games!
I found out that, since IKEMEN uses the working directory to start reading files in, you could just use a command like this:
cd /home/pi/RetroPie/roms/mugen/fullgame && /opt/retropie/ports/ikemen-go/Ikemen_GO
And IKEMEN will run itself in that fullgame directory, essentially allowing you to store multiple of them at once.
My gameplan now is to create a dedicated "system" with dummy ROMs (similar to ScummVM's
.svm
files) that when launched, tell runcommand which corresponding directory tocd
into and launch. For example, loadingtest.mgn
would load a fullgame at the directory/home/pi/RetroPie/roms/mugen/test
.Once that's done, I'll update the scripts and guide above, as well as make a post explaining how all of that works. :)
-
UPDATE TIME! I can now proudly say my scriptmodule finally supports multiple game installs!
How it works!
When you install IKEMEN Go now via scriptmodule, instead of a port, you will now have a dedicated M.U.G.E.N folder in your ROMs folder. This folder contains two types of files: folders (each of which represent a fullgame) and a dummy file named after the folders and with a
.mgn
extension. An example (the default IKEMEN Go content) will be created upon install.
Adding games
If you're copying a native IKEMEN game such as Famicom Fighters, simply copy the game's content to a new folder.
If your game is based on M.U.G.E.N, such as Hyper DBZ, you'll need to first copy the
ikemen-go
folder (or download a fresh copy of IKEMEN Go 0.98.2 and extract its contents to a new folder), then copy the game's contents on top of that (saying yes to any overwrites). Otherwise you might run into errors about missing files that IKEMEN needs, but MUGEN does not (namelyexternal
and the debug font, but likely other issues as well).Either way, in order to launch a game, create a .mgn file named after the folder of the game you want to launch. The contents of the .mgn file do not matter at all; just make sure the filename matches the corresponding folder exactly (case sensitivity and all).
How to install!
The install procedure should be largely the same as before: download the two scriptmodules, put them in the required place, open RetroPie-Setup and install
ikemen-go
. However, there's gonna be one more step you'll have to take: scriptmodules (best I can tell) do not have any way to specify file extensions directly, so you won't actually see a M.U.G.E.N system appear right away. To fix that:- Open either
/etc/emulationstation/es_systems.cfg
or, if it's present,/opt/retropie/configs/all/emulationstation/es_systems.cfg
- Find the system entry for M.U.G.E.N; this is created automatically when you install IKEMEN Go.
- Change the
<extension>
line to this:
<extension>.mgn</extension>
- Save and restart EmulationStation.
If for whatever reason you don't have a M.U.G.E.N system ines_systems.cfg
, you can also just copy-paste this entire block to add it manually:
<system> <name>mugen</name> <fullname>M.U.G.E.N</fullname> <path>/home/pi/RetroPie/roms/mugen</path> <extension>.mgn</extension> <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ mugen %ROM%</command> <platform>mugen</platform> <theme>mugen</theme> </system>
A small note
Because of the way this is set up, you'll have to reconfigure your controllers with every new game. However, you can speed up this process after you've set it up once; find a game where you've configured your controllers to your liking, open up
game_name_here/config/save.json
, and copy-paste theKeyConfig
andJoystickConfig
sections to theconfig/save.json
of any future games. You might be able to just copy the entiresave.json
wholesale, but certain games might have issues if they modify certain other parameters likeSystem
orCommonConst
.Theme stuff!
Since IKEMEN Go now creates an entire new 'system', that means theme authors can now include support for it! The theme system folder/ID is just
mugen
, so feel free to add support!For those using lilbud's Switch theme, I've created this image that you can add to the
art
folder:
The guide at the top of this thread will be updated shortly. :)
- Open either
-
"No config found for system mugen"
ok, so I thought I followed along with everything, but when I go to launch "IKEMEN-GO" in MUGEN, I get "No config found for system mugen". I get the same message when trying to launch another game from there. What did I miss?
-
@GIJoel same here... there's no Linux executable (.deb) in the folder either. My guess is that the latest update messed up big time.
-
@SuperFromND where's the executable, and why is the default mgn file blank? Shouldn't the mgn file lead to the executable?
-
Ooookay, so sorry for the wait everyone! I guess I didn't test thoroughly enough, as it seems like the current install scripts don't actually create a new system correctly. Gonna have to look into it later. @_@
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.