After an extended incubation period mGBA 0.7.0 is now available. This is a major feature release. It features a brand new Nintendo Switch port, vastly improved Game Boy support, dozens of bugfixes and accuracy improvements, and more debugging features. A full list of changes follows after the cut.

Changes from 0.6.3

Features

  • ELF support
  • Game Boy Camera support
  • Qt: Set default Game Boy colors
  • Game Boy Printer support
  • Super Game Boy support
  • Customizable autofire speed
  • Ability to set default Game Boy model
  • Map viewer
  • Automatic cheat loading and saving
  • GameShark and Action Replay button support
  • AGBPrint support
  • Debugger: Conditional breakpoints and watchpoints
  • Ability to select GB/GBC/SGB BIOS on console ports
  • Optional automatic state saving/loading
  • Access to ur0 and uma0 partitions on the Vita
  • Partial support for MBC6, MMM01, TAMA and HuC-1 GB mappers
  • GBA: ARMIPS/A22i-style and ELF symbol table support
  • Initial Switch port

Bugfixes

  • ARM: Fix MSR when T bit is set
  • Core: Fix audio sync breaking when interrupted
  • Core: Fix ordering events when scheduling during events
  • FFmpeg: Fix encoding audio/video queue issues
  • GB: Revamp IRQ handling based on new information
  • GB: Fix IRQ disabling on the same T-cycle as an assert
  • GB Audio: Make audio unsigned with bias (fixes #749)
  • GB Audio: Clock frame events on DIV
  • GB Audio: Fix channel 3 reset value
  • GB Audio: Fix channel 4 initial LFSR
  • GB Audio: Fix channel 1, 2 and 4 reset timing
  • GB I/O: DMA register is R/W
  • GB MBC: Improve multicart detection heuristic (fixes #1177)
  • GB, GBA Savedata: Fix savestate loading overwriting saves on reset
  • GB, GBA Savedata: Fix unmasking savedata crash
  • GB Serialize: Fix audio state loading
  • GB Serialize: Fix game title check
  • GB Serialize: Fix IRQ pending/EI pending confusion
  • GB Timer: Minor accuracy improvements
  • GB Video: Fix dot clock timing being slightly wrong
  • GB Video: Fix loading states while in mode 3
  • GB Video: Fix enabling window when LY > WY (fixes #409)
  • GB Video: Fix SCX timing
  • GB, GBA Video: Don’t call finishFrame twice in thread proxy
  • GBA: Reset WAITCNT properly
  • GBA BIOS: Fix BitUnPack final byte
  • GBA BIOS: Fix BitUnPack narrowing
  • GBA DMA: Fix invalid DMA reads (fixes #142)
  • GBA DMA: Fix temporal sorting of DMAs of different priorities
  • GBA Hardware: Fix RTC overriding light sensor (fixes #1069)
  • GBA Hardware: Fix RTC handshake transition (fixes #1134)
  • GBA Memory: Fix Vast Fame support (taizou) (fixes #1170)
  • GBA Savedata: Fix savedata modified time updating when read-only
  • GBA Serialize: Fix loading channel 3 volume (fixes #1107)
  • GBA Serialize: Fix loading states in Hblank
  • GBA SIO: Fix unconnected SIOCNT for multi mode (fixes #1105)
  • GBA Timer: Fix timers sometimes being late (fixes #1012)
  • GBA Video: Don’t mask out high bits of BLDY (fixes #899)
  • GBA Video: Add delay when enabling BGs (fixes #744, #752)
  • GBA Video: Start timing mid-scanline when skipping BIOS
  • GBA Video: Improve sprite cycle counting (fixes #1126)
  • GBA Video: Make layer disabling work consistently
  • PSP2: Fix more issues causing poor audio
  • Qt: Fix GL display when loading a game from CLI (fixes #843)
  • Qt: Improve FPS timer stability
  • Util: Fix wrapping edge cases in RingFIFO

Miscellaneous

  • 3DS: Remove deprecated CSND interface
  • All: Make FIXEDi_ROM_BUFFER an option instead of 3DS-only
  • Core: Remove broken option for whether rewinding restores save games
  • Feature: Added loading savestates from command line
  • FFmpeg: Support libswresample (fixes #1120, #123)
  • FFmpeg: Support lossless h.264 encoding
  • FFmpeg: Support lossless VP9 encoding
  • GBA Cheats: Allow multiple ROM patches in the same slot
  • GB: Skip BIOS option now works
  • GB: Fix VRAM/palette locking (fixes #1109)
  • GB Audio: Improved audio quality
  • GB, GBA Audio: Increase max audio volume
  • GB MBC: Remove erroneous bank 0 wrapping
  • GB Video: Darken colors in GBA mode
  • GBA: Extend oddly-sized ROMs to full address space (fixes #722)
  • GBA: Implement display start DMAs
  • GBA: Improve multiboot image detection
  • GBA Memory: 64 MiB GBA Video cartridge support
  • GBA Savedata: Remove ability to disable realistic timing
  • GBA Timer: Use global cycles for timers
  • Libretro: Add frameskip option
  • mGUI: Add fast forward toggle
  • PSP2: Use system enter key by default
  • Python: Integrate tests from cinema test suite
  • Qt: Redo GameController into multiple classes
  • Qt: Prevent window from being created off-screen
  • Qt: Add option to disable FPS display
  • Qt: Options to mess around with layer placement
  • Qt: Add load alternate save option
  • Qt: Allow pausing game at load (fixes #1129)
  • Qt: Clean up FPS target UI (fixes #436)
  • Test: Restructure test suite into multiple executables
  • Util: Don’t build crc32 if the function already exists
  • Wii: Move audio handling to callbacks (fixes #803)

Changes from 0.7 beta 1

Features

  • Libretro: Add Game Boy cheat support
  • Qt: Separate fast forward volume control (fixes #846, #1143)
  • Switch: Rumble support
  • Switch: Rotation support
  • Switch: Screen stretching options
  • Qt: State file load/save menu options
  • Windows installer
  • Tile viewer now has adjustable width
  • Python: Experimental audio API

Bugfixes

  • 3DS: Fix unused screens not clearing (fixes #1184)
  • Core: Remember to deinit proxy ring FIFO
  • Core: Reroot timing list when (de)scheduling
  • GB, GBA: Fix broken opposing button filter (fixes #1191)
  • GB MBC: Fix MBC30 SRAM
  • GB, GBA Savedata: Fix leaks when loading masked save (fixes #1197)
  • GB Video: Fix SGB border hole size
  • GB Video: Changing LYC while LCDC off doesn’t affect STAT (fixes #1224)
  • GBA: Fix GB Player features
  • GBA I/O: SOUNDCNT_HI is readable when sound is off
  • GBA Savedata: Fix EEPROM writing codepath when savetype is not EEPROM
  • GBA Video: Fix caching with background toggling (fixes #1118)
  • Libretro: Fix adding codes with hooks
  • PSP2: Fix audio crackling after fast forward
  • PSP2: Fix audio crackling when buffer is full
  • Qt: Fix jumbled background when paused
  • Qt: Fix FPS counter on Windows
  • Qt: Fix focus issues with load/save state overlay
  • Switch: Fix incorrect mapping for fast forward cap
  • Wii: Fix drawing caching regression (fixes #1185)
  • PSP2: Fix tearing issues (fixes #1211)
  • Qt: Fix mapping analog triggers (fixes #495)
  • Qt: Grab focus when game starts (fixes #804)
  • Qt: Ensure FATAL logs reach log view
  • SDL: Fix handling of invalid gamepads (fixes #1239)

Miscellaneous

  • CMake: Fix libswresample version dependencies (fixes #1229)
  • Debugger: Minor text fixes
  • Debugger: Readability improvements (fixes #1238)
  • GB: Improved SGB2 support
  • GB Audio: Skip frame if enabled when clock is high
  • Libretro: Reduce rumble callbacks
  • mGUI: Add SGB border configuration option
  • mGUI: Add support for different settings types
  • Python: Minor API improvements
  • Qt: Ensure camera image is valid
  • Qt: Debugger console history

Downloads

Get it now in the Downloads section. Binaries are available for Windows, Ubuntu, macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.

If you enjoy using mGBA and wish to give back, there is a list of ways to donate on the donations page, including an mGBA Patreon.