Community-maintained, improved version of the VisualBoyAdvance Game Boy emulator
Visual Boy Advance - M is a community-maintained emulator designed to provide enhanced emulation of Game Boy (DMG) and Game Boy Advance (AGB) cartridges. Built as an improved version of the original VisualBoyAdvance, this software focuses on delivering accurate and reliable performance for retro gaming enthusiasts.
Key Features:
Cross-platform support for Windows, Linux, macOS, and ARM-based systems.
Dual SDL and wxWidgets ports for versatile interface options.
Enhanced emulation accuracy with debugging tools for developers.
OpenGL-based rendering for improved visual fidelity.
Full compatibility with save states, cheat codes, and game linking functionality.
Audience & Benefit:
Ideal for retro gaming enthusiasts, software developers, and educators to experience and analyze classic Nintendo handheld games. The emulator supports precise emulation of Game Boy and GBA titles, making it a valuable tool for testing and development purposes. It can be installed via winget on compatible systems.
PLEASE TEST THE NIGHTLY OR MASTER WITH A FACTORY RESET BEFORE REPORTING
ISSUES
Your distribution may have packages available as well, search for
visualboyadvance-m or vbam.
It is also generally very easy to build from source, see below.
If you are using the windows binary release and you need localization, unzip
the translations.zip to the same directory as the executable.
If you are having issues, try resetting the config file first, go to Help -> Factory Reset.
System Requirements
Windows XP, Vista, 7, 8.1 or 10/11, Linux distros or macOS.
2Ghz x86 (or x86-64) Intel Core 2 or AMD Athlon processor with SSE, Snapdragon 835
or newer CPU compatible with Arm for Windows.
Just a guideline, lower clock speeds and Celeron processors may be able to run at full
speed on lower settings, and Linux based ARM Operating systems have wider CPU support.
DirectX June 2010 Redist
Full /
Websetup for
Xaudio (Remember to uncheck Bing on the websetup.)
Building
The basic formula to build vba-m is:
cd ~ && mkdir src && cd src
git clone https://github.com/visualboyadvance-m/visualboyadvance-m.git
cd visualboyadvance-m
./installdeps # On Linux or macOS
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja
ninja
./installdeps is supported on MSYS2, Linux (Debian/Ubuntu, Fedora, Arch,
Solus, OpenSUSE, Gentoo and RHEL/CentOS) and Mac OS X (homebrew, MacPorts or
Fink.)
Building a Libretro core
Clone this repo and then,
cd src/libretro
make -j`nproc`
Copy vbam_libretro.so to your RetroArch cores directory.
Visual Studio Support
For visual studio, dependency management is handled automatically with vcpkg,
From the Visual Studio GUI, just clone the repository with git and build with
the cmake configurations provided.
If the GUI does not detect cmake, go to File -> Open -> CMake and open the
CMakeLists.txt.
If you are using 2017, make sure you have all the latest updates, some issues
with cmake projects in the GUI have been fixed.
You can also build from the developer command prompt or powershell with the
environment loaded.
Using your own user-wide installation of vcpkg is supported, just make sure the
environment variable VCPKG_ROOT is set.
To build in the Visual Studio x64 Native Tools Command Prompt, use something
like this:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja
ninja
wxWidgets (required for GUI, 2.8 and non-stl builds are no longer supported)
On Linux and similar, you also need the version of GTK your wxWidgets is linked
to (usually 2 or 3) and the xorg development libraries.
Support for more OSes/distributions for ./installdeps is planned.
Cross compiling for 32 bit on a 64 bit host
./installdeps m32 will set things up to build a 32 bit binary.
This is supported on Fedora, Arch, Solus and MSYS2.
Cross Compiling for Win32
./installdeps takes one optional parameter for cross-compiling target, which
may be win32 which is an alias for mingw-w64-i686 to target 32 bit Windows,
or mingw-w64-x86_64 for 64 bit Windows targets.
The target is implicit on MSYS2 depending on which MINGW shell you started (the
value of $MSYSTEM.)
On Debian/Ubuntu this uses the MXE apt repository and works quite well.
CMake Options
The CMake code tries to guess reasonable defaults for options, but you can
override them, for example: