While it’s been long enough since mGBA 0.6.0 came out that the release of mGBA 0.7.0 has seemed like it may never happen, I’m glad to say we’re finally reaching the end of mGBA 0.6’s time. Due to significant life changes, not the least of which is getting a new job with a long, tiring commute, I’ve not has as much time to do serious feature work. However, there have been plenty of changes, fixes, improvements under the hood. Though mGBA 0.7.0 is almost ready I’d like to see a signficant wave of testing and bugfixes before I deem it stable. As such, mGBA 0.7 beta 1 is now available, and hopefully the release of mGBA 0.7.0 will be out within a week or two.

This time around the biggest areas of change are not new features, but rather significant improvements in existing areas. Please focus on these while testing and report any and all bugs on GitHub or email bugs@mgba.io.

Game Boy audio has been revamped. It may not sound correct in many cases and narrowing down which cases are reliably broken will help fix them.

New Game Boy peripherals are supported, including the Camera, Printer, and Super Game Boy. Additionally, several new mappers have partial support.

Debugging tools are improved, including a map viewer, conditional breakpoints, and symbol loading.

There are now translations for Italian and French that are not well reviewed and partially incomplete.

Switch support is brand new and very young. It’s very likely to be full of bugs.

The following changes were made between 0.6.3 and 0.7 beta 1:

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:

GB Audio: Make audio unsigned with bias (fixes #749)

GB Serialize: Fix audio state loading

GB Video: Fix dot clock timing being slightly wrong

Qt: Fix GL display when loading a game from CLI (fixes #843)

ARM: Fix MSR when T bit is set

GB Serialize: Fix game title check

GB: Revamp IRQ handling based on new information

GBA Video: Don’t mask out high bits of BLDY (fixes #899)

GB Video: Fix loading states while in mode 3

GBA DMA: Fix invalid DMA reads (fixes #142)

GBA Video: Add delay when enabling BGs (fixes #744, #752)

GB Timer: Minor accuracy improvements

GB Audio: Clock frame events on DIV

GBA Timer: Fix timers sometimes being late (fixes #1012)

GBA Hardware: Fix RTC overriding light sensor (fixes #1069)

GBA Savedata: Fix savedata modified time updating when read-only

GB Video: Fix enabling window when LY > WY (fixes #409)

GBA Video: Start timing mid-scanline when skipping BIOS

Core: Fix audio sync breaking when interrupted

Qt: Improve FPS timer stability

GBA Serialize: Fix loading channel 3 volume (fixes #1107)

GBA SIO: Fix unconnected SIOCNT for multi mode (fixes #1105)

GBA BIOS: Fix BitUnPack final byte

GB I/O: DMA register is R/W

GB Video: Fix SCX timing

GBA Video: Improve sprite cycle counting (fixes #1126)

GB, GBA Savedata: Fix savestate loading overwriting saves on reset

GBA Video: Make layer disabling work consistently

GB: Fix IRQ disabling on the same T-cycle as an assert

Core: Fix ordering events when scheduling during events

GBA: Reset WAITCNT properly

GBA Serialize: Fix loading states in Hblank

PSP2: Fix more issues causing poor audio

GBA Memory: Fix Vast Fame support (taizou) (fixes #1170)

GB, GBA Savedata: Fix unmasking savedata crash

GBA DMA: Fix temporal sorting of DMAs of different priorities

FFmpeg: Fix encoding audio/video queue issues

GB Serialize: Fix IRQ pending/EI pending confusion

GB MBC: Improve multicart detection heuristic (fixes #117)

GB Audio: Fix channel 3 reset value

GB Audio: Fix channel 4 initial LFSR

GB, GBA Video: Don’t call finishFrame twice in thread proxy

GB Audio: Fix channel 1, 2 and 4 reset timing

Util: Fix wrapping edge cases in RingFIFO

Misc:

GBA Timer: Use global cycles for timers

GBA: Extend oddly-sized ROMs to full address space (fixes #722)

All: Make FIXED_ROM_BUFFER an option instead of 3DS-only

Qt: Redo GameController into multiple classes

Test: Restructure test suite into multiple executables

Python: Integrate tests from cinema test suite

Util: Don’t build crc32 if the function already exists

GBA: Implement display start DMAs

Qt: Prevent window from being created off-screen

Qt: Add option to disable FPS display

GBA: Improve multiboot image detection

GB MBC: Remove erroneous bank 0 wrapping

GBA Cheats: Allow multiple ROM patches in the same slot

GB: Skip BIOS option now works

Libretro: Add frameskip option

GBA Memory: 64 MiB GBA Video cartridge support

PSP2: Use system enter key by default

3DS: Remove deprecated CSND interface

Qt: Options to mess around with layer placement

GBA Savedata: Remove ability to disable realistic timing

Qt: Add load alternate save option

GB Audio: Improved audio quality

GB, GBA Audio: Increase max audio volume

GB: Fix VRAM/palette locking (fixes #1109)

GB Video: Darken colors in GBA mode

FFmpeg: Support libswresample (fixes #1120, Bug 123)

FFmpeg: Support lossless h.264 encoding

Feature: Added loading savestates from command line

Qt: Allow pausing game at load (fixes #1129)

Wii: Move audio handling to callbacks (fixes #803)

Qt: Clean up FPS target UI (fixes #436)

Core: Remove broken option for whether rewinding restores save games

FFmpeg: Support lossless VP9 encoding

mGUI: Add fast forward toggle

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