mGBA
Latest Release: 0.10.3
Latest Development Version: 8596-cfd30b7a9
-
mGBA 0.6 beta 1
Jun 29, 2017
Read moremGBA 0.6.0 has been long delayed. It’s dense with new features and unfortunately not all of those features are hugely well-tested. However, it’s almost ready for release. Before a stable release, more comprehensive testing is needed. In the getting out what’s already working and promoting testing, mGBA 0.6 beta 1 is now available. The final release of mGBA 0.6.0 should be out within a few weeks.
-
"Holy Grail" Bugs in Emulation, Part 1
May 29, 2017
Read moreWhen developing a video game emulator the goal is to run software for that system on different hardware than the original. Further, the goal of an accurate video game emulator is to run every piece software for that system perfectly—or at least as close an approximation as possible. A decent emulator can be developed working from documentation of how a system behaves when running software. For the Game Boy Advance and Nintendo DS, such documentation is GBATEK; for the Game Boy, the GBDev wiki is invaluable.
Many of these document only say what will happen when the software is well-behaved. Software and hardware generally have a defined set of behaviors which, when given valid inputs, will (barring bugs) have well-defined outputs. For invalid inputs, documents often either say not to do that, or they don’t even mention them. But inevitably some software will do things that documents won’t talk about.
There is the concept of Garbage In, Garbage Out where if the input is not valid, the output is not well defined. In such cases software may become buggy and act unpredictably; however, for perfect compatibility, emulators must maintain bug-for-bug compatibility with the original system. While some sources document the “garbage-out” from invalid inputs, this information is often sparse and can be full of errata or missing edge cases.
The actual debugging to discover these edge cases can be grueling. Yet even after days or weeks of research into just a single bug at a time, there are many bugs that are still incomprehensible and unsolved to the most seasoned of developers. Due to the extreme difficulty of tracking down and solving these issues I like to refer to them as Holy Grail bugs.
-
Emulation Accuracy, Speed, and Optimization
Apr 30, 2017
Read moreA commonly discussed topic in emulation is the “accuracy” of an emulator. The term means how close the emulation is to the behavior of the original hardware. However, there is a significant amount of complexity hidden behind this simple term. There is no simple metric for what makes an emulator “accurate”. Accuracy in emulators is thought to mean it’s slower, but has fewer bugs. Less accurate emulators are often said to be faster and “good enough” for most games. While there is a kernel of truth to these claims, there is far more to the reality of the matter.
-
medusa alpha 2
Apr 26, 2017
Read moreA new alpha of medusa is available. It contains many bugfixes, and allows many major games to be fully playable now. Notably, game-breaking bugs affecting Mario Kart DS, The World Ends With You, Star Fox Command, and more have been fixed. Some smaller hardware features have been added, but many are still missing. The full list of changes is below.
-
A Taste of mGBA 2.0
Apr 8, 2017
Read moreIt’s been teased, it’s been joked about. No one could quite tell if the April 1 article was a joke or not. Well, allow me to formally announce to you: it’s real. Every single word was true. I’ve been working tirelessly for the past several months to bring a DS emulator up to a good enough point to release a preview build. And today, I think I’m there. So allow me to introduce another new Nintendo DS emulator: with added DS support, mGBA will now be medusa.
-
A Preview of mGBA 2.0
Apr 1, 2017
Read moreToday I’m proud to give you a sneak peek of some of the features I have planned for mGBA 2.0. There’s big stuff on the horizon. You might be asking, wait, mGBA 1.0 isn’t even out yet. Are you honestly skipping 1.0 and going straight to 2.0? Skipping major version numbers is all the rage these days. But, no. mGBA 1.0 will still come out, probably sometime late this year. I’ve been hard at work on a gigantic feature that won’t be ready for mGBA 1.0. I’ve been keeping it under wraps for quite a long time, and I’m now finally ready to share.
-
mGBA 0.5.2
Dec 31, 2016
Read moreA new release of mGBA, version 0.5.2, is available. This version is a bugfix release, which contains many stability and accuracy fixes. An extensive list of changes follows after the cut.
-
mGBA 0.5.1
Oct 5, 2016
Read moreA new release of mGBA, version 0.5.1, is available. This version is a bugfix release, which fixes many issues that weren’t caught before the release of 0.5.0. An extensive list of changes follows after the cut.
-
mGBA 0.5.0
Sep 19, 2016
Read moreAfter a long dry spell, a new release of mGBA, version 0.5.0, is available. This is a major feature release, and includes, among other features, Game Boy and Game Boy Color support. There are other enhancements and bugfixes across the board, and an extensive list follows after the cut.
Furthermore, if you enjoy using mGBA and wish to give back, there is now a list of ways to donate on the donations page, including the newly launched mGBA Patreon.
-
The Importance of Fuzzing…Emulators?
Sep 13, 2016
Anyone familiar with computer security should be familiar with the concept of fuzzing. You throw garbage data at a program, over and over again, to see if it crashes. If it does, you might have a security issue. It’s a great way to do automated security testing of software, and has uncovered countless critical issues in software across the board. A popular fuzzing framework, American Fuzzy Lop (usually called afl or afl-fuzz for short), even has a “trophy case” for only a small percentage of the bugs it has uncovered—and there are over 150 bugs listed!
Although usually not very intelligent, and limited in the scope of the bugs it can find, fuzzing is a common and effective practice for finding security bugs in software that is complex enough for issues to not be immediately obvious upon source inspection. Being a stochastic process, fuzzing can take a lot of time and careful selection of input cases (for mutational fuzzers) to produce good results. Conversely, it can also be left running processing as a background task for weeks or months with little interaction. As such, fuzzing is often employed in commonly deployed libraries such as libPNG, and widely used software such as Flash. A myriad of different projects use fuzzing to help find bugs, especially as software security comes more to the forefront of engineers’ minds.
Subscribe via RSS