mGBA is a new emulator for running Game Boy Advance games. It aims to be faster and more accurate than many existing Game Boy Advance emulators, as well as adding features that other emulators lack.

Features:
- Near full Game Boy Advance hardware support[1].
- Fast emulation. Known to run at full speed even on low end hardware, such as netbooks.
- Qt and SDL ports for a heavy-weight and a light-weight frontend.
- Save type detection, even for flash memory size[2].
- Real-time clock support, even without configuration.
- A built-in BIOS implementation, and ability to load external BIOS files.
- Turbo/fast-forward support by holding Tab.
- Frameskip, configurable up to 9.
- Screenshot support.
- 9 savestate slots. Savestates are also viewable as screenshots.
- Video and GIF recording.
- Remappable controls for both keyboards and gamepads.
- Loading from ZIP files.
- IPS and UPS patch support.
- Game debugging via a command-line interface (not available with Qt port) and GDB remote support.

mGBA v0.6.0 Changelog:

Features
– Qt: Italian translation (by theheroGAC)
– Qt: Updated German translation
Bugfixes
– Core: Fix rewinding getting out of sync (fixes #791)
– GB Audio: Fix incorrect channel 4 iteration
– GB Audio: Fix zombie mode bit masking
– GB Serialize: Fix timer serialization
– GB Video: Fix LYC regression
– GBA SIO: Improve SIO Normal dummy driver (fixes #520)
– GBA Timer: Fix count-up timing overflowing timer 3
– PSP2: Use custom localtime_r since newlib version is broken (fixes #560)
– Qt: Fix memory search close button (fixes #769)
– Qt: Fix window icon being stretched
– Qt: Fix initial window size (fixes #766)
– Qt: Fix data directory path
– Qt: Fix controls not saving on non-SDL builds
– Qt: Fix translation initialization (fixes #776)
– Qt: Fix patch loading while a game is running
– Qt: Fix shader selector on Ubuntu (fixes #767)
– Qt: Fix GL-less build
– Qt: Fix Software renderer not handling alpha bits properly
– Qt: Fix screen background improperly stretching
– SDL: Fix cheats not loading

Miscellaneous
– GB Serialize: Add MBC state serialization
– GBA Memory: Call crash callbacks regardless of if hard crash is enabled
– GBA Timer: Improve accuracy of timers
– PSP2: Update toolchain to use vita.cmake
– Qt: Add language selector
– Qt: Minor text fixes
– Qt: Move shader settings into main settings window
– Qt: Dismiss game crashing/failing dialogs when a new game loads
– Qt: Properly ship Qt translations
– SDL: Remove writing back obtained samples (fixes #768)

For: Windows, Linux, and macOS

https://mgba.io