Visual Boy Advance - M logo

Visual Boy Advance - M VisualBoyAdvance-M

Use this command to install Visual Boy Advance - M:
winget install --id=VisualBoyAdvance-M.VisualBoyAdvance-M -e

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.

README

Our bridged Discord server is Here.

We are also on #vba-m on Libera IRC which has a Web Chat.

Get it from flathub Get it from the Snap Store

Want to know where you can install visualboyadvance-m in your linux distribution?

Packaging status

Visual Boy Advance - M

Game Boy and Game Boy Advance Emulator

The forums are here.

Windows and Mac builds are in the releases tab.

Nightly builds for Windows and macOS are at https://nightly.visualboyadvance-m.org/.

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

.

Visual Studio Code Support

Make sure the C/C++ and CMake Tools extensions are installed.

Add the following to your settings.json:

{
    "cmake.configureOnOpen": true,
    "cmake.preferredGenerators": [ "Ninja" ]
}

.

Dependencies

If your OS is not supported, you will need the following:

And the following development libraries:

  • zlib (required)
  • mesa (if using X11 or any OpenGL otherwise)
  • ffmpeg (optional, at least version 4.0.4, for game recording)
  • gettext and gettext-tools
  • SDL2 (required)
  • openal-soft (optional, a sound interface)
  • 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:

cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_LINK=NO -G Ninja

. Here is the complete list:

CMake OptionWhat it DoesDefaults
ENABLE_SDLBuild the SDL portOFF
ENABLE_WXBuild the wxWidgets portON
ENABLE_DEBUGGEREnable the debuggerON
ENABLE_ASM_COREEnable x86 ASM CPU cores (BUGGY AND DANGEROUS)OFF
ENABLE_ASMEnable the following two ASM optionsON for 32 bit builds
ENABLE_ASM_SCALERSEnable x86 ASM graphic filtersON for 32 bit builds
ENABLE_MMXEnable MMXON for 32 bit builds
ENABLE_LINKEnable GBA linking functionalityAUTO
ENABLE_LIRCEnable LIRC supportOFF
ENABLE_FFMPEGEnable ffmpeg A/V recordingAUTO
ENABLE_ONLINEUPDATESEnable online update checksON
ENABLE_LTOCompile with Link Time Optimization (gcc and clang only)ON for release build
ENABLE_GBA_LOGGINGEnable extended GBA loggingON
ENABLE_OPENALEnable openal-soft sound output for wxWidgetsON, not 32 bit Win
ENABLE_XAUDIO2Enable xaudio2 sound output for wxWidgets (Windows only)ON
ENABLE_FAUDIOEnable faudio sound output for wxWidgets,ON, not 32 bit Win
ENABLE_ASANEnable libasan sanitizers (by default address, only in debug mode)OFF
UPSTREAM_RELEASEDo some release tasks, like codesigning, making zip and gpg sigs.OFF
BUILD_TESTINGBuild the tests and enable ctest support.ON
VBAM_STATICTry link all libs statically (the following are set to ON if ON)OFF
SDL2_STATICTry to link static SDL2 librariesOFF
FFMPEG_STATICTry to link static ffmpeg librariesOFF
OPENAL_STATICTry to link static OpenAL librariesOFF
TRANSLATIONS_ONLYBuild only the translations.zip and nothing elseOFF

Note for distro packagers, we use the CMake module GNUInstallDirs to configure installation directories.

On Unix to use a different version of wxWidgets, set wxWidgets_CONFIG_EXECUTABLE to the path to the wx-config script you want to use.

Reporting Crash Bugs

If the emulator crashes and you wish to report the bug, a backtrace made with debug symbols would be immensely helpful.

To generate one (on Linux and MSYS2) first build in debug mode by invoking cmake as:

cmake .. -DCMAKE_BUILD_TYPE=Debug

After you've reproduced the crash, you need the core dump file, you may need to do something such as:

ulimit -c unlimited

, in your shell to enable core files.

This post explains how to retrieve core dump on some distributions, when they are managed by systemd.

Once you have the core file, open it with gdb, for example:

gdb -c core ./visualboyadvance-m

. In the gdb shell, to start the process and print the backtrace, type:

run
bt

. This may be a bit of a hassle, but it helps us out immensely.

Contributing

See the Developer Manual.

Versions
2.1.11
2.1.5
Website
License