Nintendo’s Gameboy Advance continued the legacy of the hugely successful Gameboy range of portable games consoles. In a world where smartphone gaming was limited to simple games like Snake, the GBA was an essential travelling companion for any gamer in the 2000’s. While its small screen was ideal for gaming on the go, it wasn’t long before gamers wondered what the consoles extensive catalogue might look like on the big screen. Nintendo themselves released a Gameboy player for the Gamecube back in 2003. This Nintendo designed hardware is not without its advantages. Rather than using an emulator, Nintendo built the Gameboy player using components very similar to a real Gameboy. This means that when you run a Gameboy game on the Gameboy Player you are getting cycle exact ’emulation’ of the real Gameboy hardware. Picture quality is acceptable, provided you use either a CRT or the Gamecube component cables (which are now extremely rare). The Gameboy player isn’t without its problems either. As previously mentioned, finding Gamecube component cables at sensible prices is now extremely difficult. Furthermore, even with the component cables the Gameboy player is unable to play games without intermittent hiccups in scrolling. This is because the Gameboys internal refresh rate is slightly different from the standard 59.94 broadcast rate. Rather than risk incompatibilities with TV sets or GBA software, Nintendo opted to do a framerate conversion and it is this conversion that causes the stutter.
The Gameboy player isn’t the only way to bring GBA games to the big screen, of course. You could use the recently released Retron 5 console. Or, if you have a PC, you can use the popular emulator RetroArch. RetroArch is a new emulator that has been turning heads in the emulation scene with its excellent, modular design and its support for cutting edge emulation techniques such as pixel shaders. In this tutorial we’ll take a look at configuring RetroArch to emulate the GBA. We’ll install the emulator, configure it and then finally set up a pixel shader that will take the picture quality beyond what is possible with hardware like the GBA player or the Retron 5.
To start using RetroArch you will need a copy of the emulator, some ROM images of whatever games or software you want to run and a PC sufficiently powerful enough to run the program. Gameboy Advance emulation isn’t too taxing on a modern PC, so pretty much any Windows 7 or 8 capable PC should be up to the task. Since finding and using ROM images is a legal grey area at best, we can’t help you with that, so we’ll just assume you have access to ROM images or hardware capable of dumping your own cartridges. Start by downloading the latest version of the program here. Unpack the archive to any folder on your PC and the emulator is installed.
We’re going to be playing with RetroArch’s configuration quite a bit, so for the next step we’ll get ourselves a nice, comfy GUI. By default, RetroArch no longer comes with a Windows GUI front end. The old front end, called “Phoenix” was inexplicably dropped in favour of a system which works from within the emulator and can be configured with a gamepad. While it may make some sense to use such a system when your basic configuration is up and running, it makes for a frustrating time when you are initially configuring the emulator. We’ll grab ourselves a nice Windows GUI rather than try and fiddle around with in-emulator menus or frustrating command line arguments. The GUI we’ll use is called RAEM. Download it here and extract it to your RetroArch folder. RAEM is in development and may be a little rough round the edges but it’s still preferable to RetroArch’s own RGUI which is teeth gnashingly awful for anything other than the most basic configuration changes.
With RetroArch and RAEM installed, start RAEM by double clicking on it. Since this is the first time we’ve run the program, it will need configuring, but this is fairly simple. Below is a screenshot of the RAEM program.
Assuming you extracted all your RetroArch files into the same folder, the initial setup should be easy. First of all, click the first “…” button and point RAEM to your RetroArch executable file. Now, move onto the second button, click it and point it to the “Cores” sub-folder in your RetroArch folder. Once you have done that, the box at the bottom of the window should become available. Now it’s time to add an emulation core.
Cores in RetroArch are the emulation modules. Since we’re looking at the Gameboy Advance in this article, we’ll add a Gameboy Advance core. Click on the “Add New” button near the bottom of the window. The “System Name” box will now become available. Click on this box and then enter “Gameboy Advance”.
We now need to choose a core. Use the drop-down box to select a Gameboy Advance core. This can be a confusing part as there are often different choices for the same machine. For Gameby Advance we have VBA-M, VBA-Next, Meteor and Mednafen. It’s not particularly well documented what the difference is between the cores. VBA-M seems to be accurate and stable, so we’ll go with that.
Now you need to point the program to your ROMs directory. Click the “…” button and navigate to your stash, then click “OK”. Keep all the other settings as the default and then click “Save System”. If you did everything correctly, your RAEM window should look like the one shown below, though obviously the paths will be different depending on where you store your emulator and your ROMs.
Click on “Save & Exit” now to finalise this configuration. RAEM will now open the window shown below, where you can choose the core you configured and a ROM to play with it.
The next step is optional but highly recommended. Check in your RetroArch folder and you should see a Game Boy Advance (VBA-M).cfg file. Make a copy of this file now, as a backup. Until recently, RAEM had a bug where adding or changing a new core will overwrite this file (and any other cores you might have configured) back to the default settings. This bug should be fixed now but still, we recommend you make a backup after any major changes to your configuration.
We now have the basic settings configured, so fire up the emulator and check that it works. Click on “Game Boy Advance (VBA-M)” on the left and then double click on a game on the right. Press the Escape key when you want to exit the emulator back to Windows.
Did everything work okay? That’s great, but the picture quality wasn’t exactly wonderful was it? By default the picture scaling is a little on the soft side. The screenshot below shows a Gameboy Advance game running with the default settings. Click on the picture to see it full size.
Improving picture quality with shaders
What if we could make the image look more like a real Gameboy Advance? Fortunately we can, through a pixel shader plugin. The shader we’ll use in this example is lcd_shader. It’s already included with RetroArch in the shaders\handheld folder. To tell RetroArch to use this shader, we can configure it through RAEM. Right click on “Game Boy Advance (VBA-M)” under “System” and choose “Configure core”. This takes you to the advanced options for the emulation core, as shown below.
Don’t worry, most of these options are fine just left as the default. Scroll right down to the bottom and find “video_shader_enable”. This will be set to false, so double click on this and edit it to read “true” (do not copy the quotation marks). Now, find the entry that reads “video_shader”. This should be empty at the moment, so click on it. We need to point this to the LCD shader. What you need to do is enter the full path to the shader. If you extracted RetroArch into C:\Emulators\RetroArch, the full path of the shader will be “C:\Emulators\Retroarch\shaders\handheld\lcd-shader\lcd-shader.cgp” (again, don’t copy the quotation marks). On our rig, RetroArch is installed to the D drive, so our video_shader configuration looks like the one shown below (click the picture to see a bigger version).
Click on “Save” and then “Save” again. Now, start your Gameboy Advance game again. The picture you get now should much more closely resemble a real Gameboy screen. See the screenshot below for an example. You will need to click on the picture and view it at full size (1080p) to really see the effect properly. If your browser scales it down it will look wrong, do a right click and “Save as” and view it in a picture viewer at actual size.
Personally I think this looks fantastic, but if you don’t like the effect, there are several other shaders you can use. Some gamers prefer a scanline look (though of course real Gameboy Advance games never actually had scanlines). For scanlines, try the shaders in the NTSC sub-folder. Adding scanlines to GBA games may not be authentic but if it pleases you then that’s all that matters. You can even cycle through some shaders as you play by pressing the M and N keys on your keyboard.
Configuring controllers with RAEM is fairly easy too. Click on the “Options” menu and then choose “Emulator Options -> Configure Controls”. The window shown below will then appear.
Since there’s only one player on Gameboy games, leave Player number and Joystick number at 1. If you want to access some extra RetroArch options while the emulator is running, make sure “Configure Extra Emulator Controls” is selected, then click “Start Config”. A command prompt style window will then open and walk you through configuring the buttons on your pad. Note when the window says “B Button (Down)” it doesn’t mean press down on your controller, it means press the face button that is at the bottom of your pad. So for instance on a 360 controller, the button would be “A”.
Once you have configured the controls, you are ready to play. You might want to backup your “Game Boy Advance (VBA-M).cfg” file in your RetroArch folder at this point, just in case.
Emulators like RetroArch and pixel shaders like the lcd-shader are the bleeding edge of emulation technology. As we slowly move towards 4k screens, the potential for even more accurate emulation of older displays increases. Of course, if you think its silly to try and emulate an older display on a newer one there are all sorts of other ways you can process and change the image to give more pleasing results. The age of the modular, highly configurable emulator is truly upon us, just don’t spend more time tweaking than you do playing.