I've been running Batocera 37, but have had a few problems with MAME / vector-based games that I've been chasing down for a bit. I have been waiting for the quarterly update to Batocera 38 to drop (usually around mid-September), but haven't seen either the update or any blog/website/etc updates regarding it's anticipated availability, so I decided to change to the "Beta" version/channel and do some testing.
Once I upgraded (current version shows as "38c-dev-b9ddf2cd68 2023/09/21 13:15"), I noticed that the basic functionality of Pixelcade was no longer working like before. The initial bootup seems fine, with the default Pixelcade logo being replaced successfully by the Batocera logo. However, navigating from system to system is showing a scrolling text with the system name, instead of the designated image file being shown. For example, instead of the Favorites.png file being shown, a scrolling text of the word "Favorites" scrolls by. Here is a snippet of the log to show what is happening...I think some of the parameter formats in the lower-level system calls may be changing (or, there is a Batocera bug injected somewhere?):
time="2023-09-23 21:28:48.486" level=info msg="[Close] closing Pixelcade device" time="2023-09-23 21:28:48.535" level=info msg="[Close] pixelcade device closed" time="2023-09-23 21:28:48.535" level=info msg="Initializing Pixelcade: /dev/ttyACM0\n" time="2023-09-23 21:28:48.535" level=warning msg="Reading from Pixelcade returned code 11: Resource temporarily unavailable . Retrying in 1 seconds...\n" time="2023-09-23 21:28:49.535" level=info msg="Established connection to /dev/ttyACM0\n" time="2023-09-23 21:28:49.535" level=info msg="IOIO Magic: \"IOIO\"\n" time="2023-09-23 21:28:49.535" level=info msg="Hardware ID: \"PIXL0025\"\n" time="2023-09-23 21:28:49.535" level=info msg="Bootloader ID: \"IOIO0401\"\n" time="2023-09-23 21:28:49.535" level=info msg="Firmware ID: \"PIXLC011\"\n" time="2023-09-23 21:28:49.535" level=info msg="Description: \"Pixelcade 128x32 (with swapped green and blue channels)\"\n" time="2023-09-23 21:28:49.535" level=info msg="Startup Image found: /userdata/system/pixelcade/system/batocera.png\n" time="2023-09-23 21:28:49.535" level=info msg="Pixelweb listener starting..." time="2023-09-23 21:28:49.535" level=info msg="Available at the following addresses:" time="2023-09-23 21:28:49.535" level=info msg=" http://localhost:8080\ n" time="2023-09-23 21:28:49.535" level=info msg=" http://127.0.0.1:8080\ n" time="2023-09-23 21:28:49.535" level=info msg="Sending Image: (Image: batocera.png)\n" time="2023-09-23 21:28:49.535" level=info msg=" http://::1:8080\ n" time="2023-09-23 21:28:49.535" level=info msg=" http://192.168.254.12:8080\ n" time="2023-09-23 21:28:49.535" level=info msg=" http://fe80::16ab:c5ff:feee:4963:8080\ n" time="2023-09-23 21:29:02.959" level=info msg="Received request for console stream Console: favorites\n" time="2023-09-23 21:29:02.963" level=info msg="Found PNG: /userdata/system/pixelcade/console/favorites.png\n" time="2023-09-23 21:29:02.963" level=info msg="Sending Image: (Image: favorites.png)\n" time="2023-09-23 21:29:02.973" level=info msg="Received request for console stream Console: favorites\n" time="2023-09-23 21:29:02.974" level=info msg="Found PNG: /userdata/system/pixelcade/console/favorites.png\n" time="2023-09-23 21:29:02.974" level=info msg="Sending Image: (Image: favorites.png)\n" time="2023-09-23 21:29:02.985" level=info msg="Received request for text: Text: \"favorites\"\n" time="2023-09-23 21:29:02.985" level=info msg="Displaying Text: favorites\n" time="2023-09-23 21:29:02.995" level=info msg="Received request for text: Text: \"favorites\"\n" time="2023-09-23 21:29:02.995" level=info msg="Displaying Text: favorites\n" time="2023-09-23 21:29:09.170" level=info msg="Received request for console stream Console: all\n" time="2023-09-23 21:29:09.171" level=info msg="Found PNG: /userdata/system/pixelcade/console/all.png\n" time="2023-09-23 21:29:09.171" level=info msg="Sending Image: (Image: all.png)\n" time="2023-09-23 21:29:09.197" level=info msg="Received request for text: Text: \"all games\"\n" time="2023-09-23 21:29:09.197" level=info msg="Displaying Text: all games\n" time="2023-09-23 21:29:17.699" level=info msg="Received request for console stream Console: wswanc\n" time="2023-09-23 21:29:17.700" level=info msg="Found PNG: /userdata/system/pixelcade/console/wswanc.png\n" time="2023-09-23 21:29:17.700" level=info msg="Sending Image: (Image: default-wswanc.png)\n" time="2023-09-23 21:29:17.723" level=info msg="Received request for text: Text: \"WonderSwan Color\"\n" time="2023-09-23 21:29:17.723" level=info msg="Displaying Text: WonderSwan Color\n" time="2023-09-23 21:29:54.151" level=info msg="Received request for console stream Console: all\n" time="2023-09-23 21:29:54.152" level=info msg="Found PNG: /userdata/system/pixelcade/console/all.png\n" time="2023-09-23 21:29:54.152" level=info msg="Sending Image: (Image: all.png)\n" time="2023-09-23 21:29:54.180" level=info msg="Received request for text: Text: \"all games\"\n" time="2023-09-23 21:29:54.180" level=info msg="Displaying Text: all games\n" time="2023-09-23 21:29:54.699" level=info msg="Received request for console stream Console: favorites\n" time="2023-09-23 21:29:54.699" level=info msg="Found PNG: /userdata/system/pixelcade/console/favorites.png\n" time="2023-09-23 21:29:54.727" level=info msg="Received request for text: Text: \"favorites\"\n" time="2023-09-23 21:29:56.728" level=info msg="Received request for arcade stream: blank screen" time="2023-09-23 21:29:58.061" level=info msg="Received request for arcade stream: blank screen" time="2023-09-23 21:30:58.313" level=info msg="Received request for arcade stream: blank screen"
Also, after a short amount of time (a minute or less?), even the text scrolling is not happening. The DMD just shows the Pixelcade image, and it stays that way. I coded a controller button to load up the blank screen using:
curl -s "http://127.0.0.1:8080/arcade/stream/black/dummy" >> /dev/null 2>/dev/null &
The log file shows this happening, but the Pixelcade DMD just continues showing the Pixelcade logo. Is a new firmware update required for Batocera 38? Or, do I have to re-run the install script? If so, do I have to worry about backing up any config / files / etc beforehand? Thanks in advance.
Quick update: I reverted back to V37...the good news is that Pixelcade started working normally again. So, it seems that something changed with how parameters are being passed in the V38 code. I imagine anyone could recreate the issue just by standing up a basic V38 install.
The bad news is that MAME under Batocera V37 still has the issue with vector-based games, but updating to V38 resolved that issue. My hope is that the 'problem' with Pixelcade in V38 can be figured out fairly easily, and then I'd be able to upgrade and have both vector games and Pixelcade working.
Hey Danno, sorry was out and missed this earlier. You need to re-run the installer for V38 as we made some changes with the Batocera team and Pixelcade on V38. Also note with V38, the retroachievements feature https://youtu.be/PIQy5KJtqpc?si=yMZYcT6HHtl8-gf0&t=86
Thanks for confirming the install script has changed for V38 - I had seen some of your recent install script updates within the pixelcade-linux-builds repository, but again wasn't sure because I haven't seen anything at all from Batocera regarding V38 being released. After further investigation, I have found a somewhat-decent workaround with the current V37 (MAME 0.253) setup by tweaking the graphics rendering settings in ES for MAME (basically forcing BGFX with Vulkan backend), and now I can at least get the bullets in Tempest, Asteroids, etc. to actually be visible again.
I'm tempted to leave things as-is with V37 for now, but have a few questions:
1. Can the Pixelcade (Batocera) setup script be re-run with V37, so I'll be prepared once V38 is released as the "stable" version? Or, do I have to wait to upgrade to V38 to re-run the Pixelcade script?
2. Do you have any insider info from the Batocera team about when V38 will be released?
Thanks again.
The script will specifically look for V38 and if on V38, it removes pixelweb from custom.sh, see here specifically
https://github.com/alinke/pixelcade-linux-builds/blob/main/install-scripts/setup-batocera.sh#L317-L323
This is because with Batocera V38, the developers added auto-detection support so pixelweb will start automatically when pixelcade is USB connected and also stop automatically when pixelweb is USB disconnected.
So just re-run whenever you get around to V38 and you'll be fine
I know there is a lot of activity happening on V38 but don't have any insider info there, you can always check the Batocera Discord and ask, lots of info there
I use Discord begrudgingly. I just looked and saw nothing mentioned, and got a bunch of attitude when I posted politely asking for an update. I did some testing with V38 Beta early on (for fixes to bugs I reported), but I can't switch back-and-forth anymore with the new dependency for the Pixelcade script/code changes. Guess I'll be in a holding pattern with V37 for a while.
BTW - was there some sort of interface change with V38 Beta that caused the Return characters ("\n") to interfere with Pixelcade's processing? I'm guessing that was part of the code change you had to contend with, along with removal of Pixelweb (and adding the Retroachievements support...still planning to check that out!).
EDIT - I went to sign up for Retroachievements today, and found ( https://docs.libretro.com/guides/retroachievements/#cores-compatibility) that there is no support for MAME, and 'support is not likely to ever be possible.' Most of the games I play are in MAME (or Steam), so I guess I'll have to reserve all of my bragging rights for whomever comes over to play in person!
not sure on this one
BTW - was there some sort of interface change with V38 Beta that caused the Return characters ("\n") to interfere with Pixelcade's processing?
can you add some details there?
See the Pixelcade log excerpt I included in the original post. Again, this was without having re-run the install script.
The images were no longer displaying (although, I think I did notice the images for just a fraction of a second before the scrolling text started??), but were resulting in scrolling text instead. I'm not as familiar with the Github code for Batocera, but in my other programming experience "\n" usually represents a newline ( https://en.wikipedia.org/wiki/Newline) character, and I was just wondering if that was part of what you had to address with coding changes for V38. The "\n" does not show in the Pixelcade log output for V37, and that's why it seemed to be involved with causing the issue (scrolling text vs. actual image).
you definitely have the re-run the script to get Pixelcade to work with V38, that is for sure the issue. I'm not sure about the \n but it's working fine on my end with V38
Will this add usb support for PixelLCD?
no, that is a separate thing
Appreciate the reply, and I am clear on the need to re-run the Pixelcade Batocera script for V38. But, if you didn't have to explicitly change code for the format of arguments being passed with the different events (system-selected, game-selected, etc), then it's a bit mysterious how the issue (newline / scrolling-text-replacing-image) would be resolved with re-running the script. I have encountered a healthy number of issues (most I am confident are bugs) with the Batocera V38 code that persuaded me to revert back to V37 (current stable) and, as I mentioned, my plan is to wait for V38 to be made available to the Stable branch before I might venture to try again. I know things are working fine on your end for V38 Beta, but the version I tried that generated the log above (shown in the original post) was from 9/21. Apparently, the V38 code wasn''t ready to deploy in September as normally has happened with the 3rd quarter release.
Anyway, at this point, I am planning to wait for V38 to be available as the Stable release, and might even wait a week or so just to make sure it is really stable before updating Batocera. Then, I'll make sure I re-run the Pixelcade script and see how things run after that. 🤞
I don't think there is an issue there as it wouldn't have worked on my end during my testing of the V38 beta, I worked directly with the Batacera dev team on this release. But will find some time to test with the latest to be sure, thanks for reporting.
also note that if you may have been on the older Java version of pixelweb prior which did have a different log file output format than this current version which is a re-write based on the Go language
Again, I hadn't re-run the Pixelcade script. I just upgraded / downgraded Batocera in order to test code fixes for some of the bugs I reported to the Batocera team. I hadn't paid extremely close attention, since I was more focused on the Batocera issues, but I believe Pixelcade ran correctly (and, had identical log entries to V37) when running V38 Beta / Butterfly, at least until somewhat recently.
It's just a guess, but it seems the Batocera team is either having more difficulty than usual getting the quarterly Stable update ready for release, or they are taking some extra time to try and close out more pending fixes before cutting the Stable (v38) release. I am both eager and wary to try it out.....