mGBA | Game Boy Emulation on Linux

I have received quite the number of comments about emulating the Game Boy on modern hardware and all the work that is going into it. I learned so much about the extensive community around emulating Game Boy games and the technology, research and absolute passion that goes into it. Though I was given many suggestions, the one that I settled on trying was mGBA. It appears that the latest version in the openSUSE repositories and on Flathub is 0.8.3, although, there seems to be a bit of discrepancy on what the change log says vs what the application itself says… not big deal. The latest release as of today is 0.8.4 which is available from the Snap Store. Since I am not emulating any of the more difficult games, the changes between the versions won’t likely affect my usage.

I do recommend checking out this Gameboy Emulator Shootout Matrix from here. I will get to some more of these at some point but considering what is widely available, and I see that it is in the middle of the pack on the tests, this was a good place to start. I would also be interested in more feedback here, what should I try next and what should I specifically check out between the emulators.

Installation

There are three options I have available to me to install mGBA on openSUSE. RPM packages for openSUSE from the Open Build Service, Flatpak from the main Flathub repository and the Snap Package, curated by the globally loved and appreciated Alan Pope.

RPM

Although I have installed them all, my chosen method for my openSUSE Tumbleweed machine is using the Open Build Service. I am going with the Tumbleweed tailored RPM package from the Emulators Experimental Package from here:

https://software.opensuse.org/package/mgba

My main reason for this method is that I already have the Emulators repository configured for my system and I know that it will fall in line with my desktop theme. mGBA is a Qt based application and therefore works well and integrates nicely with my openSUSE Breeze Dark Theme.

Flathub

The second method available to me is through Flathub. You have the ability to navigate to the Flathub site or use Discover on the Plasma Desktop, assuming you have it configured already. Either way, this version works well from my very limited testing.

https://www.flathub.org/apps/details/io.mgba.mGBA

Snap Package

The third method available to me is to install the Snap package that is curated by Alan Pope. He is one of the many great contributors to not just Snapcraft but the whole Linux ecosystem. This application functionally works well in openSUSE with the only issue being the Snap doesn’t follow my Qt theme, which is actually expected considering it hasn’t been “Snapped” up yet.

https://snapcraft.io/mgba

Set Up

There was, quite literally, nothing to do here but set the keyboard input to my liking. Since this HP EliteBook I am using doesn’t have what I would consider good cursor keys, I have, instead, chosen to use the “WASD” layout for movement and the right hand for the rest of the buttons. This works for me, for now.

I am not sure I am real attached to the Select and Start assignment of Backspace and Return, respectively but I am going with it for now. I think I may have had a better setup on VisualBoy Advance but the keyboard was also different for the machine for which I was using it on.

The default for the Snap Package had this for the default.

Games Played

Much like I did with VisualBoy Advance I played the few ROMs I keep on my local drive. I suppose I should expand my horizons with gameplay but here I am. I like what I like so I will rehash those same games. The games I tested were “Pokémon Red,” “Super Mario Land,” and “The Legend of Zelda – Links Awakening.”

Super Mario Land

Not much to report here. It works as expected, everyone that has had a Game Boy has played this and it doesn’t push the emulator to its limits. The game scrolls nice and smooth as you would expect the game to do. The colors are what you would expect the Game Boy Color to provide to you. It is all around a satisfactory experience. I do think that using a controller is far better than the keyboard but of course, personal preference on that one.

The Legend of Zelda – Links Awakening

I didn’t get far with this at all. I find the game a bit… involved and since I don’t have the attention-span for more than one adventure stye of game, I only dabbled with this a bit. I do think the intro screen, even for today, is just great to look at. The pixel art is well done, the charm in the sound effects and the game play is also absolutely top notch.

Pokémon Red

This worked quite nicely on mGBA. Not a whole lot of time was play on it, just progressing a bit in hopes of one day actually beating the game so I can move onto the next game. The emulator does seem to run nice and buttery smooth which I would evaluate to be a bit better than Visualboy Advance.

Most of my time on mGBA was spent here. I can’t say that the experience is any worse than actual hardware and my preferred actual hardware is the Super Game Boy on the SNES. The benefit here is that the play is more portable as I always have a laptop with me and not a Game Boy or SNES.

Interesting Features

Force Integer Scaling

Actual Size after you trim off that boarder, so pretty dang small.

