A rather ambitious goal I've had for a few years is to systematically evaluate and compare different GBA emulators for speedrunning and create evidence-based recommendations about their usage. A secondary goal has been to diagnose the specific causes of accuracy issues, particularly in mGBA and hopefully provide viable recommendations for fixing them.
I was reminded of this today (August 14, 2025), when I was looking at this recent issue on mGBA's issue tracker.
I've personally tested a number of games via comparison between mGBA and GBAHawk. More broadly, Alyosha has done their own extensive work testing and console-verifying GBA games. I'd really like to test more but I've been busy with other stuff in my life for the last few months, so this project has been put on the backburner for the time being.
This is mostly real-time speedrun focused, but these issues also impact TASes in a similar way. TASes also provide an avenue for a specific type of relevant testing (compared to more generic GBA accuracy tests).
But anyway, here's some thoughts.
- 1) mGBA's lag inaccuracy has consequences for mGBA and GBA speedrunning. mGBA is more performant and supports a greater variety of features than some of the accuracy-focused GBA emulators, but the lag difference can be quite significant for games with any lag whatsoever.
- 2) Speedrunning in other emulators: NanoBoyAdvance is a solid option for speedrunning (especially after input dropping was fixed in 1.8.0); it still has some lag edge cases where it will have less lag than real console, but it's much better than mGBA. SkyEmu is in a comparable state. GBAHawk is more accurate than both and what I've used to get (hopefully) perfect frame-by-frame accuracy for my main GBA speedgame, but it's hard to recommend in general because it's not optimized for performance. I haven't tested Mesen's new GBA core, but I've heard good things about its rate of progress and accuracy.
- 3) Testing notes: mGBA and GBAHawk can be tested more easily than other emulators currently because they have input recording capabilities (BizHawk has an mGBA core, so it can record input). For a decent number of games, adding or deleting blank inputs from a base set of inputs can directly showing the difference between emulators. Other games have RNG that depends on more exact timing (be it via subframe behavior, global frame count, or other shenanigans), so this comparison can't be done as directly. This has some outdated notes and examples of my testing; much of my testing was only partially finished and never got a formal synopsis there, and a goal of mine is to make my testing transparently reproducible for others.
- 4) Note for speedrunners: try and test your specific game! The impact of this will vary depending on the game. With some creativity, you can probably make a test that compares your game's timing in a particular aspect to real console, which could provide insights. To be fair, it's also understandably hard to create completely precise, accurate, and thorough tests for games (hence one reason I'd like to work on this more!)
- 5) Variance between games: some games like DK: King of Swing have no lag and minimal loading time differences, so have no particular issue. Some games probably still have timing accuracy issues even in GBAHawk. GBAHawk is still a nice standard because so many games have been console-verified (which does not guarantee GBAHawk emulates that game perfectly in all cases, but at least shows parity between GBAHawk and real console for a particular input recording of that game, which is usually a good sign for the accuracy of that game's emulation in GBAHawk.)