EmulationStation fails to launch after update on Pi4
-
So i installed the latest RetroPie software on my Pi4, using the image from the site, on a new SD Card. Got it up and running, loaded some roms, etc. that I had scraped using ARRM so I could have images, box-art, videos, etc. Then I installed IMP for background music and the Bezel Project for those 4:3 emus. Things were great! Played some games, had a blast!
Then disaster...
I decided that I want to make sure everything was updated, so updated the install script and told it to update...after updated some of RetroPie. It asked if I wanted to update the underlying RaspberryOS. I said, sure! Why not?
Now I get this...
emulationstation: /home/pi/RetroPie-Setup/tmp/build/emulationstation/es-app/src/FileData.cpp:218: void FileData::addChild(FileData*): Assertion `mType == FOLDER' failed. Aborted
...and a blinking cursor!
I've seen some mention of modifying gamelist.xml to get it working again, but I just plain removed those rom directories that had any content and restarted emulationstation. Same error...I've searched and googled and nothing comes up. Has anyone else encountered this issue?
-
Run
emulationstation --debug
and see where ES stops, it should show on you which system the error occurs. Post the gamelist for that system on pastebin.com. -
@mitu I had already used
--debug
, but I really don't understand what I am looking for in~/.emulationstation/gamelists/retropie/gamelist.xml
Here is the pastebin of the gamelist.xml that ES is failing on. The offending block of XML is related to the IMP background music player developed by @RapidEdwin08.
I will post this in his initial topic to document this there as well, but this was working just fine prior to updating the underlying OS, so I wanted to know if there is some sort of discontinuity going on that others may have encountered...
-
I don't think an OS update is responsible for this issue.
More likely the entries added by the music player are not compatible with ES's gamelist. For instance, the following entry might be the issue:<game> <path>./imp</path> <name>Music Player</name> <desc>[IMP] Integrated Music Player.</desc> <image>./icons/imp.png</image> </game>
-
@mitu, normally I might agree... but this is working just fine on another Pi4 just fine with a stock install (only loaded the IMP music player) and I have not updated that one like I did this one.
That said, I will compare the two
gamelist.xml
files. -
-
@cdaters EmulationStation has been updated last year, from the default version that came with the 4.7.1 image. Compare the versions between the 2 installations and see if they're the same.
-
@mitu said in EmulationStation fails to launch after update on Pi4:
I don't think an OS update is responsible for this issue.
More likely the entries added by the music player are not compatible with ES's gamelist. For instance, the following entry might be the issue:<game> <path>./imp</path> <name>Music Player</name> <desc>[IMP] Integrated Music Player.</desc> <image>./icons/imp.png</image> </game>
@mitu Thanks for the input.
I think the problem might be HTML character codes (or lack there of)...
The RetroPie update might have struggled to parse the [gamelist.xml] correctly because of special characters that were neglected to be input in HTMLCode/NameCode.
example: ( i had to put a SPACE ; for Demo since THIS is HTMLCode)
[IMP]
[ ; IMP ] ;<< Previous Track
< ; < ; Previous TrackI will try to update the [gamelist.xml] with HTMLCode and test updating RetroPie.
-
@rapidedwin08 said in EmulationStation fails to launch after update on Pi4:
I think the problem might be HTML character codes (or lack there of)...
No, it's not that (and you're probably thinking about XML character entities). The XML is correct, it's the folder metadata that's not supported in gamelists.
-
@mitu said in EmulationStation fails to launch after update on Pi4:
No, it's not that ... it's the folder metadata that's not supported in gamelists.
Ah 0K, so it's this info?:
<playcount>1</playcount> <lastplayed>20220219T201836</lastplayed>
If so, I can work around this...
-
@rapidedwin08 said in EmulationStation fails to launch after update on Pi4:
Ah 0K, so it's this info?:
No, I was referring to the fact that the gamelist contains a
game
entry for a folder, which is not correct, since it's not a file and it doesn't have one of the supported extension for theretropiemenu
system (sh
orrp
). -
@mitu said in EmulationStation fails to launch after update on Pi4:
No, I was referring to the fact that the gamelist contains a
game
entry for a folder, which is not correct, since it's not a file and it doesn't have one of the supported extension for theretropiemenu
system (sh
orrp
).This got me thinking about the [es_systems].
Did the RetroPie Update remove/replace those .mp3 extensions added by IMP from [es_systems.cfg]?@cdaters If ES is still failing to Launch, can you check your [es_systems.cfg] ?
cat /etc/emulationstation/es_systems.cfg
And Check the RetroPie System extension Section for .mp3?
<system> <name>retropie</name> <fullname>RetroPie</fullname> <path>/home/pi/RetroPie/retropiemenu</path> <extension>.rp .sh .mp3 .MP3 .pls .PLS .m3u .M3U</extension>
Either way, safe to say that [IMP] is the culprit here for issues after RetroPie update.
-
@rapidedwin08, that is what I love about comminities like this...I was tired last night, it was late, so I added my last comment or two and went to bed. I wake up this morning and boom! SOLVED!
Well, I am back up and running anyway, lol! Your suggestion did the trick! The
es_systems.cfg
was missing the mp3 entries in the<extension>
element for the<system>
attribute for RetroPie just like you had surmised!After I replaced the missing extensions and restored my
gamelist.xml
file that was causing the problem, RetroPie/EmulationStation fired right back up!Thank you!
-
@rapidedwin08 said in EmulationStation fails to launch after update on Pi4:
Either way, safe to say that [IMP] is the culprit here for issues after RetroPie update.
Any update for a system (
retropiemenu
in this case) will restore the default extensions for that system. Don't modify/etc/emulationstation/es_systems.cfg
with your edits, this is a file maintained by the RetroPie-Setup scripts.
If you wish to add more extensions to a system, the proper way is to add your ownplatforms.cfg
(see here), howeverretropiemenu
is not a regular system so it doesn't apply to it. You can create your ownes_systems.cfg
, which is not going to be modified by RetroPie-Setup on installs or upgrades, but you'll have to maintain it yourself - see here. -
@mitu, could you provide a little clarification on this? I have looked at the documentation for both
es_systems.cfg
andplatforms.cfg
and I have a couple of questions where I am thinking a little more broadly as I am building out my RPi4.es_systems.cfg
So the documentation that you pointed out above instructs one to copy the maines_systems.cfg
file into~/.emulationstation/es_systems.cfg
as a custom, manually maintained file.But then in the documentation for adding a new system to ES, it recommends making a copy of this file into the
/opt/retropie/configs/all/emulationstation
folder.Are these two different methods of acheiving the same end result for a new system, or is there some disparity in the documentation and the
es_systems.cfg edits
documentation you referenced above is the correct methodology?platforms.cfg
The documentation says nothing about copying the existing main file to/opt/retropie/configs/all/platforms.cfg
, like it did withes_systems.cfg
but to create one instead, at that location. Is it enough to only list those systems to be overridden (as in the example on that page), or does it need to contain all of them (thereby prompting one to copy over the exiting main file to edit)? -
@cdaters said in EmulationStation fails to launch after update on Pi4:
Are these two different methods of acheiving the same end result for a new system, or is there some disparity in the documentation and the es_systems.cfg edits documentation you referenced above is the correct methodology?
~/.emulationstation/
is a symlink to/opt/retropie/configs/all/emulationstation
, so it's the same location.platforms.cfg
The documentation says nothing about copying the existing main file to /opt/retropie/configs/all/platforms.cfg, but create to one instead, at that location. Is it enough to only list those systems to be overridden (as in the example on that page), or does it need to contain all of them (thereby prompting one to copy over the exiting main file to edit)?As the docs says, you need to add just the system you want to override.
-
Thank you @mitu!
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.