This is an interesting feature in that it essentially forces exact pixel reproduction. So, there is no partial pixels or strange scaling artifacts. To be fair, for my untrained eye on a 14″ 1080p screen, this isn’t what I would consider necessary since you are scaling a 160 × 144 screen for Game Boy and Game Boy Color. Game Boy Advance has 240×160 which is still pretty small. The scaling on a modern screen is not going to be as much of an issue. None the less, you may have some uses for this and it is, indeed, interesting. If you personally have any uses for this, please leave a comment below, send an email, or Telegram message. I would be interested in knowing.

Bilinear Filtering

This is a nice feature in that it softens the appearance of the display. If you don’t like the harsh, sharp pixel edges and would like to have something closer to the feel of playing on an old CRT or maybe the harsh lines just don’t suit you, this is a fine option. I am back and forth on this. I find it interesting but the removal of it wouldn’t leave me at a loss.

Sprites

There is a very interesting utility in mGBA that allows you to look at all the sprite tiles. What makes this cool is the ability to see how the the images are stored in the game. You can brows by address and see all the bits and so forth. I found myself rather intrigued with this utility and my curiosity has me exploring other games to see how they break down the sprite tiles.

There are other features that I do think are interesting but these would be my top choices. Feel free to dig further into the settings to adjust some of the other enhancements. I have left my Audio driver to be SDL and my Display Driver at OpenGL. I don’t have any lagging, audio out-of-sync presentation, or flickering affecting my enjoyment of playing any games. My general modus operandi is to leave things as they are and only tweak the settings I don’t like.

What I Like

This is a very well built, designed and highly functional Game Boy emulator. The features are what I need and even gives me more things to play with and dig into the games themselves. The filtering and exact, pixel scaling is nice to have, interesting but for my purposes, a nice to have. I do like that this is an RPM that I can install on any openSUSE system, so long as I add the “Emulators” repository.

The game play is great. I like that I can keep the game in windowed mode or go full screen when I don’t have to pay attention to the more important things. Though, I have demonstrated all the interactions with the games showing the window boarder, that can easily be hidden or not seen at all in full screen mode. I just happen to like to see my menu bar at the bottom of the screen. Personal preference.

The saved game files from using VisualBoy Advance work in mGBA, that tells me that there are some fundamental bits that they are sharing and I do appreciate that greatly. For those that are prone to hop around and try different emulator projects, this is good to know and gives me a standard by which to further evaluate other, similar applications.

What I Don’t Like

There was only one thing that I didn’t particularly care for in my usage of mGBA. Not a major issue or deal breaker in using mGBA, but I was not able to turn off the Super Game Boy boarder for “Pokémon Red.” I could have probably done some digging but it wasn’t self evident.

With the pallet utility, there doesn’t seem to be the fun pallet switching feature that is available in Visualboy Advance. You can adjust the Pallet but not with the same drop-down menu choosing ease for switching. Truthfully, this is not an issue for me, that was a “nice to have” with Visualboy Advance and the novelty wore off quickly. I am just making a note of this feature not existing.

Final Thoughts

There are continued advancements in emulation of these nostalgic gaming systems from my youth. I really hope that they will continue to be developed, improved and refined as time goes marches forward. The preservation of video game history is just as important as any other cultural preservation of our past. It is an art, a historical technical achievement and there is some charm to be had by exploring the vastness of games with such limited computational resources available at the time. There is something to be said for the creative ingenuity that game designers had to have to make the games visually appealing and enjoyable to play. My hats off in respect and gratitude for not only the original programmers and engineers but those that are working to preserve the bits of our cultural heritage in digital form.

References

https://daid.github.io/GBEmulatorShootout/
https://gbdev.io/
http://mgba.io/
https://software.opensuse.org/package/mgba
https://www.flathub.org/apps/details/io.mgba.mGBA
https://snapcraft.io/mgba
VisualBoy Advance | Gameboy Emulation on Linux
https://popey.com/
https://cialu.net/play-game-boy-games-on-linux-with-retro-console-emulation/

9 thoughts on “mGBA | Game Boy Emulation on Linux

  1. Nicely done as usual Nathan. Having just done this to try it out I can say that your style and thoroughness left no stone right side up in the process. I did not hit a snag and there were no moments of trust in the process. Also did not come away with the feeling of ‘ok so what can I do with this?’

    1. I am glad this was useful to you. There is much more to be discovered with mGBA but I have to leave something to the individual explorer, right? Thank you for the positive feedback!

  2. Maybe it’s just me, but I absolutely cannot use my Logitech 310 controller on Linux. I have tried both Wine and downloading a Snap version. Neither one works in this regard. VisualBoy Advance won’t recognize .gba files as valid.

    1. That seems odd. Did you check to be sure that the system was recognizing the controller? What distribution are you running?

Leave a Reply