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.