I can feel that this will be a slightly long write-up, and I apologize in advance for my future rambling, but I do think the subject matter merits a post in expressing my curiosity, sharing my findings, as well as a petition of sorts for the MuOS devs.
I recently got an RG34XX SP exclusively for playing GBA titles (mostly Rom Hacks) due to its perfect integer screen, flashed the latest MuOS 2508.4, then but found the H700 processor lacking headroom while running more demanding Rom Hacks—my findings on running a few Pokemon hacks here, but TL;DR:
- Demanding GBA Rom Hacks like Pokémon Unbound/Odyssey and FireRed Rocket Edition WILL visually AND audibly stutter with mGBA core on the default [Ondemand] governor (Yes, even during title screen for the first two games, regular traversal for the latter)
- Switching to [Schedutil] or [Conservative] (no need for [Performance]) locks them to a smooth 60fps for the most part (title screen and normal traversal). You get ~85–100fps during fast-forwarding in these demanding Rom Hacks, which is not a lot of overhead and can get eaten up if the visuals get hectic; not to mention a warm device (esp. when charging) and that ~20-40% speedup is not much of a fast forward at all, even for speeding through battle animation and dialogues.
Frustrated, sometime later I came across this older Reddit post https://www.reddit.com/r/ANBERNIC/comments/1fdedje/benchmarking_gba_retroarch_cores_rg35xxsp/ and was intrigued by the [mgba_rumble] core, since it was listed under MuOS GBA Supported Emulators page, even with the same version number as well.
Curious, I went on to test the same titles using the same in-game scenes and power settings.
First, my findings:
[mgba_rumble_libretro.so] seems to have much better performance compared to the regular mGBA core for these Rom Hacks for some reason. 160fps vs 100fps in the same area traversal during fast forwarding in FireRed Rocket Edition.
Even on default [Ondemand] governor: No stuttering/audio crackling in places where the regular mGBA core with default governor repeatedly struggles. (Easy to test: title screen of Pkm. Odyssey, Rocket Edition traversal stuttering is gone, Unbound title screen crackling still exist but much more minimal; Same scenes, same power profile, tested back and forth multiple times.)
For a device like RG34XX SP that’s designed pretty much exclusively for playing GBA games, it makes the whole experience with the console vastly better.
Titles I previously had to tinker to make playable (I find GBA audio crackling extremely unpleasant) is now great out of the box, with a much more usable fast-forwarding function.
This applies to normal, less-demanding GBA titles as well. The device draw less power as it achieves 60fps more efficiently, and presumably producing less heat, with longer battery life. It really unburdens the device’s potential in a big way in multiple aspects.
Delightfully impressed, now for a little bit of a rant:
One thing that worries me is that currently the [mgba_rumble] core is not shipped with MuOS install (at least for the 2508.4 Loose Goose I installed, the first MuOS build I tried).
For something that that enhanced my experience with the device and OS in such a big way, I had to:
First dig deep into the docs and old Reddit posts to find notice its existence, then digging through the menus in Explore->Content Option->Core->Core Downloader->Nintendo Game Boy Advance, then quit out of the menu and find it among the options. There are no documentation specific to the [mgba_rumble] core at all.
All of the above, for one suggestion:
For the amount of difference it made, this really needs to be shipped with the OS Image itself at the very least. >99% of people who use these devices (especially RG34XX and SP devices that are made for GBA) and MuOS will never learn of its existence or get the chance of trying it out. As if more people get to test it and compatibility is not a concern, it really should be set as the default GBA core.
A few questions for the MuOS Devs to satisfy my curiosity, as [mgba_rumble] seems to be a MuOS exclusive (at least I couldn’t find mentions of it anywhere else):
Why are the performance between the two so different? What is [mgba_rumble] (regular mGBA does support ‘rumble’ as far as I can tell), and where did it come from?
For others who see this post who also play more challenging GBA titles and Rom Hacks, or those who just wants to save one some heat and battry life, please give [mgba_rumble] a try; I am really curious for your findings.