VisualBoyAdvance is an emulator for the Game Boy Advance and Game Boy Color video game systems. VBA is available for Linux, Windows, Mac OS X, and BeOS, and is released as free software under the GNU GPL. Like many other cross-platform emulators, it uses the SDL library for input, video, and sound support, except on Windows where it uses DirectX. It is based on the VisualBoy Game Boy/Game Boy Color emulator and includes its support for pre-GBA games. The original VisualBoy has been accordingly abandoned.
VisualBoyAdvance accurately emulates the GBA's ARM7TDMI CPU with the associated display and sound hardware. It also emulates the GBA's BIOS thus obviating the need for a difficult to acquire and possibly illegal BIOS image. Compatibility is the focus of VBA and it has succeeded to the point where it is the emulator of choice for hobbyist GBA development. The Super Game Boy is also emulated, as is the Game Boy Printer. The emulation will run at full speed on a Duron 800; this is a significantly higher requirement than for most other 2D consoles due to the relatively high clockspeed of the GBA's CPU.
A number of graphical filters are available in VisualBoyAdvance, both interpolation filters such as 2xSaI, Super Eagle, and Scale2x, and effect filters that produce such effects as scanlines and motion blur. It supports joysticks and gamepads on all platforms, and a 'fast forward' button that runs the emulation at about 350% of real time on an Athlon XP 2000+. Full save state support is available, making many games considerably simpler to complete than on the original hardware. It supports direct memory manipulation and can accept cheat codes in GameShark or Game Genie format. The SDL version also has a built-in debugger which is why there is an SDL version for Windows as well as the DirectX version. In addition to this support, there is also support for attaching an external gdb instance to the emulated program. Compressed ROM images are supported transparently, using both the zip and gzip formats.
The only real unemulated GBA feature is link cable support. Since this would require synchronising two complete emulated GBA systems, this is both difficult to program and prohibitively resource-intensive. Unlike emulators for full-size consoles, which only have to exchange keystrokes, GBA link support would require simulating a full asynchronous serial link between two emulated systems. Also, from an entirely non-technical perspective, the programmer of VBA believes that adding link cable support would allow people to not buy real GBA hardware and real, legal GBA games, but instead just download the ROM image and play it on VBA. BIOS sound support is also unemulated but this can be worked around by using a BIOS image.
The interface of VBA is considerably different between the Windows DirectX and SDL versions. The DirectX version has a full Windows GUI for the operation of the emulator and manipulation of its configuration. On the other hand, the SDL version depends on a plain-text configuration file and is called from the command line, trading off user-friendliness for flexibility. The configuration file, VisualBoyAdvance.cfg, is well-documented and simple to edit, although the key combination requires some trial-and-error for most gamepads due to the lack of explicit button numbering on the device or in its documentation.
The current version of VisualBoyAdvance is 1.7. The main developer of VBA is Forgotten, and the homepage is found at http://vba.ngemu.com/.
This writeup is copyright 2004 D.G. Roberge and is released under the Creative Commons Attribution-NonCommercial-ShareAlike licence. Details can be found at http://creativecommons.org/licenses/by-nc-sa/2.0/ .