A new release of mGBA, version 0.2.0, is available. Two years to the day since mGBA started development, 0.2.0 marks a major feature release. Some of the more prominent features include the addition of support for local link cable multiplayer, cheat code support, the Solar Sensor (as used in Boktai), configuration options, and much more. An extensive list follows after the cut.

Features:

Support for gamepad axes, e.g. analog sticks or triggers

Add scale presets for up to 6x

Settings window

Bilinear resampling option

Add option to skip BIOS start screen

List of recently opened games

Support for games using the Solar Sensor

Better audio resampling via blip-buf

Game Pak overrides dialog for setting savetype and sensor values

Support for games using the tilt sensor

Remappable shortcuts for keyboard and gamepad

Rewinding of emulation

Implemented BIOS routines SoftReset, RegisterRamReset, Diff8bitUnFilterWram, Diff8bitUnFilterVram, and Diff16bitUnFilter

Support IPv6

Save directory of last loaded file

Support BPS patches

Automatically detect and optimize out idle loops

Configurable game overrides

Support loading 7-Zip files

Drag and drop game loading

Cheat code support

Runtime configurable audio driver

Libretro core for use with RetroArch and other front-ends

Controller profiles for setting different bindings for different controllers

Ability to lock aspect ratio

Local link cable support

Ability to switch which game controller is in use per instance

Ability to prevent opposing directional input

Warning dialog if an unimplemented BIOS feature is called

Debugger: Add CLI “frame”, frame advance command

Debugger: Add CLI functions for writing to memory

Debugger: Add CLI functions for examining memory regions

Debugger: Add CLI function for writing a register

Bugfixes:

ARM7: Extend prefetch by one stage

ARM7: Fix cycle counting for loads

Debugger: Disassembly now lists PSR bitmasks (fixes #191)

GBA: Fix savestate loading of DISPSTAT and WAITCNT registers

GBA: Initialize gba.sync to null

GBA: Fix timer initialization

GBA Audio: Support 16-bit writes to FIFO audio

GBA Audio: Audio buffer sizes are now correct sizes for both sample rates

GBA BIOS: Fix BIOS prefetch after returning from an IRQ

GBA BIOS: Fix BIOS prefetch after reset

GBA BIOS: Prevent CpuSet and CpuFastSet from using BIOS addresses as a source (fixes #184)

GBA BIOS: Fix BIOS decompression routines with invalid source addresses

GBA Memory: Fix alignment of open bus 8- and 16-bit loads

GBA Memory: Fix I cycles that had been moved to ARM7 core

GBA Memory: Fix cycle counting for 32-bit load/stores

GBA RR: Fix fallthrough error when reading tags from a movie

GBA Thread: Fix possible hang when loading an archive

GBA Thread: Fix possible deadlock in video sync

Perf: Fix crash when the GBA thread fails to start

Qt: Fix crash starting a GDB stub if a game isn’t loaded

Qt: Fix crash when adjusting settings after closing a game

Qt: Fix crash when starting GDB stub after closing a game

Qt: Fix patch loading while a game is running

Qt: Fix crash when loading a game after stopping GDB server

Qt: Pause game while open file dialogs are open (fixes #6 on GitHub)

Qt: Fix crash when attempting to pause if a game is not running

SDL: Properly clean up if a game doesn’t launch

Util: Fix sockets on Windows

Misc:

All: Enable link-time optimization

Debugger: Watchpoints now work on STM/LDM instructions

Debugger: Clean up GDB stub network interfacing

Debugger: Simplify debugger state machine to play nicer with the GBA thread loop

Debugger: Merge Thumb BL instructions when disassembling

Debugger: Clean up debugger interface, removing obsolete state (fixes #67)

Debugger: Watchpoints now report address watched (fixes #68)

Debugger: Add support for soft breakpoints

Debugger: Make I/O register names be addresses instead of values

Debugger: Rename read/write commands

GBA: Improve accuracy of event timing

GBA: Add API for getting Configuration structs for overrides and input

GBA: Refactor gba-sensors and gba-gpio into gba-hardware

GBA: Refactor gba directory, dropping gba- prefix and making supervisor directory

GBA: Move A/V stream interface into core

GBA: Savestates now take into account savedata state machines (fixes #109)

GBA Audio: Change internal audio sample buffer from 32-bit to 16-bit samples

GBA Memory: Simplify memory API and use fixed bus width

GBA Thread: Make GBASyncWaitFrameStart time out

GBA Video: Start video at the last scanline instead of the first

Qt: Optimize logo drawing

Qt: Move frame upload back onto main thread

Qt: Remember window position

Qt: Double-clicking on the window toggles full screen

Util: Use proper locale for reading and writing float values

Get it now in the Downloads section. Binaries are available for Windows, Ubuntu and OS X, and the source code is available for all other platforms.