Submitted by sudo moderator in freeAsInFreedom
This week's Free Software Application of the Week is mGBA, a MPLv2-licensed Game Boy Advance emulator.
Before I start, I need to make a note about software freedom. This emulator is free software, but in order for it to be useful, it needs to run a Game Boy Advance ROM, which, in all likelihood, will be nonfree. You will be able to run the ROM however you want and distribute copies of it (illegally, but who cares?), but you won't really be able to modify it (unless you're one of those terrifying gods of assembly language). So, if you're committed to only running free software on your computer, then this emulator won't be useful to you without any libre GBA ROMs to run on it. None exist, that I know of.
If you're okay with running nonfree roms, then this is one hell of an emulator.
There have been several GBA emulators over the years. There's NO$GBA, a proprietary emulator written in assembly language (Why? Why do you people hate yourselves?) for Windows. There was VisualBoyAdvance, a really popular (and libre!) one written in C and C++, but it was abandoned in 2004. Several forks of that were created, which eventually merged into VBA-M, which is still being developed today (as is NO$GBA). And, since 2014, we've had mGBA.
Personally, I think mGBA is the best GBA emulator out there. It has a ton of useful features, and it does a damn good job of emulating Game Boy, Game Boy Color, and Game Boy Advance games.
Let's get right to what it can do. mGBA comes in two different flavors - a minimal SDL version, and one with a Qt GUI. I personally prefer the Qt version, because I frequently need to access the menus. mGBA also supports saving to and loading from .sav files. This is pretty much expected of any modern emulator, but I do have memories of playing through Pokemon Emerald on an ancient version of what I think was VisualBoyAdvance (I guess I didn't know about VBA-M) which froze upon trying to save in-game, but would work with save states. I went through the entire game on only save states, but after beating the Elite 4, I was forced to save in-game, which didn't work for that emulator. I had already created a save state right before the champion, and I didn't have any other save states, so I was effectively trapped in that one area, and couldn't proceed to the aftergame. So, at least I'm not stuck with that anymore. Oh, and mGBA also supports save states, if you want to use them.
One amazing feature of mGBA is the ability to create "multiplayer windows." This spawns a second mGBA window, which can load another rom. Once both roms are running, it will be as if they're connected with a GBA link cable. Yes, this does mean you're able to trade Pokemon with yourself to make them evolve. Just be sure to create a separate copy of your rom and save file with a different name to open in the second multiplayer window, so they don't overwrite each other's save files. Also, it's a good idea to keep a copy of your save file in a different folder before doing this, just in case something goes wrong. Multiplayer may not work on the first try, but it should eventually work. Also, mGBA is planning on eventually being able to communicate with the Dolphin emulator to emulate the GameCube - GBA link cable!
Some other useful features are the ability to reset the game (turn it off and on again), pause emulation, and fast forward emulation. This last part can help you if you're on an especially tedious or repetitive part of a certain game. You also have the option to change the frame size. The GBA's original screen resolution was 240x160, which looks tiny on modern screens. mGBA doubles this by default, which I think looks good. You can set it even higher, if you want.
mGBA also lets you take screenshots of the game, record parts as an animated GIF, or even record parts of it as a video (with game audio included). This could be very useful for let's players (people who record themselves playing through games, usually with commentary). You can also change around the key mapping for the GBA (which button corresponds to A, which corresponds to Start, etc.), or even for mGBA's own keyboard shortcuts. mGBA even lets you control the game with a USB controller!
And yes, mGBA does let you use cheats. mGBA supports GameShark, Action Replay, and CodeBreaker cheat codes, so you can use those if you want to. See this post for instructions on how to use them; they're a bit confusing at first. Now, good luck finding a website that sufficiently explains what their cheat codes do! (Personally, I only use cheats to unlock events that happened in real life years ago.)
That's all that I can say about mGBA itself without going over into the games themselves. It's fast, it's accurate, and with the right roms, it'll keep you entertained for months. Get mGBA from here,, get some roms from here,, and enjoy (re)playing some classic games!
Also, one last personal note. I've been swamped in the last few weeks with work, activism, and some personal conflicts, so I just haven't had the free time I used to have to work on the Free Software Application of the Week. I really do want these reviews to be thorough, so that these applications can get the praise they deserve, but at the moment, I can't do that and get them out in a timely fashion without sacrificing something more important. So, unless something changes soon, I'm afraid the Free Software Application of the Week is going to have to become the Free Software Application of the Month. I think that quality is more important than quantity, and that reducing these reviews to one per month will give me the time I need to make them really high quality. So, if that's alright with all of you, I'll see you all next month, for a review of airsonic!
Just wanted to say that these reviews are awesome. Thanks for doing them.