After a long dry spell, a new release of mGBA, version 0.5.0, is available. This is a major feature release, and includes, among other features, Game Boy and Game Boy Color support. There are other enhancements and bugfixes across the board, and an extensive list follows after the cut.

Furthermore, if you enjoy using mGBA and wish to give back, there is now a list of ways to donate on the donations page, including the newly launched mGBA Patreon.

Features:

  • Game Boy support
  • Support for encrypted CodeBreaker GBA cheats
  • Emulation of Vast Fame protected GBA carts (taizou)
  • Tile viewer
  • Threaded rendering mode
  • Libretro: Memory map and achievement support (leiradel)
  • GUI: Add UI control remapping
  • GUI: Add fast-forward
  • Wii: 240p support
  • 3DS: Adjustable screen darkening
  • Ability to temporarily load a savegame
  • Load specific files out of archives
  • Automatic BIOS detection

Bugfixes:

  • ARM7: Fix decoding of Thumb ADD (variants 5 and 6)
  • Debugger: Fix GDB breakpoints
  • GBA: Fix losing IRQs when CPSR I bit isn’t cleared
  • GBA: Fix filehandle leak with savegames
  • GBA: Timer 0 cannot be count up
  • GBA: Count up timers should not count themselves
  • GBA Memory: Fix mirror on non-overdumped Classic NES games
  • GBA Memory: Fix ldm {pc}
  • GBA Savedata: Fix savedata sync timer
  • GBA Savedata: Only unmap savedata if present
  • GBA Serialize: Savestates now properly store prefetch
  • GBA Video: WIN0/1 take priority over OBJWIN
  • GBA Video: Fix out-of-order OBJWIN
  • PSP2: Fix GPU crash while exiting
  • PSP2: Fix VSync
  • PSP2: Fix accelerometer range
  • PSP2: Actually load screen mode setting
  • PSP2: Fix gyroscope direction
  • PSP2: Delete threads after they return
  • PSP2: Fix mapping/unmapping from not at 0
  • Qt: Fix bug in software renderer scaling
  • Qt: Fix hanging key press after disabling autofire
  • Qt: Fix being unable to pause manually when using auto-pausing
  • SDL: Fix axes being mapped wrong
  • Util: Fix realloc semantics in utf16to8
  • Util: Fix inserting too many items into a hash table
  • VFS: Fix uninitialized varaible reading from 7z
  • VFS: Fix reading multiple files from a 7z archive
  • Wii: Fix framelimiting after a slowdown
  • Wii: Fix garbage flash at startup

Misc:

  • 3DS: Use blip_add_delta_fast for a small speed improvement
  • 3DS: Allow UTF-16 filenames
  • 3DS: Port to using citro3D
  • 3DS: Use system font for menus
  • 3DS: Attempt to use Core 2 for threads
  • 3DS: Adjustable filering
  • 3DS: 3D banner
  • All: Add QUIET parameter to silence CMake
  • All: Faster memory read/write
  • ARM7: Support forcing Thumb mode via MSR
  • ARM7: Flush prefetch cache when loading CPSR via MSR
  • ARM7: Clean up instruction decoding for future expandability
  • Debugger: Support register and memory writes via GDB stub
  • Debugger: Add software breakpoint support to gdb
  • FFmpeg: Full support for libavcodec 56+
  • GBA: Better debug logging if event processing breaks
  • GBA Audio: Force audio DMAs to not increment destination
  • GBA BIOS: Use custom ArcTan, not relying on OS
  • GBA Hardware: Clean up dead code in GBP
  • GBA Memory: Optimize stalling behavior
  • GBA Memory: Optimize Load-/StoreMultiple
  • GBA Savedata: Add realistic timing for EEPROM
  • GBA Serialize: Savestates now store if CPU was halted
  • GBA Video: Remove old slow path fallback
  • GBA Video: Optimize sprite drawing
  • GBA Video: Optimize mode 0 rendering
  • GBA Video: Optimize compositing cases slightly
  • GUI: Screenshot dimensions are now passed through
  • GUI: Add back logging
  • GUI: Only reload config if manually saved
  • GUI: Increase scrolling speed
  • OpenGL: Log shader compilation failure
  • OpenGL: Add texSize uniform
  • Qt: Make -g flag work in Qt build
  • Qt: Simplify OpenGL context creation
  • Qt: Thread startup improvements
  • Qt: Make audio channel/video layer options shortcut mappable
  • Qt: Remove some C99isms from C++ code
  • Qt: Remove default autofire mappings
  • Qt: Make reseting when pasued frame-accurate
  • Qt: Rearchitect game closing codepath
  • PSP2: Use system font for menus
  • PSP2: Add rumble for PS TV
  • PSP2: Add fit-to-height screen mode
  • PSP2: Sync files per descriptor
  • PSP2: Allow UTF-8 filenames
  • PSP2: Screenshots are now saved into the Photo Gallery
  • PSP2: Stop underclocking when menuing
  • SDL: Increase default audio buffer size to 1024 samples
  • SDL: More responsive rumble
  • Util: Add Vector GetConstPointer
  • Util: Add rtrim
  • Util: Add endswith
  • VFS: Improve zip file detection
  • Wii: Add pixelated resample filter
  • Windows: Add native VDir support
  • Util: Add PRIz macro for libc versions that don’t support %z

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