Create a custom ES system able to launch games for many systems
-
@meleu Well .... yes ;) But it is simplier as @TMNTturtlguy solution to need one runcommand for just one system - as it uses a script that is already provided and has nothing to do with the original RetroPie config.
Again I will learn something new soon. Excite me ;)
-
@cyperghost @meleu thank you both for your time and efforts!
@meleu as is the usual case, you always have a much more elegant way of making my complex and messy round about ways of doing things work much better.
To both of you, you are both very kind, but I am not sure how many people out there this will help, I do appreciate your efforts, but please do not spend to much of your personal time working on something that might not benefit many people.
Thanks!
-
@tmntturtlguy said in Create a custom ES system able to launch games for many systems:
please do not spend to much of your personal time working on something that might not benefit many people.
haha! I hope it will be a very simple solution. You will not owe me anything because of it. :D
-
@tmntturtlguy The reason is, that I'll learn some tricks how to solve such usecases. It won't be a big thing to do but it's just a quesion of how elegant it can be done.
I think @meleu will also present a general solution that uses annother parameter to get use of several launching images.
-
Just to show anyone who is interested how this setup works, here is a video. Notice that in the Nintendo system, the marquee above the video the teenage mutant ninja turtles game logo, in the TMNT custom system, the marquee shows what system the game is from. Also note, i have edited the game names in the games list as well.
-
@cyperghost @TMNTturtlguy the simple solution I've found depends on the approval of this Pull Request with a little change in
runcommand.sh
(added two lines). Jools is not (yet) convinced that this usecase is worth it. If you guys have more arguments, try to comment something there. -
@meleu Thanks for doing this! I looked at the code and left a message there. Not sure what to say to convince him, hopefully he can watch my video above to see the outcome.
Looking at your modifications to the runcommand file, where do i place the custom launch image? That is not clear to me? I probably am just missing something.
Thanks for your efforts!
-
@tmntturtlguy said in Create a custom ES system able to launch games for many systems:
Looking at your modifications to the runcommand file, where do i place the custom launch image? That is not clear to me? I probably am just missing something.
Once that PR is merged, we can add a line or two in the
runcustom.sh
script and get the results we want! ;-)edit: let's wait if Jools will accept that and then I'll talk about the next step.
-
#fail
The PR wasn't merged. But I have a plan B, just give me one day (because I'm away from my raspi).
-
@meleu I think the solution should depend on the
runcustom.sh
only and it's able to recreate the same parametes as available from theruncommand.sh
But I understand the situation from BuzZ the usecases is really rare... And I would stick to the
custom-collections
To be honest I'm against this solution. If for some reason the user turns off the pi while emulator is running, it will mess his/her launching images configs and will lead to confusion.
Wait a little, it should be a way simpler than those workaround solutions... :-)Yes... on runcommand-onend.sh you check existance of file
/opt/retropie/configs/$system/launching.jpg.org
if it's available you rename it back...So you might see only one time a wrong picture ;) Maybe that's confusing ;)
-
@TMNTturtlguy here's my solution:
-
put the launching images in the ROMs dir. Example: the
launching.png
for NES needs to be in$HOME/RetroPie/roms/nes
. It can bepng
orjpg
. -
remove the launching images from the
/opt/retropie/configs/SYSTEM/
directories. -
copy'n'paste the script below and name put it in
$HOME/bin
(or wherever you want).
#!/bin/bash # show-image.sh ############### # get the roms directory for the system (including if it's a custom system) romdir="$(echo "$1" | sed 's|\(.*/RetroPie/roms/[^/]*\).*|\1|')" # check if it has a launching image for ext in png jpg; do image="$romdir/launching.$ext" [[ -f "$image" ]] && break done # if the image exists and there's no fbi running, show the image if [[ -f "$image" ]] && ! pgrep fbi; then # the number after -t is how many seconds the image will be shown fbi -1 -t 4 -noverbose -a "$image" </dev/tty &>/dev/null & fi
- add the following line in your
runcustom.sh
, right belowif-then-fi
structure:
/home/pi/bin/show-image.sh "$1"
- add the following line as the first line of your
/opt/retropie/configs/all/runcommand-onstart.sh
.
/home/pi/bin/show-image.sh "$3"
- Done!
I've made some tests and it seems to be working fine. Let me know if you have success with it.
Cheers!
-
-
@meleu thanks,
I am not at my pi right now to test this, looking at the code I am not sure how this works? It looks like I have to put the launching image in the roms folder, so how do I put a Mario launch, tmnt launch and a mega man launch in the same folder if they are all named launching? I am just reading on my phone so I appologize if this is obvious.
-
@meleu sneak ;)
-
@tmntturtlguy said in Create a custom ES system able to launch games for many systems:
how do I put a Mario launch, tmnt launch and a mega man launch in the same folder if they are all named launching?
If you're following the guide in the OP then each "custom system" has its own folder. Are you using another method?
-
@meleu oh! Got it....I have them, I use a USB for my roms, so the custom systems are in a symlinks folder on my sd card.
-
@tmntturtlguy said in Create a custom ES system able to launch games for many systems:
looking at the code I am not sure how this works?
translating the code to simple English: look for
launching.png
orlaunching.jpg
in the roms folder. If find then show it. -
@meleu yup, I got that part! I just forgot I had all those symlinknfolders in my SD card as they never show up when I look at my roms folder on my usb
-
UPDATE: The method described in the OP became outdated after @pjft implemented custom collections to EmulationStation.
I'll keep the post for historical reasons, but I recommend you to use the ES custom collection feature instead.
Cheers!
-
I just finished setting up my system (again) and (since I prefer this script over the build in custom collection system, because it allows to completely hide systems) used this script again. I ran into some issues and hope you can help me.
-
Nothing major, but in some paths if there is already an
&
in it, it changes to&amp;
. Can easily be fixed by search/replace the new gamelist.xml but I wanted to mention it. -
Because of its age, the fixed
<thumbnail>
tag is not supported. I added it manually with:
thumbnail=$(xmlstarlet sel -t -v \ "/gameList/game[contains(path,\"./$symlink\")][starts-with(thumbnail,'./')]/thumbnail" \ "$temp_gamelist") if [[ -n "$thumbnail" ]]; then thumbnail="$system_dir/$thumbnail" xmlstarlet ed -u \ "/gameList/game[contains(path,\"./$symlink\")][starts-with(thumbnail,'./')]/thumbnail" \ -v "$thumbnail" "$CUSTOM_GAMELIST" > "$temp_gamelist" cat "$temp_gamelist" > "$CUSTOM_GAMELIST" fi
-
Main problem: Is there a way to keep the folder structure for certain systems? In my case, I have sorted my ScummVM games into subfolders according to the used gameengine. Just using the main scummvm folder finds no files.
I tried using setting the paths to the subfolders but I'm not familiar enough to use it with a folder that has a space in it, likeengine engine
. -
Another thing I noticed while trying to use it with scummvm, I get a zero-length error with *.svm files. Is there a way to ignore that? *.svm files are empty and just used to start games without the scummvm gui directly with ES.
-
-
Deleted for repost
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.