Pi Zero Lagging with GBA emulation
New guy here.
Need some help.
I have been searching up and down the forums, the internet and even YouTube, I don’t seem to pin point how to solve my issue. Been messing with it for 2 weeks.
I have a Pi Zero W connected to a 1080 monitor with proper power supply, and a Bluetooth 8bitdo controller. Has a Noctua 40mm fan full blast with a heatsink. Connected via mini HDMI to DVI Digital.
Have tried everything, from changing video settings, increasing ram allowance to overclocking it to its limits. And more...
GBA games are impossible to play. Only emulation I play.
As soon as any GBA ROM starts, my FPS drop to 17fps from 59fps at the main Retropie menu screen.
It is so sad to see Super Mario at 12fps. Unplayable.
I know beyond doubt that the zero is not thermal throttling because even at 1GHz, it keeps cool at 42C.
So.. I am out of ideas.
Anyone wishes to have a take on this?
quicksilver last edited by
@luisito which emulator are you using?
@quicksilver I am using lr-gpsp but after your comment i tried with lr-mgba and it doesn’t fix anything. 🥺
Also, I unzipped all my ROMs. I heard that lr-gpsp has trouble with ZIPs. But either way unzipped diles read faster.
quicksilver last edited by
@luisito lr-gpsp is less demanding so stick with that one. From what I understand the zero can't handle all GBA games, something like only 60% of the game library plays full speed. Have you thought about getting a pi 3? GBA runs beautifully on my pi 3.
@quicksilver I have been thinking about a full size pi, but other posts expect the pi 4 image until xmas at best. So I don’t know if I should buy a pi 3. 🧐
Does resolution affect overall performance? I am trying to display it on my computer monitor full HD at 27 inches. Will it run better or faster in those mini 3.5 inch displays?
I plugged in my USB to dump some ROMs, and the frame rate went to 5fps and it froze for a solid minute. I am disliking the zero a lot.
Efriim last edited by Efriim
Maybe disable video threading?
settings >> video >> videothreading = off
settings >> drivers >> video = glcore/gl (if available)
settings >> latency >> gpu stuff = off
settings >> framethrottle >> rewind/gsync = off
Initialize with runcommand, to set resolution = CEA 1-4
1ghz should be enough for gba I think???
how about reading from commandline, background processes, I guess you can do that with
@luisito retropie defaults to 640x480 for libretro emulators on pi 0/1, so resolution should not be an issue. also, the physical size of the screen is not a factor, since you can typically run low resolutions on large displays no problem.
@Efriim I have changed all the setting with the exception of runcommand because I can't figure out where it is (I tried the runcommand option from RetroPie but it doesn't show as option in the submenus).
With your proposed changes now I have managed to reach steady 32.7 FP, with the casual drop to 30 FPS.
However, the main RetroPie menu sometimes drop to 12 FPS.
If I access RetroArch within the game it pumps it to 60 FPS, but that is because the emulation gets paused.
Zero still hoovers at a steady 42C at max temperature and 37C when idle.
It definitely help by a lot, so thanks!! :D
Still looks funny and feels slow but now it is playable.
However, I still don't understand why the FPS are so low. A lot of people manage 60 FPS without a sweat with GBA games.
And now, I am not sure what I did, changed or broke, but it seems that Hotkey (Select) + Right Shoulder, doesn't save state anymore.
for libretro emulators on pi 0/1, so resolution should not be an issue. also, the physical size of the screen is not a factor, since you can typically run low resolutions on large displays no problem.
Thanks! I was under the impression that the GPU would have to squish more out for larger screens to achieve the desired scale.
@luisito i think it sounds to me like you've changed some settings in your tweaking, or perhaps weren't running from stock retropie in the first place. i would personally start from a fresh retropie standard image, no overclocking, and then see what it's like from there. once you've changed settings it's almost impossible to diagnose
@dankcushions Sure, I will do that.
There is a new image right?
I will report after doing all that. Perhaps during the weekend if time allows 😁
Efriim last edited by Efriim
Or you could upload your settings and I can run a diff on them to highlight all the changes.
Or delete the settings which should give you a new one, provided the overrides are also deleted.
Were you able to try
htopfrom ssh commandline?
upload large text files to pastebin.com
I will edit the post above about runcommand.
Since you got positive results if it wasn't just a fluke, you could try disabling a few more things
settings >> drivers >> audio = alsathread
settings >> video >> vertical sync = off
settings >> video >> frame delay = 0 (alternative to turning the vsync off, maybe try a quick compare of value 7 and 15 just to see, then turn off vsync)
settings >> latency >> run-ahead = off
settings >> user interface >> threaded tasks = off (Haven't had to use this before.)
settings >> user interface >> appearance >> icon shadows = off
Or delete the settings which should give you a new one, provided the overrides are also deleted
no, this will give you retroarch defaults which are not retropie defaults, and will give you a whole new set of problems.
i really wouldn't recommend changing any of the settings you are recommending. retropie will default to the right settings for all of these.
Thanks a lot! everybody. Things are improving so I think we are on the right track and your help is moving things forward.
Have a lot of responsibilities for the next 4 days.So I will post again next week.
But for the meantime I ran a very quick thop and hop, and the system is 97%m idle, nothing in the background eating power. Even the ram sits at 10% of maximum.
Solid One last edited by
Try gpsp's non-retroarch version. With this version, you'll probably have less lag on GBA games, since it consumes less resources than the default retroarch version.
I've tested this version on a Raspberry Pi 1 B+, and I remember playing some GBA games without lag. It was on 2015, and back then, if my memory serves, there was no lr-gpsp yet.
I don't know if it'll work on your Pi Zero, but assuming Pi Zero and Pi 1 has approximately the same hardware, there's the chance that it can work.